Appel de Fonctions (Function Calling) — LLMs et Outils Externes
Point clé : Le function calling est ce qui transforme un LLM d'un générateur de texte en un agent capable d'agir dans le monde réel — lire une base de données, appeler une API, exécuter du code. Sans cette capacité, l'IA reste confinée à sa fenêtre de contexte.
Définition
L'appel de fonctions (function calling) est la capacité d'un modèle de langage à générer, dans sa sortie, un appel structuré à une fonction externe définie par le développeur — avec les paramètres appropriés extraits du contexte de la conversation. Le système d'orchestration exécute la fonction, retourne le résultat au modèle, qui continue son raisonnement avec ce résultat comme contexte additionnel.
Introduit par OpenAI en juin 2023 et maintenant supporté par la quasi-totalité des LLMs principaux (Claude, Gemini, Mistral, Llama), le function calling est la fondation technique de tous les agents IA modernes.
Fonctionnement
- Le développeur définit un schéma de fonctions disponibles (nom, description, paramètres avec types et descriptions).
- Le modèle reçoit une requête utilisateur et le schéma des fonctions disponibles.
- Si le modèle détermine qu'une fonction est nécessaire, il produit un appel structuré JSON :
{"function": "recherche_prospect", "parameters": {"entreprise": "LVMH", "secteur": "luxe"}}. - L'orchestrateur exécute la fonction et retourne le résultat.
- Le modèle intègre le résultat et génère sa réponse finale, ou appelle une autre fonction.
Parallel Function Calling
Les LLMs modernes supportent les appels de fonctions parallèles : le modèle peut demander l'exécution simultanée de plusieurs fonctions indépendantes en un seul tour, réduisant considérablement la latence pour les tâches qui nécessitent de collecter des données depuis plusieurs sources.
Function Calling et MCP
Le Model Context Protocol (MCP) standardise la façon dont les serveurs exposent des outils aux LLMs. Un serveur MCP est essentiellement un registre de fonctions appelables, avec un protocole unifié de découverte et d'appel. Knowlee route tous ses accès aux bases de données et services externes via des serveurs MCP pour maintenir un audit trail complet de chaque appel d'outil.
Exemple Pratique : Agent d'Enrichissement de Données
Un agent d'enrichissement reçoit un nom d'entreprise et appelle en parallèle : recherche_web({"query": "LVMH revenue 2025"}), lookup_linkedin({"company": "LVMH"}), query_crm({"company_domain": "lvmh.fr"}). En un seul tour, il collecte trois sources de données, les synthétise et met à jour la fiche prospect — une tâche qui prendrait 20 minutes à un commercial.
Sécurité et Gouvernance
Les fonctions exposées à un LLM définissent sa surface d'action. Chaque fonction accessible est un vecteur de risque potentiel : une fonction d'écriture en base de données accessible sans contrôle peut permettre des modifications non souhaitées. La gouvernance des outils — quelles fonctions sont exposées à quel agent, avec quelles validations — est une composante critique de la sécurité des systèmes agentiques.
FAQ
Q : Quelle est la différence entre function calling et plugins ? Les plugins (terme initialement utilisé par ChatGPT) sont un niveau d'abstraction au-dessus du function calling : ils encapsulent des ensembles de fonctions dans une interface utilisateur. Techniquement, les deux reposent sur le même mécanisme de génération d'appels structurés.
Q : Les LLMs peuvent-ils appeler n'importe quelle API via function calling ? N'importe quelle API peut être encapsulée dans une fonction et exposée à un LLM. La qualité de la description de la fonction (son schéma) détermine si le modèle l'utilisera correctement.
Q : Comment déboguer les appels de fonctions incorrects ? En journalisant l'historique complet des appels — requête, schéma exposé, appel généré par le modèle, résultat retourné. Cette journalisation est obligatoire en production pour diagnostiquer les comportements inattendus.