- Introduction de "Structured Outputs" dans l’API
- Nouvelle fonctionnalité permettant au modèle de produire une sortie correspondant exactement au schéma JSON fourni par le développeur
- OpenAI avait présenté l’an dernier le mode JSON lors du DevDay, sans toutefois garantir des réponses conformes à un schéma précis
- Les sorties structurées limitent la sortie du modèle au schéma fourni par le développeur et entraînent le modèle à mieux comprendre des schémas complexes
- Pourquoi les sorties structurées sont nécessaires
- Générer des données structurées à partir d’entrées non structurées est l’un des principaux cas d’usage de l’IA
- L’API OpenAI permet d’effectuer diverses tâches, comme la recherche de données, les questions-réponses, l’extraction de données ou la création de workflows multi-étapes
- Jusqu’à présent, il fallait recourir à des outils open source, des prompts, des tentatives répétées, etc., pour obtenir un format de sortie interopérable avec les systèmes
- Les sorties structurées résolvent ce problème en contraignant la sortie du modèle au schéma fourni par le développeur
- Évaluation des performances
- Lors d’une évaluation portant sur le respect de schémas JSON complexes, le modèle
gpt-4o-2024-08-06 a obtenu un score de 100 %
- Le modèle
gpt-4-0613 a obtenu un score inférieur à 40 %
- Comment utiliser les sorties structurées
- Sorties structurées via function calling : définir
strict: true dans la définition de fonction
- Disponible sur les modèles prenant en charge les outils
- Sorties structurées sûres
- Respecte les politiques de sécurité existantes d’OpenAI
- Le modèle peut refuser des requêtes non sûres
- La réponse de l’API inclut une valeur de chaîne de refus, ce qui permet de détecter par programme si le modèle a généré un refus
- Prise en charge native dans les SDK
- Les SDK Python et Node prennent en charge nativement les sorties structurées
- Il est possible de fournir des objets Pydantic ou Zod, convertis en schéma JSON, puis de sérialiser et d’analyser automatiquement la réponse JSON
- Limitations
- Seule une partie du schéma JSON est prise en charge
- Une latence supplémentaire peut survenir lors de la première réponse API avec un nouveau schéma
- Le modèle peut refuser des requêtes non sûres
- Non compatible avec les appels de fonctions parallèles
- Les sorties structurées ne relèvent pas de Zero Data Retention (ZDR)
- Disponibilité
- Les sorties structurées sont généralement disponibles dans l’API
- Les sorties structurées via function calling sont disponibles sur tous les modèles prenant en charge le function calling
- L’option de format de réponse est disponible sur les modèles les plus récents
Le résumé de GN⁺
- La nouvelle fonctionnalité d’OpenAI, les sorties structurées, permet d’aligner précisément la sortie du modèle sur un schéma JSON
- Les développeurs peuvent ainsi réaliser de manière plus fiable diverses tâches, comme la recherche de données, les questions-réponses ou l’extraction de données
- La prise en charge native dans les SDK Python et Node facilite le développement
- Il existe aussi divers cas d’usage supplémentaires, comme l’extraction de données structurées à partir de données non structurées
- La fonctionnalité utilise une technique de constrained decoding pour contraindre la sortie du modèle et ne générer qu’un JSON valide
2 commentaires
C’est une fonctionnalité intéressante.
Avis Hacker News
Construction d’interfaces utilisateur dynamiques et de code avec GPT-4o
Principaux changements de gpt-4o-2024-08-06
Retour d’expérience sur l’utilisation de Structured Output d’Outlines avec vLLM
Avis sur les performances de l’IA
Avis sur l’approche d’OpenAI
Confusion autour de l’option
"strict: true"Avis selon lequel coder en dur le JSON dans le modèle va à l’encontre de l’objectif AGI
Inquiétudes concernant l’effet de verrouillage lors de l’utilisation des fonctionnalités d’OpenAI
Remarque sur une erreur de format JSON
Question sur la raison pour laquelle le niveau supérieur doit être un objet