Aller au contenu principal

Pas de function calling custom : comprendre la limitation

Une limitation structurelle

Si vous avez l’habitude de definir vos propres fonctions (function calling) avec d’autres modeles, vous devez savoir que le multi-agent de Grok ne supporte pas le function calling custom. C’est une limitation importante qui influence directement la facon dont vous architecturez vos applications.

Ce qui est supporte vs ce qui ne l’est pas

Supporte :

  • web_search — recherche web en temps reel
  • x_search — recherche sur la plateforme X
  • code_execution — execution de code Python
  • collections_search — recherche dans vos collections indexees
  • Remote MCP — outils externes via le protocole MCP

NON supporte :

  • Fonctions custom definies dans votre code
  • Schemas de fonctions personnalises
  • Appels a vos propres API via function calling

Cela signifie que vous ne pouvez pas faire quelque chose comme :

# NE FONCTIONNE PAS avec le multi-agent
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Obtenir la meteo",
            "parameters": {"type": "object", "properties": {"city": {"type": "string"}}}
        }
    }
]

Pourquoi cette limitation existe

L’architecture multi-agent complique le function calling custom. Quand plusieurs agents travaillent en parallele, gerer les appels de fonctions personnalisees cree des problemes de coordination :

  • Quel agent decide d’appeler quelle fonction ?
  • Comment gerer les appels concurrents a la meme fonction ?
  • Comment le leader synthetise les resultats de fonctions appelees par differents sub-agents ?

Les outils integres sont conçus pour fonctionner dans ce contexte multi-agent. Vos fonctions custom, elles, ne le sont pas.

Contournements possibles

1. Remote MCP

Si vous avez besoin d’appeler vos propres API, la meilleure solution est de les exposer via un serveur MCP. Les agents peuvent alors les utiliser comme n’importe quel outil integre.

2. Architecture en deux etapes

Utilisez le multi-agent pour la recherche et l’analyse, puis un modele standard pour les actions :

# Etape 1 : recherche multi-agent
chat = client.chat.create(
    model="grok-4.20-multi-agent",
    agent_count=4,
    tools=[web_search()],
)
chat.append(user("Trouve les meilleurs restaurants italiens a Paris"))
research_result = ""
for response, chunk in chat.stream():
    if chunk.content:
        research_result += chunk.content

# Etape 2 : action avec un modele standard + function calling
# Utiliser grok-4 ou un autre modele qui supporte le function calling

3. Pre-traitement et post-traitement

Effectuez les appels a vos API en amont (pour enrichir le prompt) ou en aval (pour traiter la reponse) :

# Pre-traitement : enrichir le contexte
user_data = my_api.get_user_profile(user_id)
context = f"Profil utilisateur : {user_data}"

# Multi-agent avec le contexte enrichi
chat.append(user(f"{context}\n\nAnalyse les options qui correspondent a ce profil"))

Points cles a retenir

  • Le function calling custom n’est pas supporte avec le multi-agent
  • Seuls les outils integres (web_search, x_search, code_execution, collections_search, Remote MCP) fonctionnent
  • Utilisez Remote MCP pour exposer vos propres API aux agents
  • Adoptez une architecture en deux etapes si vous avez besoin de function calling
  • Cette limitation pourrait evoluer dans les futures versions (API beta)