Aller au contenu principal

OpenAI SDK avec base_url xAI

Utiliser le SDK OpenAI pour acceder a Grok

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

Cette approche est ideale 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 meme que pour tout projet utilisant le SDK OpenAI :

pip install openai

La seule difference est la creation du client, ou vous specifiez l’URL de base et la cle API xAI :

from openai import OpenAI

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

Les deux parametres essentiels sont :

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

Appel identique a OpenAI

Une fois le client configure, l’utilisation est strictement identique a 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-reasoning",
    messages=[
        {"role": "system", "content": "Tu es un assistant technique."},
        {"role": "user", "content": "Quelle est la difference entre TCP et UDP ?"}
    ],
    temperature=0.7,
    max_tokens=1000
)

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

La seule difference visible est le nom du modele : grok-4.20-reasoning au lieu de gpt-4o par exemple.

Streaming avec le SDK OpenAI

Le streaming fonctionne exactement de la meme maniere :

stream = client.chat.completions.create(
    model="grok-4.20-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 meme maniere :

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-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 propriete est baseURL (avec un U majuscule) en JavaScript, alors qu’elle est base_url en Python.

Basculer entre fournisseurs

L’interet 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-reasoning"
    },
    "openai": {
        "api_key": os.getenv("OPENAI_API_KEY"),
        "base_url": "https://api.openai.com/v1",
        "model": "gpt-4o"
    }
}

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 flexibilite.

Points cles a retenir

  • Le SDK OpenAI fonctionne avec xAI en changeant simplement base_url vers https://api.x.ai/v1
  • L’API est 100% compatible : memes methodes, memes parametres, meme format de reponse
  • Seuls la cle API et le nom du modele 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