Erreur lors de l'utilisation de Structured Output avec 'response_format' dans Chat Completions Create d'OpenAI

Emmanuella Michel 5 Points de réputation
2024-08-15T19:52:47.5833333+00:00

Bonjour,

OpenAI a récemment sorti la fonctionnalité 'Structured Output' permettant de spécifier un schéma JSON pour la réponse du modèle. Il faut passer au paramère response_format de la fonction Chat Completions Create un objet sous le format suivant : { "type": "json_schema", "json_schema": {...} }.

Cette fonctionnalité est, entre autres, compatible avec gpt-4o-mini.

Cependant, avec Azure OpenAI, elle ne semble pas fonctionner. L'erreur obtenu en Python est la suivante :

Exception has occurred: BadRequestError Error code: 400 - {'error': {'message': "Invalid parameter: 'response_format' must be one of 'json_object', 'text'.", 'type': 'invalid_request_error', 'param': 'response_format', 'code': None}} httpx.HTTPStatusError: Client error '400 model_error' for url '<...>/gpt-4o-mini/chat/completions?api-version=2024-06-01'

J'ai essayé avec les versions de l'API 2024-06-01, 2024-04-01-preview, 2024-02-01.

Cette fonctionnalité ne semble pas présente dans la documentation d'Azure.

Sauriez-vous comment y accéder ?

D'avance merci,

Emma

Azure
Azure
Plateforme et infrastructure de cloud computing pour la génération, le déploiement et la gestion d’applications et de services à travers un réseau mondial de centres de données gérés par Microsoft.
293 questions
0 commentaires Aucun commentaire
{count} votes

3 réponses

Trier par: Le plus utile
  1. Nina Kalenderska (Concentrix International) 540 Points de réputation Fournisseur Microsoft
    2024-08-16T07:05:01.5066667+00:00

    Bonjour Emma,

    J'ai trouvé des postes similaires avec ce problème:

    Introducing Structured Outputs

    Error retrieving ‘completions’: 400 Bad Request

    Ce même problème est aussi signalé comme un bug ici:

    Azure OpenAI GPT-4o mini Structured Outputs response_format not working

    Vérifiez aussi les informations dans la section response_format de la documentation:

    "Important: when using JSON mode, you must also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content may be partially cut off if finish_reason="length", which indicates the generation exceeded max_tokens or the conversation exceeded the max context length."

    Cordialement,

    Nina


  2. Emmanuella Michel 5 Points de réputation
    2024-08-16T15:44:55.4833333+00:00

    Bonjour Nina,

    Merci pour votre réponse.

    Toutefois, le premier post que vous mentionnez ne met pas en avant le problème rencontré sur Azure, et le second post n'est pas en lien avec mon problème.

    Il semblerait que la fonctionnalité soit disponible sur Azure OpenAI d'après l'article de blog suivant : Announcing a new OpenAI feature for developers on Azure.

    Cependant, la documentation d'Azure ne semble pas à jour : chatCompletionResponseFormat. Ceci me laisse penser qu'Azure n'a pas intégré cette fonctionnalité dans son API.

    Est-il possible de faire remonter ce problème technique ?

    Cordialement,

    Emma

    0 commentaires Aucun commentaire

  3. Emmanuella Michel 5 Points de réputation
    2024-08-16T16:07:31.6066667+00:00

    Bonjour Nina,

    Merci pour votre réponse.

    Il semblerait que la fonctionnalité soit disponible sur Azure OpenAI d'après l'article de blog "Announcing a new OpenAI feature for developers on Azure" publié le 7 août 2024.

    Cependant, sur la documentation d'Azure, chatCompletionResponseFormat ne peut prendre que les valeurs text ou json_object. Il devrait être sous la forme {"type": "...", "json_schema": ...}.

    Cordialement,

    Emma

    0 commentaires Aucun commentaire

Votre réponse

Les réponses peuvent être marquées comme réponses acceptées par l’auteur de la question, ce qui aide les utilisateurs à savoir que la réponse a résolu le problème de l’auteur.