Aller au contenu principal

Mélange outils serveur et client

Deux catégories d’outils sur une même plateforme

L’API Grok distingue deux types d’outils fondamentalement différents dans leur exécution. Comprendre cette distinction est essentiel pour concevoir des architectures robustes.

Outils intégrés (côté serveur)

Ces outils sont exécutés automatiquement par xAI sur leurs serveurs. Vous n’avez rien à gérer — pas d’exécution locale, pas de renvoi de résultat. Le modèle les appelle et reçoit les résultats directement.

Outil Identifiant Description
Web Search web_search Recherche sur le web en temps réel
X Search x_search Recherche sur X/Twitter
Code Interpreter code_interpreter Exécution Python sandboxée
Collections Search collections_search Recherche dans vos documents uploadés
Remote MCP mcp Connexion à des serveurs MCP externes

Fonctions personnalisées (côté client)

Ce sont vos propres fonctions, définies via le function calling. Le modèle retourne un tool_call, votre code exécute la fonction, et vous renvoyez le résultat. C’est le mécanisme que vous avez appris dans les leçons précédentes.

Combiner les deux dans une même requête

La puissance de l’API Grok réside dans la possibilité de mélanger outils serveur et client dans une seule requête :

tools = [
    # Outil serveur — exécuté automatiquement par xAI
    {"type": "web_search"},

    # Outil client — exécuté par votre code
    {
        "type": "function",
        "function": {
            "name": "save_to_database",
            "description": "Sauvegarder une information dans la base de données",
            "parameters": {
                "type": "object",
                "properties": {
                    "key": {"type": "string"},
                    "value": {"type": "string"}
                },
                "required": ["key", "value"]
            }
        }
    }
]

Quand le modèle reçoit cette requête, il peut :

  1. Utiliser web_search pour trouver une information (exécution automatique côté serveur)
  2. Appeler save_to_database pour sauvegarder le résultat (retour au client)

Le flux hybride

Le comportement diffère selon le type d’outil :

  • Outil serveur : le modèle appelle l’outil, xAI l’exécute, le résultat est intégré automatiquement, le modèle continue
  • Outil client : le modèle retourne le tool_call au client, l’exécution s’arrête, et reprend quand vous renvoyez le résultat

Quand le modèle utilise les deux types dans la même requête, les outils serveur s’exécutent en premier (sans intervention de votre part). Puis, si le modèle a aussi besoin d’un outil client, il vous retourne le tool_call avec les résultats des outils serveur déjà intégrés dans son contexte.

Cas d’usage concrets

Recherche web + traitement métier

# L'utilisateur demande : "Trouve le cours du Bitcoin et enregistre-le"
# Le modèle :
# 1. Appelle web_search pour trouver le prix (côté serveur, automatique)
# 2. Appelle save_price(symbol="BTC", price=68432) (côté client)

Recherche X + notification

# "Alerte-moi des tweets sur notre produit depuis hier"
# Le modèle :
# 1. Appelle x_search pour trouver les tweets (côté serveur)
# 2. Appelle send_notification(count=12, summary="...") (côté client)

Code Interpreter + stockage

# "Calcule la moyenne de ces données et sauvegarde le résultat"
# Le modèle :
# 1. Appelle code_interpreter pour le calcul (côté serveur)
# 2. Appelle save_result(key="avg", value="42.5") (côté client)

Facturation des outils serveur

Les outils intégrés sont facturés de deux façons :

  • Tokens : consommation standard (entrée + sortie)
  • Invocations : coût fixe par appel d’outil

Le modèle peut appeler plusieurs outils serveur pour une seule requête — les coûts s’additionnent. Gardez cela à l’esprit quand vous activez web_search : le modèle pourrait effectuer plusieurs recherches pour affiner ses résultats.

Points clés à retenir

  • Deux types d’outils : serveur (automatique) et client (function calling)
  • Les outils serveur (web_search, x_search, code_interpreter) s’exécutent sans votre intervention
  • Vous pouvez mélanger les deux types dans une même requête
  • Les outils serveur s’exécutent en premier, puis le modèle peut appeler vos fonctions
  • Chaque invocation d’outil serveur est facturée (tokens + coût par appel)
  • Les citations sont automatiquement générées pour les données issues des outils serveur