Aller au contenu principal

Patterns de combinaison d'outils

Mis à jour le 30 juillet 2026

Combiner les outils pour des tâches complexes

Les outils de Grok deviennent véritablement puissants quand vous les combinez. Une recherche web seule fournit des données brutes. Ajoutez l’exécution de code, et vous pouvez analyser ces données. Ajoutez vos fonctions personnalisées, et vous pouvez agir sur les résultats. Cette leçon présente les patterns de combinaison les plus utiles.

Pattern 1 : Recherche + Analyse

Le cas d’usage le plus courant combine la recherche web avec l’exécution de code pour collecter des données et en tirer des conclusions :

response = await client.chat.completions.create(
    model="grok-4.5",
    messages=[{
        "role": "user",
        "content": "Recherche les cours de Tesla, Apple et Microsoft sur les 30 derniers jours. "
                   "Calcule la performance relative et identifie la tendance."
    }],
    tools=[
        {"type": "web_search"},
        {"type": "code_interpreter"}
    ],
    max_turns=5
)

Grok commence par une recherche web pour obtenir les données financières, puis utilise l’exécution de code pour calculer les performances et tracer un graphique. Tout se passe dans une seule requête grâce au max_turns suffisant.

Pattern 2 : Actualités multi-sources

La combinaison de Web Search et X Search offre une couverture complète sur un sujet :

response = await client.chat.completions.create(
    model="grok-4.5",
    messages=[{
        "role": "user",
        "content": "Quelles sont les réactions à l'annonce de la nouvelle réglementation IA en Europe ? "
                   "Compare les sources officielles et les réactions sur X."
    }],
    tools=[
        {"type": "web_search"},
        {"type": "x_search"}
    ],
    max_turns=5
)

La recherche web capture les articles de presse et les communiqués officiels, tandis que la recherche X capture les réactions en temps réel et les opinions.

Pattern 3 : Extraction multi-sources avec fonctions

Pour des workflows plus complexes, combinez les outils serveur avec vos fonctions personnalisées :

tools = [
    {"type": "web_search"},
    {"type": "code_interpreter"},
    {
        "type": "function",
        "function": {
            "name": "save_to_database",
            "description": "Sauvegarde les résultats structures dans la base de données",
            "parameters": {
                "type": "object",
                "properties": {
                    "category": {"type": "string"},
                    "data": {"type": "object"},
                    "source_urls": {"type": "array", "items": {"type": "string"}}
                },
                "required": ["category", "data"]
            }
        }
    }
]

async def research_and_save(topic: str) -> str:
    messages = [{"role": "user", "content": f"Recherche et analyse : {topic}. "
                 "Sauvegarde les résultats structures."}]

    while True:
        response = await client.chat.completions.create(
            model="grok-4.5",
            messages=messages,
            tools=tools,
            max_turns=5
        )

        message = response.choices[0].message

        if not message.tool_calls:
            return message.content

        messages.append(message)
        for tc in message.tool_calls:
            if tc.function.name == "save_to_database":
                result = await save_to_db(json.loads(tc.function.arguments))
                messages.append({
                    "role": "tool",
                    "tool_call_id": tc.id,
                    "content": json.dumps(result)
                })

Dans ce pattern, Grok recherche les informations, les analyse avec du code, puis appelle votre fonction pour sauvegarder les résultats. Le workflow est entièrement autonome.

Pattern 4 : Validation croisée

Utilisez plusieurs sources pour vérifier la fiabilité d’une information :

response = await client.chat.completions.create(
    model="grok-4.5",
    messages=[{
        "role": "user",
        "content": "Vérifie cette affirmation en croisant les sources : "
                   "'La France a produit 70% de son electricite a partir du nucleaire en 2024.' "
                   "Compare les données de plusieurs sources officielles."
    }],
    tools=[
        {"type": "web_search"},
        {"type": "code_interpreter"}
    ],
    max_turns=8
)

Avec un max_turns plus élevé, Grok peut effectuer plusieurs recherches successives pour croiser les informations et utiliser l’exécution de code pour comparer les chiffres.

Bonnes pratiques

Spécifier les outils dans le prompt

Ne vous contentez pas de déclarer les outils dans le paramètre tools. Indiquez explicitement dans votre prompt ce que vous attendez :

# BON : le prompt guide l'utilisation des outils
"""Recherche les données, puis utilise le code pour générer un tableau
comparatif. Sauvegarde le résultat final via save_to_database."""

# MAUVAIS : le prompt ne mentionne pas les outils
"Donne-moi les informations sur ce sujet."

Limiter les outils aux besoins

N’activez pas tous les outils si vous n’en avez besoin que d’un seul. Chaque outil ajoute du contexte dans le prompt système, consommant des tokens et pouvant distraire le modèle.

Points clés à retenir

  • Recherche + Code Execution permet de collecter et analyser des données en une seule requête
  • Web Search + X Search offre une couverture complète (articles + réactions)
  • Les fonctions personnalisées étendent les capacités au-delà de ce que les outils serveur offrent
  • Guidez explicitement Grok dans votre prompt sur les outils à utiliser
  • Adaptez max_turns à la complexité du workflow (5-8 pour les combinaisons multi-outils)
  • N’activez que les outils nécessaires pour optimiser la consommation de tokens