Depuis le 11 mars 2025, nous avons lancé les briques de base de notre nouvelle plateforme Agents. Pour en savoir plus, consultez notre documentation API pour l’API Responses, les outils, notamment Web Search, File Search et Computer Use, ainsi que notre Agents SDK avec Tracing.
L’appel de fonction vous permet de connecter les modèles OpenAI à des outils et systèmes externes. Cela est utile dans de nombreux cas, par exemple pour doter des assistants IA de capacités, ou pour créer des intégrations poussées entre vos applications et les LLM.
En savoir plus dans notre guide développeur sur l’appel de fonction.
En juin 2024, nous avons lancé les sorties structurées. Lorsque vous l’activez en définissant `strict: true` dans votre définition de fonction, les sorties structurées garantissent que les arguments générés par le modèle pour un appel de fonction correspondent exactement au schéma JSON que vous avez fourni dans la définition de fonction.
En octobre 2024, nous avons lancé la fonctionnalité 'Generate Anything', qui permet aux développeurs de décrire une fonction, de la coller directement ou de coller leur code afin de générer un schéma de fonction valide. En savoir plus sur 'Generate Anything' dans cet article du centre d’aide
Comment puis-je utiliser l’appel de fonction ?
L’appel de fonction est utile pour un grand nombre de cas d’usage, tels que :
Permettre aux assistants de récupérer des données :
un assistant IA doit récupérer les dernières données client depuis un système interne lorsqu’un utilisateur demande « quelles sont mes commandes récentes ? » avant de pouvoir générer la réponse à l’utilisateur
Permettre aux assistants d’effectuer des actions :
un assistant IA doit planifier des réunions en fonction des préférences de l’utilisateur et des disponibilités du calendrier.
Permettre aux assistants d’effectuer des calculs :
un assistant tuteur de mathématiques doit effectuer un calcul mathématique.
Créer des workflows riches :
un pipeline d’extraction de données qui récupère du texte brut, puis le convertit en données structurées et l’enregistre dans une base de données.
L’appel de fonction est pris en charge dans l’API Responses, qui unifie des capacités auparavant réparties entre l’API Chat Completions et l’API Assistants.
Comment puis-je utiliser le mode JSON ?
Lorsque le mode JSON est activé, la sortie du modèle est garantie comme étant un JSON valide, sauf dans certains cas limites que vous devez détecter et traiter de manière appropriée.
Pour demander le mode JSON avec l’API Responses ou l’API Chat Completions, vous pouvez définir response_format sur { "type": "json_object" } sur les modèles pris en charge, mais cela fonctionne uniquement lorsque les préconditions du modèle/message/outil sont satisfaites (par exemple, le modèle prend en charge json_object, la conversation inclut une instruction pour produire du JSON, et les contraintes d’outil sont compatibles). Pour le mode JSON avec response_format: {"type": "json_object"}, au moins un message de la requête doit contenir json sous une forme quelconque, par exemple JSON, json ou Json ; sinon, l’API renvoie une erreur. Lorsque l’appel de fonction est utilisé sur des modèles/chemins compatibles, des contraintes JSON sont appliquées automatiquement aux arguments d’appel de fonction ; les combinaisons incompatibles de modèle ou d’outil/format de réponse peuvent être rejetées ou ne pas utiliser l’échantillonnage contraint JSON.
Remarques importantes :
Lorsque vous utilisez le mode JSON, vous devez toujours demander au modèle de produire du JSON via un message dans la conversation, par exemple dans votre message système. Si vous n’incluez pas d’instruction explicite pour générer du JSON, le modèle peut produire un flux interminable d’espaces et la requête peut s’exécuter en continu jusqu’à atteindre la limite de tokens. Pour éviter les oublis, le mode JSON rejette les requêtes sauf si les messages ou instructions d’entrée pertinents contiennent le mot
jsonsous une forme quelconque, sans tenir compte de la casse.Le mode JSON ne garantit pas que la sortie corresponde à un schéma spécifique, seulement qu’elle est valide et peut être analysée sans erreur. Vous devez utiliser les sorties structurées pour garantir la correspondance avec votre schéma ou, si ce n’est pas possible, utiliser une bibliothèque de validation et éventuellement des tentatives supplémentaires afin de vous assurer que la sortie correspond au schéma souhaité.
Votre application doit détecter et gérer les cas limites pouvant faire en sorte que la sortie du modèle ne soit pas un objet JSON complet (voir ci-dessous)
