ESPACE PUBLICITAIRE DISPONIBLE · PARLONS-EN

Comment configurer les clés d'API, sélectionner les points de terminaison et implémenter le Function Calling avec l'API xAI Grok

365Finds Editorial
11 430 articles Wiki répertoriés

Utilisez 365 Wiki avec votre IA

Copiez le prompt ci-dessous, collez-le dans l’IA que vous utilisez déjà, puis posez directement votre question.

Télécharger le Skill complet

Commencez par essayer le prompt. Si vous utilisez souvent 365 Wiki, installez le Skill 365Wiki complet pour ne plus avoir à le coller. Sans IA habituelle, les versions web de Gemini ou Microsoft Copilot conviennent aussi.

L'intégration des modèles Grok de xAI au sein d'applications logicielles s'opère de manière fluide et rapide grâce à une compatibilité intégrale avec les spécifications de l'écosystème OpenAI et à la disponibilité de SDK dédiés. Configurée sur l'adresse de base https://api.x.ai/v1, l'API Grok permet aux développeurs de mettre en place une authentification standard par jeton Bearer, d'exploiter des modèles de raisonnement avancés tels que grok-4.7 ou des moteurs de code ultra-rapides comme grok-build-0.1, et d'orchestrer des appels de fonctions (Function Calling / Tool Calling) multi-tours pour connecter Grok à des bases de données et des microservices d'entreprise.

Ce guide présente les étapes concrètes pour générer et sécuriser vos clés d'API, choisir le point de terminaison adapté à vos exigences de production et implémenter des appels d'outils robustes.


1. Configuration de l'authentification et des clés d'API

La gestion des accès à l'API Grok est centralisée au sein de la console xAI (https://console.x.ai).

Étape 1 : Créer la clé d'API

  1. Créez un compte ou connectez-vous sur la xAI Console.
  2. Rendez-vous dans la section Billing (Facturation) et approvisionnez votre solde en crédits.
  3. Accédez à la rubrique API Keys (https://console.x.ai/team/default/api-keys) et cliquez sur Create API Key.
  4. Copiez la clé générée immédiatement et conservez-la dans un gestionnaire de secrets sécurisé (la console ne l'affichera plus après fermeture de la fenêtre).

Étape 2 : Définir les variables d'environnement

Exportez votre clé sous la variable d'environnement conventionnelle XAI_API_KEY :

export XAI_API_KEY="xai-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Pour vos projets Node.js ou Python, déclarez-la dans le fichier .env à la racine :

XAI_API_KEY=xai-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Étape 3 : Initialiser le SDK client

Grâce à la conformité aux protocoles REST et aux schémas OpenAI, vous pouvez opter indifféremment pour le package officiel xai-sdk, le client standard openai ou le SDK Vercel AI.

Python (avec la bibliothèque openai) :

import os
from openai import OpenAI

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

Python (avec le SDK natif xai-sdk) :

import os
from xai_sdk import Client

client = Client(api_key=os.getenv("XAI_API_KEY"))

Node.js / TypeScript (avec la bibliothèque openai) :

import OpenAI from "openai";

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

2. Sélection des points de terminaison (endpoints) et des modèles

xAI propose deux interfaces HTTP de génération ainsi qu'un catalogue de modèles dimensionnés pour répondre à divers compromis de coût, latence et profondeur de contexte.

Protocoles d'accès : /v1/responses vs /v1/chat/completions

Comparatif des modèles de langage et de raisonnement

Nom du modèle / AliasFenêtre de contexteCas d'usage recommandéTarification (par million de tokens)
grok-4.7 (grok-4.7-latest)500 000 tokensModèle phare pour la logique agentique complexe, l'audit de code approfondi, l'appel d'outils et l'ajustement de l'effort de réflexion (low, medium, high, xhigh).2,00 $ entrée / 6,00 $ sortie (0,50 $ entrée en cache)
grok-build-0.1 (grok-code-fast-1)256 000 tokensMoteur réactif dédié à l'écriture de code, l'autocomplétion en temps réel, le refactoring et la génération de tests unitaires.1,00 $ entrée / 2,00 $ sortie (0,20 $ entrée en cache)
grok-4.3 (grok-4.3-latest)1 000 000 tokensFenêtre massive de 1 million de tokens à coût maîtrisé pour l'analyse de volumineux dépôts de code et de corpus textuels denses.1,25 $ entrée / 2,50 $ sortie (0,20 $ entrée en cache)
grok-4.20-multi-agent-03091 000 000 tokensOptimisé pour la collaboration entre agents distribués et la prise de décision par consensus.1,25 $ entrée / 2,50 $ sortie (0,20 $ entrée en cache)

Remarque : xAI propose également des API dédiées pour la voix interactive en temps réel (grok-voice-think-fast-2.0 sur la Voice API) ainsi que la génération d'images et de vidéos (grok-imagine-image-2.0 sur l'Imagine API).


3. Implémentation de l'appel de fonctions (Function Calling)

Le Function Calling transforme Grok en un agent opérationnel : plutôt que d'extrapoler des données, le modèle émet des arguments JSON structurés afin d'activer des fonctions déclarées dans votre propre code applicatif.

Déroulement séquentiel d'un appel d'outil

  1. Déclaration des outils : L'application transmet la liste des fonctions disponibles selon le standard JSON Schema (name, description, parameters).
  2. Évaluation par le modèle : Grok examine la requête et décide si la sollicitation d'un outil externe s'avère nécessaire.
  3. Émission de l'appel : Grok interrompt la production de texte et renvoie un objet tool_calls mentionnant le nom de la fonction et les arguments cibles.
  4. Exécution locale : L'application traite la fonction localement ou interroge l'API métier requise.
  5. Restitution des résultats : Les données obtenues sont renvoyées à Grok, qui élabore alors la réponse finale destinée à l'utilisateur.

Exemple complet d'implémentation (Python avec le client OpenAI)

Le code suivant détaille la définition d'un outil de consultation de compte sur le endpoint responses, la réception de la consigne d'appel et l'injection du résultat :

import os
import json
from openai import OpenAI

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

# 2. Définir les outils via JSON Schema
tools = [
    {
        "type": "function",
        "name": "fetch_user_account",
        "description": "Récupère les informations d'un client, son statut et son niveau d'abonnement selon son ID de compte.",
        "parameters": {
            "type": "object",
            "properties": {
                "account_id": {
                    "type": "string",
                    "description": "Identifiant unique du compte, ex: 'usr_10294'"
                },
                "include_usage_stats": {
                    "type": "boolean",
                    "description": "Indique s'il faut inclure le volume de tokens consommés lors du cycle de facturation en cours.",
                    "default": False
                }
            },
            "required": ["account_id"]
        }
    }
]

# Implémentation simulée du service local
def execute_fetch_user_account(account_id: str, include_usage_stats: bool = False):
    return {
        "account_id": account_id,
        "name": "Alex Mercer",
        "tier": "Enterprise",
        "status": "Active",
        "usage_tokens": 1420500 if include_usage_stats else None
    }

# 3. Requête utilisateur initiale
user_query = "Consultez le compte usr_10294 et confirmez s'il bénéficie d'un abonnement Enterprise actif."

response = client.responses.create(
    model="grok-4.7",
    input=[{"role": "user", "content": user_query}],
    tools=tools,
)

# 4. Traitement de la demande d'appel d'outil
for item in response.output:
    if item.type == "function_call":
        func_name = item.name
        func_args = json.loads(item.arguments)
        call_id = item.call_id
        
        print(f"Outil sollicité par le modèle : {func_name} avec les arguments : {func_args}")
        
        if func_name == "fetch_user_account":
            tool_result = execute_fetch_user_account(**func_args)
            
            # 5. Transmission du résultat au modèle pour finaliser le tour
            followup = client.responses.create(
                model="grok-4.7",
                input=[{
                    "type": "function_call_output",
                    "call_id": call_id,
                    "output": json.dumps(tool_result)
                }],
                tools=tools,
                previous_response_id=response.id,
            )
            
            # Affichage de la réponse synthétisée par Grok
            for followup_item in followup.output:
                if followup_item.type == "message":
                    print("\nRéponse finale :\n", followup_item.content[0].text)

4. Règles d'architecture et fonctionnalités avancées

Lors du déploiement en environnement de production, les critères techniques suivants sont déterminants :


Références