Aller au contenu principal

OpenAI SDK avec base_url xAI

Mis à jour le 30 juillet 2026

Utiliser le SDK OpenAI pour accéder à Grok

L’un des grands avantages de l’endpoint Chat Completions de xAI est sa compatibilité totale avec le SDK OpenAI. Vous pouvez utiliser le package openai que vous connaissez déjà, en changeant simplement le base_url pour pointer vers les serveurs xAI.

Cette approche est idéale si vous migrez une application existante depuis OpenAI vers Grok, ou si vous souhaitez pouvoir basculer entre fournisseurs avec un minimum de modifications.

Configuration

L’installation est la même que pour tout projet utilisant le SDK OpenAI :

pip install openai

La seule différence est la création du client, où vous spécifiez l’URL de base et la clé API xAI :

from openai import OpenAI

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

Les deux paramètres essentiels sont :

  • api_key : votre clé API xAI (pas une clé OpenAI)
  • base_url : https://api.x.ai/v1 — c’est ce qui redirige les requêtes vers xAI au lieu d’OpenAI

Appel identique à OpenAI

Une fois le client configuré, l’utilisation est strictement identique à celle du SDK OpenAI standard :

import os
from openai import OpenAI

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

response = client.chat.completions.create(
    model="grok-4.20-0309-reasoning",
    messages=[
        {"role": "system", "content": "Tu es un assistant technique."},
        {"role": "user", "content": "Quelle est la différence entre TCP et UDP ?"}
    ],
    temperature=0.7,
    max_tokens=1000
)

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

La seule différence visible est le nom du modèle : grok-4.20-0309-reasoning au lieu de gpt-5.6 par exemple.

Streaming avec le SDK OpenAI

Le streaming fonctionne exactement de la même manière :

stream = client.chat.completions.create(
    model="grok-4.20-0309-reasoning",
    messages=[
        {"role": "user", "content": "Explique le concept de microservices."}
    ],
    stream=True
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)

JavaScript / TypeScript

Le SDK OpenAI pour Node.js fonctionne de la même manière :

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.XAI_API_KEY,
  baseURL: "https://api.x.ai/v1",
});

const response = await client.chat.completions.create({
  model: "grok-4.20-0309-reasoning",
  messages: [
    { role: "system", content: "Tu es un assistant utile." },
    { role: "user", content: "Bonjour, comment ca va ?" },
  ],
});

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

Notez que la propriété est baseURL (avec un U majuscule) en JavaScript, alors qu’elle est base_url en Python.

Basculer entre fournisseurs

L’intérêt principal de cette approche est de pouvoir changer de fournisseur avec une seule variable :

import os
from openai import OpenAI

provider = os.getenv("LLM_PROVIDER", "xai")

configs = {
    "xai": {
        "api_key": os.getenv("XAI_API_KEY"),
        "base_url": "https://api.x.ai/v1",
        "model": "grok-4.20-0309-reasoning"
    },
    "openai": {
        "api_key": os.getenv("OPENAI_API_KEY"),
        "base_url": "https://api.openai.com/v1",
        "model": "gpt-5.6"
    }
}

config = configs[provider]
client = OpenAI(api_key=config["api_key"], base_url=config["base_url"])

Cette architecture multi-fournisseurs est courante dans les applications de production qui souhaitent garder de la flexibilité.

Points clés à retenir

  • Le SDK OpenAI fonctionne avec xAI en changeant simplement base_url vers https://api.x.ai/v1
  • L’API est 100% compatible : mêmes méthodes, mêmes paramètres, même format de réponse
  • Seuls la clé API et le nom du modèle changent
  • Cette approche facilite la migration depuis OpenAI et permet de basculer entre fournisseurs
  • Le streaming, le typage et les outils du SDK OpenAI fonctionnent sans modification