Skip to Content
DocumentationGuidesAppel de fonctions

Appel de fonctions (Function Calling)

L’appel de fonctions permet aux modèles de sélectionner et d’appeler automatiquement des fonctions prédéfinies selon les besoins de l’utilisateur, offrant des capacités telles que les requêtes de données, les appels d’API et l’exécution de tâches.

Concepts de base

Flux complet de l’appel de fonctions :

  1. Définir les outils — Décrire les fonctions disponibles et leurs paramètres dans la requête
  2. Décision du modèle — Le modèle détermine s’il doit appeler un outil
  3. Retour de l’appel — Le modèle renvoie le nom de la fonction et les paramètres
  4. Exécuter la fonction — Vous exécutez la fonction et obtenez le résultat
  5. Continuer la conversation — Renvoyer le résultat au modèle pour générer la réponse finale

Protocole OpenAI

function_calling.py
from openai import OpenAI import json client = OpenAI( base_url="https://api.ofox.ai/v1", api_key="<votre OFOXAI_API_KEY>" ) # 1. Définir les outils tools = [{ "type": "function", "function": { "name": "get_weather", "description": "Obtenir les informations météo en temps réel d'une ville", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "Nom de la ville, ex. : Paris, Lyon" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Unité de température" } }, "required": ["city"] } } }] # 2. Envoyer la requête messages = [{"role": "user", "content": "Quel temps fait-il à Paris aujourd'hui ?"}] response = client.chat.completions.create( model="openai/gpt-4o", messages=messages, tools=tools, tool_choice="auto" ) message = response.choices[0].message # 3. Traiter l'appel d'outil if message.tool_calls: for tool_call in message.tool_calls: args = json.loads(tool_call.function.arguments) # 4. Exécuter votre fonction result = get_weather(args["city"]) # Votre propre implémentation # 5. Renvoyer le résultat au modèle messages.append(message) messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": json.dumps(result) }) # Obtenir la réponse finale final = client.chat.completions.create( model="openai/gpt-4o", messages=messages, tools=tools ) print(final.choices[0].message.content)

Protocole Anthropic

Anthropic utilise le paramètre tools avec un format légèrement différent :

anthropic_tools.py
import anthropic client = anthropic.Anthropic( base_url="https://api.ofox.ai/anthropic", api_key="<votre OFOXAI_API_KEY>" ) response = client.messages.create( model="anthropic/claude-sonnet-4.5", max_tokens=1024, tools=[{ "name": "get_weather", "description": "Obtenir les informations météo en temps réel d'une ville", "input_schema": { "type": "object", "properties": { "city": {"type": "string", "description": "Nom de la ville"} }, "required": ["city"] } }], messages=[{"role": "user", "content": "Quel temps fait-il à Paris aujourd'hui ?"}] ) # Traiter le bloc de contenu tool_use for block in response.content: if block.type == "tool_use": print(f"Appel d'outil : {block.name}, paramètres : {block.input}")

Appels de fonctions en parallèle

Le modèle peut renvoyer plusieurs appels d’outils dans une seule réponse ; vous devriez les exécuter en parallèle :

# Le modèle peut demander plusieurs appels d'outils simultanément if message.tool_calls: # Exécuter tous les appels d'outils en parallèle import asyncio async def execute_tools(tool_calls): tasks = [] for tc in tool_calls: args = json.loads(tc.function.arguments) tasks.append(execute_function(tc.function.name, args)) return await asyncio.gather(*tasks)

Paramètre tool_choice

ValeurDescription
"auto"Le modèle décide automatiquement s’il doit appeler des outils (par défaut)
"none"Interdire les appels d’outils
"required"Forcer l’appel d’outils
{"type": "function", "function": {"name": "xxx"}}Forcer l’appel d’un outil spécifique

Modèles compatibles

Les modèles suivants supportent le Function Calling :

  • OpenAI : gpt-4o, gpt-4o-mini, o1, o3-mini
  • Anthropic : claude-opus-4, claude-sonnet-4, claude-3-5-haiku
  • Google : gemini-3.1-pro-preview, gemini-3-flash-preview, gemini-3-pro-preview
  • Autres : deepseek-chat, qwen-max, glm-4
Last updated on