Aller au contenu
A small, clean 2D flowchart made of flat geometric colored blocks, with arrows linking rectangles that symbolize different data formats such as JSON, YAML, and schema. Includes simple shapes like clipboards, checkboxes, and code brackets, as well as a single stylized computer window. Uses five bold corporate colors, appearing flat and minimalistic with no background, gradients, people, or text.

Sorties structurées

AI generated translation.

GenAIScript prend en charge la génération de sorties structurées avec des réparations automatiques des données. Il peut exploiter la validation de schéma intégrée fournie par les fournisseurs de LLM ou exécuter sa propre validation selon les besoins.

Play

Les sorties structurées sont configurées grâce à deux indicateurs : responseType, qui contrôle le format des données, et responseSchema qui contrôle la structure des données.

Le type de réponse est contrôlé par l’argument optionnel responseType et offre les options suivantes :

  • json : demander au LLM de produire une sortie JSON valide.
  • yaml : demander au LLM de produire une sortie YAML valide.
  • json_object : utiliser la sortie JSON intégrée d’OpenAI
  • json_schema : utiliser la sortie JSON intégrée d’OpenAI avec validation de schéma JSON

Notez que text et markdown sont également supportés pour configurer la sortie du LLM.

Dans ce mode, GenAIScript invite le LLM à produire une sortie JSON valide. Il valide également la sortie et tente de la réparer si elle n’est pas valide. Ce mode est implémenté par GenAIScript et ne dépend pas du support des fournisseurs de LLM.

script({
responseType: "json",
})

La validation du schéma est appliquée si responseSchema est fourni.

Dans ce mode, GenAIScript invite le LLM à produire une sortie JSON valide. Il valide également la sortie et tente de la réparer si elle n’est pas valide. Ce mode est implémenté par GenAIScript et ne dépend pas du support des fournisseurs de LLM.

script({
responseType: "yaml",
})

La validation du schéma est appliquée si responseSchema est fourni.

Dans ce mode, GenAIScript invite le LLM à produire une sortie JSON valide. Il valide également la sortie et tente de la réparer si elle n’est pas valide. Ce mode repose sur le support intégré des LLM comme OpenAI.

script({
responseType: "json_object",
})

La sortie structurée est une fonctionnalité qui vous permet de générer des données structurées au format de données, par exemple avec un schéma JSON. Ce mode est plus strict que json_object.

Pour activer ce mode, définissez responseType sur json_schema et fournissez un objet responseSchema.

script({
responseType: "json_schema",
responseSchema: {
type: "object",
properties: {
name: { type: "string" },
age: { type: "number" },
},
required: ["name", "age"],
},
})

Notez qu’il existe plusieurs restrictions sur les fonctionnalités des schémas prises en charge par ce mode.

  • additionalProperties: true n’est pas supporté.
  • tous les champs optionnels (par exemple ceux qui ne sont pas dans required) seront retournés et peuvent être null.

Vous pouvez spécifier un schéma via responseSchema qui activera automatiquement le mode de sortie structurée. La sortie sera validée contre ce schéma, et GenAIScript tentera de réparer la sortie si elle n’est pas valide. Le script échouera si la sortie ne correspond pas au schéma.

script({
responseType: "json",
responseSchema: {
type: "object",
properties: {
name: { type: "string" },
age: { type: "number" },
},
required: ["name", "age"],
},
})

Notez que cette section s’applique à la sortie entière d’une conversation. Vous pouvez également utiliser des schémas en ligne et utiliser un mix markdown/données que GenAIScript analysera.

Si vous souhaitez créer un LLM-comme-juges et ne cherchez qu’à obtenir des sorties dans un ensemble de mots donné, vous pouvez aussi envisager d’utiliser des choix pour augmenter la probabilité que le modèle génère les mots spécifiés.

La fonction cast est une aide d’exécution GenAIScript pour convertir du texte/images non structurés en données structurées.

import { cast } from "@genaiscript/runtime"
const { data } = await cast((_) => _.defImages(images), {
type: "object",
properties: {
keywords: {
type: "array",
items: {
type: "string",
description: "Keywords describing the objects on the image",
},
},
},
required: ["keywords"],
})