Définir des schémas d’outils (JSON Schema)
Rédigez des définitions JSON Schema pour les paramètres des outils, avec leurs types, descriptions, énumérations et champs obligatoires.
Définir des schémas d’outils (JSON Schema) est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 2 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 Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
Les schémas d'outils sont des schémas JSON
OpenAI, Anthropic et la plupart des autres fournisseurs utilisent le schéma JSON pour les paramètres des outils.
Si vous avez déjà utilisé OpenAPI / Swagger, vous en connaissez déjà 90 %.
Les trois champs obligatoires
Chaque définition d'outil contient :
name— identifiant unique (snake_case)description— ce que fait l'outil et quand l'utiliserparameters— schéma JSON des entrées
Un schéma minimal
Un objet avec un champ obligatoire de type chaîne :
schema = {
'name': 'search_orders',
'description': 'Find orders by customer email',
'parameters': {
'type': 'object',
'properties': {
'email': {
'type': 'string',
'description': 'Customer email address'
}
},
'required': ['email']
}
}
import json
print(json.dumps(schema, indent=2))
Types de schémas JSON
string— texteinteger,number— nombresboolean— vrai/fauxarray— liste (nécessite égalementitems)object— dictionnaire (nécessite égalementproperties)
Énumérations pour les ensembles fermés
Utilisez enum lorsqu'il existe exactement N valeurs autorisées :
unit_param = {
'unit': {
'type': 'string',
'enum': ['C', 'F'],
'description': 'Temperature unit'
}
}
# The model will only ever output C or F
print(unit_param)
print("Allowed values:", unit_param['unit']['enum'])
Paramètres de type tableau
Pour les entrées sous forme de liste, définissez items :
tags_param = {
'tags': {
'type': 'array',
'items': {'type': 'string'},
'description': 'List of tags to filter by'
}
}
print(tags_param)
Objets imbriqués
Vous pouvez imbriquer des objets, mais gardez des schémas peu profonds (2 ou 3 niveaux maximum) pour assurer la fiabilité du modèle :
filter_param = {
'filter': {
'type': 'object',
'properties': {
'min_price': {'type': 'number'},
'in_stock': {'type': 'boolean'}
}
}
}
print(filter_param)
Les champs de description sont essentiels
Le modèle choisit les outils et renseigne les arguments en fonction de description. Traitez les descriptions comme la documentation d'une API :
# Bad
bad = {'description': 'gets data'}
# Good
good = {'description': 'Fetch the most recent 50 orders for the given customer email. Returns order_id, status, total. Use this when the user asks about their order history or order status.'}
print("Bad description:", bad['description'])
print("Good description:", good['description'])
Tableau required
Indiquez explicitement les champs obligatoires. Le modèle les renseignera toujours : les champs facultatifs ne sont renseignés que lorsqu'ils sont pertinents :
tool_params = {
'parameters': {
'properties': {
'city': {'type': 'string'},
'unit': {'type': 'string', 'enum': ['C', 'F']}
},
'required': ['city']
}
}
print(tool_params)
print("Required fields:", tool_params['parameters']['required'])
De Pydantic au schéma JSON
Vous pouvez générer automatiquement des schémas à partir de modèles Pydantic :
from pydantic import BaseModel, Field
class SearchArgs(BaseModel):
email: str = Field(description='Customer email')
limit: int = Field(50, description='Max orders to return')
schema = SearchArgs.model_json_schema()Mode strict (sorties structurées d'OpenAI)
Ajouter strict: true et additionalProperties: false garantit que la sortie du modèle correspond exactement au schéma :
tools = [{
'type': 'function',
'function': {
'name': 'get_weather',
'strict': True,
'parameters': {
'type': 'object',
'properties': {'city': {'type': 'string'}},
'required': ['city'],
'additionalProperties': False
}
}
}]
import json
print(json.dumps(tools, indent=2))
Importance de la description
Pourquoi la description d'un outil est-elle si importante ?
Récapitulatif
Les schémas orientent le modèle. De bonnes descriptions, des énumérations pour les ensembles fermés, des tableaux required et le mode strict sont vos leviers de fiabilité.
Questions Fréquemment Posées
La leçon « Définir des schémas d’outils (JSON Schema) » est-elle gratuite ?
Oui — le texte complet de « Définir des schémas d’outils (JSON Schema) » 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 Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Définir des schémas d’outils (JSON Schema) » ?
Rédigez des définitions JSON Schema pour les paramètres des outils, avec leurs types, descriptions, énumérations et champs obligatoires. Tu pratiques AI Agents 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 Agents ?
Aucune expérience préalable n'est requise. AI Agents 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 2 sur 4.
Combien de temps prend la leçon « Définir des schémas d’outils (JSON Schema) » ?
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 Agents ?
Oui. Chaque leçon AI Agents 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
- Fonctionnement des appels de fonctions
- Définir des schémas d’outils (JSON Schema)
- Choisir les outils à l’exécution
- Renvoyer les résultats au modèle