Schémas d’outils et de fonctions
Schémas pour l’appel de fonctions.
Schémas d’outils et de fonctions est une leçon AI Prompt Engineering gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Prompt Engineering, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Prompt Engineering comprend 4 leçons au total.
Les outils sont des schémas auxquels s'ajoute une intention
Les appels de fonctions permettent à un modèle de demander à votre code d'exécuter une action. Chaque outil est déclaré avec un nom, une description (indiquant quand l'utiliser) et un schéma JSON pour ses paramètres.
Le modèle n'exécute jamais de code ; il émet une demande d'appel structurée que votre environnement d'exécution distribue. Le schéma rend les arguments analysables.
Anatomie d'une définition d'outil
Une définition d'outil est une déclaration de capacité encapsulée dans un schéma.
{
'type': 'function',
'function': {
'name': 'get_weather',
'description': 'Get current weather for a city. Use when the user asks about weather.',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string'},
'units': {'type': 'string', 'enum': ['celsius', 'fahrenheit']}
},
'required': ['city', 'units'],
'additionalProperties': False
}
}
}La description guide la sélection
Lorsque de nombreux outils sont disponibles, le modèle choisit principalement en fonction de la description. Rédigez les descriptions sous forme de règles de décision :
- Indiquez quand l'utiliser et quand ne pas l'utiliser.
- Faites la distinction avec les outils apparentés.
- Mentionnez les préconditions requises.
De mauvaises descriptions entraînent plus souvent la sélection du mauvais outil que de mauvais schémas n'entraînent des erreurs d'arguments.
Le cycle Appel-Exécution-Retour
Les appels de fonctions se déroulent sur plusieurs tours. Le modèle émet un appel, vous l'exécutez, vous appelez append pour ajouter le résultat, puis le modèle poursuit.
resp = client.chat.completions.create(model='gpt-4o', messages=msgs, tools=tools)
call = resp.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)
result = dispatch(call.function.name, args)
msgs.append(resp.choices[0].message)
msgs.append({'role': 'tool', 'tool_call_id': call.id,
'content': json.dumps(result)})
# call the model again to continue with the tool resultAppels d'outils en parallèle
Les modèles modernes peuvent demander plusieurs appels d'outils en un seul tour lorsque les actions sont indépendantes. Votre environnement d'exécution doit parcourir tous les tool_calls, les exécuter (idéalement simultanément) et renvoyer un message d'outil par tool_call_id.
Ne supposez jamais qu'il n'y a qu'un seul appel ; utilisez toujours une boucle.
for call in resp.choices[0].message.tool_calls:
args = json.loads(call.function.arguments)
result = dispatch(call.function.name, args)
msgs.append({'role': 'tool', 'tool_call_id': call.id,
'content': json.dumps(result)})Forcer et limiter l'utilisation des outils
Contrôlez la sélection avec tool_choice :
auto— le modèle décide.required— il doit appeler un outil.{name: ...}— forcez l'utilisation d'un outil précis.none— désactivez les outils pour ce tour.
Forcer un outil précis transforme les appels de fonctions en simple extraction structurée.
client.chat.completions.create(
model='gpt-4o', messages=msgs, tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'get_weather'}}
)Valider les arguments avant l'exécution
Même avec des schémas stricts, considérez les arguments des outils comme des entrées non fiables. Revalidez-les par rapport au schéma et appliquez les règles métier avant d'interagir avec des systèmes réels (bases de données, systèmes de paiement, suppressions de fichiers).
def dispatch(name, args):
schema = TOOLS[name]['function']['parameters']
jsonschema.validate(args, schema) # defense in depth
if name == 'refund' and args['amount'] > MAX_AUTO_REFUND:
return {'error': 'requires human approval'}
return HANDLERS[name](**args)Les erreurs des outils font partie du protocole
Lorsqu'un outil échoue, renvoyez une erreur structurée comme résultat de l'outil plutôt que de lever une exception. Le modèle peut alors présenter ses excuses, réessayer avec des arguments corrigés ou choisir un autre outil.
Rendez les erreurs exploitables : indiquez une raison et, lorsque cela ne présente aucun risque, une piste de récupération.
{'status': 'error',
'code': 'CITY_NOT_FOUND',
'message': 'No city named Xyz. Ask the user to clarify the city.'}Garder une surface d'outils réduite
Des dizaines d'outils dégradent la précision de la sélection et augmentent le coût en jetons (chaque schéma est présent dans le contexte à chaque tour). Mesures possibles :
- Regroupez les actions apparentées derrière un seul outil avec une énumération
action. - Exposez dynamiquement uniquement les outils pertinents pour l'état actuel.
- Utilisez des espaces de noms pour réduire la confusion entre les outils similaires.
Renforcer les schémas pour les effets de bord
Pour les actions destructrices, encodez la sécurité directement dans le schéma : exigez un champ de confirmation explicite, limitez les plages de valeurs et évitez les identifiants en texte libre au profit d’énumérations ou de motifs validés.
{
'name': 'delete_records',
'parameters': {
'type': 'object',
'properties': {
'table': {'type': 'string', 'enum': ['logs', 'temp_cache']},
'confirm': {'type': 'boolean'},
'max_rows': {'type': 'integer', 'minimum': 1, 'maximum': 1000}
},
'required': ['table', 'confirm', 'max_rows'],
'additionalProperties': False
}
}Tester les définitions d’outils
Traitez la sélection d’outils comme un comportement mesurable. Constituez un ensemble d’évaluation associant chaque invite à l’outil et aux arguments attendus, puis vérifiez que le modèle effectue le bon choix. Suivez les régressions lorsque vous reformulez les descriptions ou ajoutez de nouveaux outils.
cases = [
{'prompt': 'Whats it like in Paris?', 'expect_tool': 'get_weather'},
{'prompt': 'Convert 10 USD to EUR', 'expect_tool': 'fx_convert'}
]
for c in cases:
assert run(c['prompt']).tool_name == c['expect_tool']Vérification rapide
Un modèle émet deux appels d’outils indépendants au cours d’un même tour de l’assistant. Que doit faire votre environnement d’exécution ?
Récapitulatif
Les schémas d’outils et de fonctions en pratique :
- Les descriptions orientent la sélection ; les schémas déterminent des arguments analysables.
- Parcourez tous les appels d’outils ; prenez en charge l’exécution en parallèle.
- Contrôlez le comportement avec le choix d’outil ; forcez l’utilisation d’un outil pour l’extraction pure.
- Validez de nouveau les arguments ; renvoyez des erreurs structurées.
- Gardez une surface d’outils réduite et renforcez la sécurité des actions destructrices.
Ensuite : les boucles de correction et de validation lorsque la sortie reste incorrecte.
Apprends AI Prompt Engineering avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 53
- Leçons
- 199
Questions Fréquemment Posées
La leçon « Schémas d’outils et de fonctions » est-elle gratuite ?
Oui — le texte complet de « Schémas d’outils et de fonctions » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Prompt Engineering, passe à CoddyKit PRO. Le cours AI Prompt Engineering comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Schémas d’outils et de fonctions » ?
Schémas pour l’appel de fonctions. Tu pratiques AI Prompt Engineering avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Prompt Engineering ?
Aucune expérience préalable n'est requise. AI Prompt Engineering sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Schémas d’outils et de fonctions » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Prompt Engineering ?
Oui. Chaque leçon AI Prompt Engineering inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi utiliser une sortie structurée
- Schéma JSON dans les prompts
- Schémas d’outils et de fonctions
- Boucles de correction et de validation