Aller au contenu principal

Compatibilité avec l'OpenAI SDK

Mis à jour le 29 juillet 2026

Utiliser le multi-agent via l’OpenAI SDK

Beaucoup d’équipes ont déjà bâti leur couche d’appel autour de l’OpenAI SDK, avec ses wrappers, ses tests et ses conventions de journalisation. Bonne nouvelle : accéder au multi-agent de Grok ne vous oblige pas à tout réécrire. xAI expose une API compatible avec le format Responses d’OpenAI, ce qui permet de conserver le client OpenAI en le faisant simplement pointer vers l’API xAI.

Configuration du client

Deux paramètres suffisent — l’URL de base de xAI et votre clé API xAI :

from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("XAI_API_KEY"),
    base_url="https://api.x.ai/v1",
)

À partir de là, vous utilisez la Responses API normalement, en indiquant grok-4.20-multi-agent-0309 comme modèle. Le reste de votre code d’appel reste inchangé.

Contrôle du nombre d’agents via reasoning.effort

C’est ici que la traduction entre les deux mondes se joue. Là où le xAI SDK expose un agent_count explicite, l’OpenAI SDK n’offre que reasoning.effort — vous ne demandez donc pas un nombre d’agents, vous demandez un niveau d’effort que xAI convertit en nombre d’agents.

# 4 agents (effort low)
response = client.responses.create(
    model="grok-4.20-multi-agent-0309",
    reasoning={"effort": "low"},
    input=[{"role": "user", "content": "Quels sont les derniers modeles open source de 2026 ?"}],
)
print(response.output_text)
# 16 agents (effort high)
response = client.responses.create(
    model="grok-4.20-multi-agent-0309",
    reasoning={"effort": "high"},
    input=[{"role": "user", "content": "Compare les strategies IA de l'UE et des USA en 2026"}],
)
print(response.output_text)

Le mapping effort → agents

Le champ accepte quatre valeurs, mais elles ne débouchent que sur deux équipes : "low" et "medium" mobilisent 4 agents, "high" et "xhigh" en mobilisent 16.

Ce détail mérite une lecture attentive. Passer de low à medium, ou de high à xhigh, ne change pas le nombre d’agents : ces niveaux intermédiaires peuvent influencer d’autres aspects du comportement du modèle, mais au sein de chaque paire l’équipe reste identique. Imaginez une interface où vous proposeriez à l’utilisateur quatre niveaux de profondeur de recherche — il en percevrait deux, et vos deux boutons supplémentaires ne feraient que brouiller son choix.

Chat Completions NON supporté

Voici la contrainte qui fait échouer la première tentative de la plupart des développeurs : l’API Chat Completions n’est pas supportée pour le multi-agent. Vous devez impérativement passer par la Responses API, donc client.responses.create et non client.chat.completions.create.

# NE FONCTIONNE PAS
response = client.chat.completions.create(
    model="grok-4.20-multi-agent-0309",
    messages=[{"role": "user", "content": "..."}],
)

Tenter cet appel renvoie une erreur. Si votre code existant repose entièrement sur Chat Completions — ce qui est le cas de beaucoup de bases installées —, l’adaptation n’est pas un simple changement de nom de modèle : il faut migrer l’appel vers un autre format d’entrée et de sortie. Mesurez cet effort avant de promettre l’intégration.

Streaming avec l’OpenAI SDK

Le streaming reste disponible, toujours via la Responses API :

stream = client.responses.create(
    model="grok-4.20-multi-agent-0309",
    reasoning={"effort": "low"},
    input=[{"role": "user", "content": "Resume les annonces tech de cette semaine"}],
    stream=True,
)

for event in stream:
    if hasattr(event, 'delta') and event.delta:
        print(event.delta, end="", flush=True)

Le test hasattr(event, 'delta') mérite d’être conservé tel quel : le flux d’événements de la Responses API ne contient pas que du texte, et lire aveuglément event.delta sur chaque événement produirait une exception.

Avantages et limites de cette approche

Le principal intérêt de cette voie est économique en temps : vous n’installez aucun SDK supplémentaire, vos développeurs retrouvent une syntaxe familière, et basculer entre modèles xAI et OpenAI dans une même base de code devient trivial. Pour une équipe qui veut évaluer le multi-agent sans engager de chantier, c’est le chemin le plus court.

Les limites tiennent toutes à la même cause : vous passez par une couche de compatibilité, donc vous perdez ce qui est propre à xAI. Ni agent_count, remplacé par un contrôle indirect via reasoning.effort, ni verbose_streaming, ni use_encrypted_content ne vous sont accessibles. Ajoutez que le mapping effort → agents relève d’une API en beta et pourrait évoluer : si votre produit dépend précisément du nombre d’agents mobilisés, le SDK natif reste le choix prudent.

Points clés à retenir

  • L’OpenAI SDK fonctionne avec le multi-agent via base_url="https://api.x.ai/v1"
  • Le nombre d’agents se contrôle via reasoning.effort (low/medium = 4, high/xhigh = 16)
  • Chat Completions n’est PAS supporté — utilisez la Responses API uniquement
  • Certains paramètres exclusifs du xAI SDK (agent_count, verbose_streaming) ne sont pas accessibles