MiniMax H3 (Hailuo 3) est disponible sur EvoLinkEssayer avec 10 crédits gratuits
Parcours d'intégration de Qwen3.8 Max via une passerelle unifiée vers les protocoles et outils de production
Tutoriel

Utiliser Qwen3.8 Max : Python, TypeScript et cURL

Jacey
Jacey
Founder
3 août 2026
9 min de lecture
Réponse rapide : la route de production EvoLink utilise qwen3.8-max pour Chat Completions, Responses et Messages. L’URL de documentation conserve le slug Preview historique ; utilisez l’ID de production et exécutez un smoke test dans votre compte avant le trafic.
La page modèle Qwen3.8 Max reste la référence EvoLink pour la disponibilité de la route, l'ID final et les tarifs en direct ; ce guide conserve uniquement l'intention d'intégration et d'exemples de code.
SurfaceIDStatut
QwenCloudqwen3.8-maxFlagship upstream officiel
Token Planqwen3.8-max-previewCanal Preview
EvoLinkqwen3.8-maxRoute de production disponible ; l’URL de documentation conserve le slug Preview

Préparer la première requête

PrérequisPréparationPourquoi
Clé EvoLinkCréer dans le tableau des API KeysAuthentification Bearer
Base URLhttps://direct.evolink.ai/v1 pour le texteSépare SDK et endpoint
URL multimodalehttps://api.evolink.ai/v1 pour image, audio ou vidéoEndpoint multimodal documenté
Variable modèleID exact affiché par EvoLinkPassage Preview–GA sans modifier le code
Smoke testUne requête courte et déterministeVérifie auth, route, réponse et facturation
FallbackUn modèle EvoLink déjà validéMaintient le service lors d'un changement
export EVOLINK_API_KEY="your-evolink-api-key"
export EVOLINK_BASE_URL="https://direct.evolink.ai/v1"
export EVOLINK_QWEN_MODEL="qwen3.8-max-preview"

Arbre de décision du protocole

Chat pour une application OpenAI existante, Responses pour un nouvel agent avec outils ou état, Messages pour une stack Anthropic.

Existing OpenAI-compatible chat application?
├─ Yes → Chat Completions
└─ No
   ├─ New agent needs built-in tools or server-linked turns? → Responses
   └─ Existing Anthropic Messages stack? → Messages

Remplacez la dernière valeur par l'ID exact d'EvoLink. Ne supposez pas qu'il sera identique à l'ID upstream.

Choisir Chat, Responses ou Messages

ProtocoleEndpointPoint de départDifférence
Chat Completions/v1/chat/completionsChats existants compatibles OpenAImessages ; thinking dans reasoning_content
Responses/v1/responsesAgents, outils et tours liésinput, previous_response_id, cache de session
Messages/v1/messagesSDK Anthropicsystem au niveau supérieur, max_tokens requis

Choisissez Chat pour une application OpenAI existante, Responses pour les outils ou l'état serveur, Messages pour les blocs et événements Anthropic.

Premier appel cURL

curl --request POST \
  --url "${EVOLINK_BASE_URL}/chat/completions" \
  --header "Authorization: Bearer ${EVOLINK_API_KEY}" \
  --header "Content-Type: application/json" \
  --data "{
    \"model\": \"${EVOLINK_QWEN_MODEL}\",
    \"messages\": [
      {
        \"role\": \"system\",
        \"content\": \"You are a concise software architecture assistant.\"
      },
      {
        \"role\": \"user\",
        \"content\": \"Return three checks for a safe API rollout.\"
      }
    ]
  }"
Une réponse valide contient id, le model résolu, au moins un élément choices et l'usage. Conservez le modèle retourné comme preuve de résolution de l'alias.

Python avec le SDK OpenAI

pip install openai
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["EVOLINK_API_KEY"],
    base_url=os.getenv("EVOLINK_BASE_URL", "https://direct.evolink.ai/v1"),
)

response = client.chat.completions.create(
    model=os.environ["EVOLINK_QWEN_MODEL"],
    messages=[
        {
            "role": "system",
            "content": "You are a concise software architecture assistant.",
        },
        {
            "role": "user",
            "content": "Return three checks for a safe API rollout.",
        },
    ],
)

print(response.choices[0].message.content)
print(response.model)

Clé, Base URL et ID forment la frontière d'intégration. Modifiez d'abord la configuration, puis comparez sortie et comportement avant de changer prompts ou logique métier.

TypeScript

npm install openai
import OpenAI from "openai";

const apiKey = process.env.EVOLINK_API_KEY;
const model = process.env.EVOLINK_QWEN_MODEL;

if (!apiKey || !model) {
  throw new Error("EVOLINK_API_KEY and EVOLINK_QWEN_MODEL are required");
}

const client = new OpenAI({
  apiKey,
  baseURL: process.env.EVOLINK_BASE_URL ?? "https://direct.evolink.ai/v1",
});

const response = await client.chat.completions.create({
  model,
  messages: [
    {
      role: "system",
      content: "You are a concise software architecture assistant.",
    },
    {
      role: "user",
      content: "Return three checks for a safe API rollout.",
    },
  ],
});

console.log(response.choices[0].message.content);
console.log(response.model);

Séparer Thinking et contenu final en streaming

Tous les chunks ne contiennent pas de texte final. Stockez reasoning_content et content séparément.
import os
from openai import OpenAI

model = os.environ.get("EVOLINK_QWEN_MODEL")
if not model:
    raise RuntimeError("EVOLINK_QWEN_MODEL is required")

client = OpenAI(
    api_key=os.environ["EVOLINK_API_KEY"],
    base_url=os.getenv("EVOLINK_BASE_URL", "https://direct.evolink.ai/v1"),
)

stream = client.chat.completions.create(
    model=model,
    messages=[
        {"role": "user", "content": "Review this rollout plan for failure modes."}
    ],
    stream=True,
    extra_body={"enable_thinking": True},
)

for chunk in stream:
    delta = chunk.choices[0].delta
    reasoning = getattr(delta, "reasoning_content", None)
    if reasoning:
        print(reasoning, end="", flush=True)
    if delta.content:
        print(delta.content, end="", flush=True)
Validez EVOLINK_QWEN_MODEL au démarrage. Un fallback silencieux empêche d'auditer rollout et rollback.

Responses pour outils et état multi-tour

Responses emploie input. EvoLink documente aussi previous_response_id et le header x-dashscope-session-cache: enable.
curl --request POST \
  --url "${EVOLINK_BASE_URL}/responses" \
  --header "Authorization: Bearer ${EVOLINK_API_KEY}" \
  --header "Content-Type: application/json" \
  --header "x-dashscope-session-cache: enable" \
  --data "{
    \"model\": \"${EVOLINK_QWEN_MODEL}\",
    \"input\": \"List the production checks for a model-route canary.\"
  }"

Responses : tour suivant et Session Cache

Utilisez le vrai ID du premier appel comme previous_response_id. Le header ne prouve pas un hit ; inspectez usage.
curl --request POST \
  --url "${EVOLINK_BASE_URL}/responses" \
  --header "Authorization: Bearer ${EVOLINK_API_KEY}" \
  --header "Content-Type: application/json" \
  --header "x-dashscope-session-cache: enable" \
  --data "{
    \"model\": \"${EVOLINK_QWEN_MODEL}\",
    \"previous_response_id\": \"resp_FROM_FIRST_CALL\",
    \"input\": \"Turn those checks into a five-step canary plan.\"
  }"
Ne stockez l'id que si confidentialité et rétention autorisent les conversations liées côté serveur. La documentation actuelle indique sept jours ; revalidez ce contrat pour un workflow durable.

Messages pour les stacks Anthropic

Messages place l'instruction système hors de messages et exige max_tokens.
curl --request POST \
  --url "${EVOLINK_BASE_URL}/messages" \
  --header "Authorization: Bearer ${EVOLINK_API_KEY}" \
  --header "Content-Type: application/json" \
  --data "{
    \"model\": \"${EVOLINK_QWEN_MODEL}\",
    \"max_tokens\": 1024,
    \"system\": \"You are a concise software architecture assistant.\",
    \"messages\": [
      {
        \"role\": \"user\",
        \"content\": \"Return three checks for a safe API rollout.\"
      }
    ]
  }"

Validation des tools, retries bornés et fallback

Les arguments sont non fiables : validez nom, schéma, autorisation et environnement avant tout effet.

import { z } from "zod";

const createCanarySchema = z.object({
  workload: z.string().min(1).max(80),
  trafficPercent: z.number().min(0.1).max(10),
});

function validateToolCall(name: string, rawArguments: string) {
  if (name !== "create_canary") {
    throw new Error(`Blocked unknown tool: ${name}`);
  }

  return createCanarySchema.parse(JSON.parse(rawArguments));
}

Réessayez seulement timeout, connexion, 429 et 5xx transitoires avec une limite ; pas de 400/401/402 inchangé.

import os
import random
import time
from openai import APIConnectionError, APIStatusError, APITimeoutError, OpenAI

client = OpenAI(
    api_key=os.environ["EVOLINK_API_KEY"],
    base_url=os.getenv("EVOLINK_BASE_URL", "https://direct.evolink.ai/v1"),
)

def complete_with_fallback(messages):
    models = [
        os.environ["EVOLINK_QWEN_MODEL"],
        os.environ["EVOLINK_FALLBACK_MODEL"],
    ]

    for model in models:
        for attempt in range(3):
            try:
                return client.chat.completions.create(
                    model=model,
                    messages=messages,
                    timeout=60,
                )
            except APIStatusError as error:
                if error.status_code != 429 and error.status_code < 500:
                    raise
            except (APIConnectionError, APITimeoutError):
                pass

            time.sleep((2 ** attempt) + random.random())

    raise RuntimeError("Primary and fallback routes failed")

Registre de validation en production

CapacitéStatutPreuve à enregistrer
Chat / Responses / MessagesDisponible ; validerID, modèle, HTTP, stop et usage
Streaming / ThinkingDisponible ; validerPremier événement, final, raisonnement et contenu
Tools / Cache / MultimodalValider sur l’endpoint cibleArguments, suite, usage cache et formats
Conservez system, les content blocks, le cache et les événements Anthropic ; ne convertissez pas Chat mécaniquement.
Application routant Chat, Responses et Messages via une passerelle unifiée avec streaming, outils, retry, fallback et monitoring
Application routant Chat, Responses et Messages via une passerelle unifiée avec streaming, outils, retry, fallback et monitoring

Activer les fonctions progressivement

FonctionChatResponsesMessagesContrôle
Thinkingenable_thinking; reasoning_contentreasoning.effortblocs thinkingQualité, latence, tokens
Streamingstream: true; SSEévénements Responsesévénements AnthropicCoupures et sortie partielle
Outilsfonctions dans toolsoutils intégrés et customblocs toolValider les arguments
Cachecache_controlheader de sessionblocs cache_controlInspecter l'usage
Multimodalhttps://api.evolink.ai/v1URL multimodaleblocs imageTester format et taille

Ne copiez ni prix ni remises de cache QwenCloud : il s'agit d'un autre canal commercial. Utilisez le prix en direct de la page produit EvoLink.

Dépannage

SymptômeCause probableAction
400Format ou champ incorrectRevenir à l'exemple minimal
401Token absent ou invalideVérifier clé et header
402Crédits insuffisantsVérifier le solde
404Route, ID ou endpointCopier l'ID exact et vérifier le chemin
429Rate limitBackoff exponentiel avec jitter
5xxErreur transitoireRetry limité puis fallback
Texte vide avec thinkingMauvais champ luLire reasoning et contenu final

Ne répétez pas 400, 401 ou 402 sans corriger la cause. Limitez les retries 429 et 5xx pour éviter qu'une boucle d'agent multiplie coût et charge.

Checklist de production

  1. Copier l'ID exact dans EVOLINK_QWEN_MODEL.
  2. Exécuter un appel texte court sans streaming et enregistrer modèle et usage.
  3. Tester séparément streaming, outils, thinking, cache et multimodal.
  4. Rejouer 20–50 tâches représentatives face à la baseline.
  5. Mesurer succès, latence acceptée, retries, tokens et correction humaine.
  6. Commencer en shadow traffic puis petit canary.
  7. Garder un fallback validé derrière la même passerelle.
  8. Revenir en arrière si erreur, latence, coût ou qualité franchissent leurs seuils.
Votre prochaine décision

Vérifier la route avant le premier appel en production

Ne vous inscrivez pas sur la seule foi d’une annonce. Validez d’abord ces points, puis créez une clé API si la route correspond à votre charge.

  1. 01

    Publié ?

    Oui. Qwen3.8 Max est le modèle de production ; Preview reste un contexte de canal historique.

  2. 02

    Disponible ?

    Oui sur EvoLink. Vérifiez la route active et l’ID du modèle sur la page produit.

  3. 03

    Adapté à mon cas ?

    Pour le raisonnement long contexte, les grands dépôts et les agents à outils ; gardez les tâches simples sur une route plus légère.

  4. 04

    Quel prix ?

    Consultez le module de prix en direct de la page produit, sans reprendre un prix upstream ou Preview.

  5. 05

    Comment l’appeler ?

    Choisissez Chat Completions, Responses ou Messages, puis suivez le guide et la référence des paramètres.

Les cinq points sont validés ? Créer une clé API.

Questions fréquentes

Oui. Utilisez qwen3.8-max, vérifiez sa présence dans votre compte et exigez un smoke test réussi avant la production.

Quel ID utiliser ?

L'ID exact d'EvoLink. L'upstream utilise qwen3.8-max et la documentation EvoLink actuelle qwen3.8-max-preview ; gardez-le configurable.

Quelle Base URL utiliser ?

https://direct.evolink.ai/v1 pour texte et connexions longues ; https://api.evolink.ai/v1 pour image, audio ou vidéo.

Chat ou Responses ?

Chat pour une application OpenAI existante ; Responses pour tours liés, outils intégrés et événements Responses.

Puis-je utiliser Anthropic ?

Oui, via /v1/messages, en préservant system, max_tokens, blocs et événements Anthropic.

Ce guide contient-il les prix ?

Non. Le prix appartient à la page modèle afin d'éviter doublons périmés et cannibalisation.

Comment gérer les rate limits ?

Limitez la concurrence, appliquez un backoff avec jitter aux 429, bornez les retries et conservez un fallback.

Que tester avant la production ?

Auth, modèle, parsing, streaming, outils, thinking, cache, multimodal, timeout, retry, facturation, fallback, shadow et canary.

Sources

Prêt à réduire vos coûts IA de 89 % ?

Commencez avec EvoLink dès aujourd'hui et découvrez la puissance du routage intelligent des API.