Function Calling
Le function calling (aussi appelé tool use) est la fonctionnalité qui permet à un LLM d'analyser une requête utilisateur et d'invoquer des fonctions ou des API externes dans un format JSON structuré. OpenAI a introduit une prise en charge officielle en juin 2023 ; depuis, Claude, Gemini et Llama l'intègrent tous comme fonctionnalité standard, et c'est devenu l'unité atomique des implémentations d'agent IA.
Le function calling (aussi appelé tool use) est la fonctionnalité qui permet à un LLM d'analyser une requête utilisateur et d'invoquer des fonctions ou des API externes dans un format JSON structuré. OpenAI a introduit une prise en charge officielle en juin 2023 ; depuis, Claude, Gemini et Llama l'intègrent tous comme fonctionnalité standard, et c'est devenu l'unité atomique des implémentations d'agent IA.
Pourquoi c'est important
Les LLM sont fondamentalement des générateurs de texte. Sans function calling, demander « quel temps fait-il à Séoul en ce moment ? » ne peut faire ressortir que les connaissances acquises lors de l'entraînement. Avec le function calling, le modèle émet get_weather(location: "Seoul") au format JSON, l'application hôte exécute l'API réelle, et le résultat revient dans le modèle pour la réponse finale. Ce mécanisme simple est le fondement des agents IA, de l'AI search et de tout l'écosystème MCP.
Comment ça fonctionne
- Définitions des outils : l'application transmet au LLM une liste des fonctions disponibles, nom, description, schéma des paramètres.
- Requête utilisateur : l'utilisateur saisit une question en langage naturel.
- Décision d'appel : le LLM décide quelle fonction invoquer et génère les arguments en JSON.
- Exécution réelle : l'application hôte analyse le JSON et exécute la vraie fonction. Le modèle lui-même n'exécute pas de code.
- Injection des résultats : la sortie de la fonction est réinjectée dans le contexte du LLM.
- Réponse finale : le LLM produit une réponse en langage naturel fondée sur les résultats.
Exemple
Définition de l'outil :
{
"name": "search_blog_posts",
"description": "Search blog posts by keyword",
"parameters": {
"type": "object",
"properties": {
"keyword": { "type": "string", "description": "search keyword" },
"limit": { "type": "integer", "default": 5 }
},
"required": ["keyword"]
}
}
Utilisateur : « Trouve-moi 3 articles sur le GEO »
Réponse du modèle :
{
"tool_call": "search_blog_posts",
"arguments": { "keyword": "GEO", "limit": 3 }
}
Après que l'application a exécuté l'outil : [{title: "...", url: "..."}, ...]
Réponse finale : « J'ai trouvé 3 articles sur le GEO... »
Function Calling vs MCP vs ReAct
| Aspect | Function Calling | MCP | ReAct |
|---|---|---|---|
| Niveau | Protocole d'appel d'API | Protocole standardisé de connexion d'outils | Modèle de prompting |
| Rôle | Le modèle émet du JSON pour invoquer un outil | Partager des outils entre différents hôtes/serveurs | Boucle de raisonnement étape par étape + action |
| Relation | Fondement du MCP | Standardise le function calling entre les applications | Utilise le function calling dans une boucle |
Le function calling est une invocation d'outil unique ; le MCP est la façon dont de nombreuses applications partagent le même outil ; ReAct est un modèle pour enchaîner les appels avec du raisonnement.
Limites et pièges
Risque d'hallucination : le modèle peut inventer des fonctions inexistantes ou générer de mauvais arguments. Une validation stricte du schéma est obligatoire.
Appels parallèles : les modèles de pointe (GPT-4o, Claude Opus 4.6) peuvent invoquer plusieurs fonctions en parallèle. Cela implique une gestion des dépendances.
Coût : chaque appel étend le contexte et augmente la dépense en tokens. Restreindre l'exposition des outils améliore à la fois les performances et le coût.
Sécurité : combiné à l'injection de prompt, le function calling peut amplifier les dégâts. Exigez une confirmation de l'utilisateur pour les actions risquées comme les paiements ou les suppressions.
Implications pour le GEO
Lorsque l'AI search extrait des informations d'un blog, elle invoque en interne des fonctions comme fetch_web_content, search_knowledge ou cite_source. Les blogs qui exposent un HTML propre et des données structurées améliorent la qualité de ces appels et augmentent la probabilité de citation. Autrement dit, « un blog facile à lire pour les fonctions » est un blog adapté au GEO.
Sources: