Function Calling
Pourquoi le function calling est essentiel
Un LLM seul ne peut que generer du texte. Il ne peut pas consulter une base de donnees, envoyer un email, obtenir la meteo actuelle ou executer du code. Le function calling comble cette lacune en donnant au modele la capacite d’invoquer des outils externes de maniere controllable et structuree.
Avant le function calling, les developpeurs utilisaient des prompts heuristiques (« si tu as besoin de chercher, ecris SEARCH: … ») et parsaient les reponses avec des regex fragiles. Le function calling formalise cette interaction : le modele produit un appel de fonction structure, le systeme l’execute et retourne le resultat au modele. C’est plus fiable, plus maintenable et plus secure.
Comment ca fonctionne
Les 4 etapes du function calling
Etape 1 : Le developpeur definit les fonctions disponibles dans la requete API. Chaque fonction a un nom, une description et un schema JSON des parametres attendus. Etape 2 : Le LLM recoit le message utilisateur et les definitions de fonctions. S’il determine qu’une fonction est utile, il genere un appel de fonction (nom + parametres JSON) au lieu d’une reponse textuelle. Etape 3 : L’application execute la fonction cote serveur et renvoie le resultat au LLM. Etape 4 : Le LLM integre le resultat dans sa reponse finale a l’utilisateur.
Le modele ne peut pas executer les fonctions lui-meme. Il genere une intention d’appel structuree ; c’est l’application qui execute et retourne le resultat. Cette separation est cruciale pour la securite : le developpeur controle quelles fonctions sont executees et peut ajouter des validations.
Definition des fonctions
Les fonctions sont definies via un schema JSON qui specifie le nom, la description (utilisee par le LLM pour decider quand appeler), les parametres (type, description, valeurs possibles, champs obligatoires). Plus la description est precise, plus le LLM utilisera la fonction de maniere pertinente. C’est une forme de prompt engineering appliquee aux outils.
Appels paralleles
Les LLM modernes supportent les appels de fonctions paralleles : le modele peut generer plusieurs appels de fonctions simultanement dans une seule reponse. Par exemple, pour « Quel temps fait-il a Paris et a Tokyo ? », le modele genere deux appels a la fonction meteo en parallele. L’application execute les deux, renvoie les resultats, et le modele synthetise la reponse.
Implementations par fournisseur
| Fournisseur | Nom de la fonctionnalite | Format | Appels paralleles |
|---|---|---|---|
| OpenAI | Function calling / Tools | JSON Schema | Oui |
| Anthropic | Tool use | JSON Schema | Oui |
| Function calling | Protocol Buffers / JSON | Oui | |
| Mistral | Function calling | JSON Schema | Oui |
| Open source | Tool calling | Variable | Selon le modele |
OpenAI
OpenAI a popularise le function calling avec GPT-3.5 et GPT-4 (juin 2023). L’API utilise le parametre « tools » avec un tableau de definitions de fonctions. Le modele repond avec un « tool_calls » contenant le nom de la fonction et les arguments JSON. OpenAI supporte aussi le mode « strict » qui garantit que les arguments respectent exactement le schema JSON (pas de champs supplementaires, types corrects). Les modeles GPT-4o et o3 ont une fiabilite de function calling parmi les meilleures du marche.
Anthropic (Claude)
Anthropic utilise le terme tool use plutot que function calling. L’API Claude definit les outils dans un parametre « tools » avec un schema JSON identique. Claude repond avec des blocs « tool_use » contenant l’identifiant, le nom et les parametres. Claude 3.5 Sonnet et Claude 4 offrent une excellente fiabilite d’appel d’outils avec un suivi precis des schemas.
Modeles open source
Les modeles open source (Llama 3, Mistral, Qwen) supportent le function calling via des formats de chat specifiques. La qualite est generalement inferieure aux modeles proprietaires mais s’ameliore rapidement. Hermes, NousResearch et d’autres proposent des modeles fine-tunes specialement pour le tool calling. Les benchmarks comme BFCL (Berkeley Function Calling Leaderboard) evaluent ces capacites.
Cas d’usage
La recherche d’information en temps reel est le cas d’usage le plus courant : le LLM appelle une API de recherche web, une base de donnees ou un service meteo pour obtenir des donnees actuelles. Le RAG peut etre implemente via function calling : le modele appelle une fonction de recherche semantique dans la base vectorielle.
L’execution d’actions est le second grand cas : envoyer un email, creer un evenement calendrier, passer une commande, modifier un fichier. Le function calling structure ces actions de maniere controllable.
L’extraction structuree de donnees utilise le function calling comme mecanisme de formatage : au lieu de demander au modele de produire du JSON dans sa reponse (fragile), on definit une « fonction » dont les parametres correspondent au schema de donnees souhaite. Le modele « appelle » cette fonction et produit les donnees au format exact.
Les agents IA reposent massivement sur le function calling. Chaque outil de l’agent (recherche, code, fichiers) est defini comme une fonction. La boucle agentique (observe, raisonne, agit) utilise le function calling pour la phase d’action.
Bonnes pratiques
Ecrivez des descriptions de fonctions claires et precises. Le LLM utilise ces descriptions pour decider quand appeler quelle fonction. Une description vague produit des appels inappropries. Incluez des exemples dans les descriptions pour les cas ambigus.
Utilisez des noms de parametres explicites (get_weather avec « city » et « unit ») plutot que generiques (« param1 », « param2 »). Le modele interprete les noms pour determiner quoi passer.
Validez toujours les parametres generes par le LLM cote serveur avant d’executer la fonction. Le modele peut halluciner des valeurs invalides, passer des types incorrects ou omettre des champs obligatoires. La validation est une couche de safety indispensable.
Limitez le nombre de fonctions exposees. Au-dela de 20 fonctions, la precision du modele dans le choix de la bonne fonction diminue. Regroupez les fonctions par contexte et n’exposez que celles pertinentes pour la tache en cours.
Function calling vs tool use
Les termes « function calling » (OpenAI, Google) et « tool use » (Anthropic) designent le meme concept. La difference est terminologique, pas technique. Anthropic prefere « tool use » car il couvre aussi les outils system (computer use, text editor) qui vont au-dela des fonctions classiques. En pratique, les APIs et les schemas sont tres similaires entre les fournisseurs.
Relation avec le MCP
Le MCP (Model Context Protocol) d’Anthropic standardise la maniere dont les outils sont exposes aux LLM. Au lieu de definir les fonctions manuellement dans chaque requete API, le MCP permet a des serveurs d’outils de publier leurs fonctions dans un format standardise. Le LLM se connecte au serveur MCP, decouvre les outils disponibles et les utilise via function calling. Le MCP est une couche d’abstraction au-dessus du function calling.
Tendances 2026
Le structured output (sortie structuree garantie) converge avec le function calling. OpenAI, Anthropic et Google offrent des modes qui garantissent le respect exact du schema JSON. Le function calling multimodal permet aux modeles d’utiliser des outils base sur des entrees visuelles (analyser une image puis appeler une API). Le computer use etend le function calling a des actions sur des interfaces graphiques. Et le MCP devient le standard de decouverte et d’invocation d’outils.
FAQ – Function Calling
Le LLM execute-t-il les fonctions lui-meme ?
Non. Le LLM genere une intention d’appel structuree (nom de la fonction + parametres JSON). C’est votre application qui execute la fonction cote serveur et retourne le resultat au LLM. Le modele ne fait que decider quand et comment appeler, pas executer. Cette separation est essentielle pour la securite et le controle.
Quelle est la difference entre function calling et plugins ?
Les plugins (comme ceux de ChatGPT) sont des applications pre-configurees qui exposent des fonctions au LLM. Le function calling est le mecanisme technique sous-jacent. Les plugins sont une couche d’abstraction utilisateur, le function calling est la couche developpeur. Avec l’API, vous definissez vos propres « plugins » via function calling.
Combien de fonctions un LLM peut-il gerer ?
Les meilleurs modeles (GPT-4o, Claude 3.5 Sonnet) gerent efficacement 10 a 20 fonctions. Au-dela, la precision de selection diminue. Pour les systemes avec des centaines d’outils, utilisez une etape de pre-selection (RAG sur les descriptions de fonctions) pour ne presenter au modele que les 5 a 10 fonctions pertinentes pour la requete en cours.
Le function calling est-il fiable ?
Avec les meilleurs modeles et des descriptions bien ecrites, la fiabilite est elevee (90-98% d’appels corrects). Les erreurs courantes : mauvais choix de fonction (quand les descriptions se chevauchent), parametres invalides (types incorrects, valeurs hallucinantees) et oubli d’appel (le modele repond directement au lieu d’utiliser l’outil). La validation serveur et le mode strict reduisent ces erreurs.
Peut-on utiliser le function calling avec des modeles open source ?
Oui. Llama 3, Mistral, Qwen et d’autres modeles open source supportent le tool calling. La qualite est generalement inferieure aux modeles proprietaires mais suffisante pour de nombreux cas d’usage. Les modeles fine-tunes pour le tool calling (Hermes, NousResearch) offrent de meilleures performances. Le BFCL (Berkeley Function Calling Leaderboard) classe les modeles par fiabilite.