Aller au contenu
A flat 8-bit geometric illustration displays a simple form panel with three outlined fields: one for city (outlined in one color with a blue "A" icon for text), one for year (differently colored outline with a yellow "123" icon for numbers), and one checkbox field (another unique color outline with a green square for boolean input). Above the panel sits a blue gear, signifying schema transformation. To the side, a dropdown icon suggests options and a small folder shows ".md .txt" file support. The image uses no more than five colors, features no text, shadow, or depth, and appears strictly flat against a white background.

Schéma des paramètres

AI generated translation.

Cette page décrit la manière dont les signatures des paramètres sont définies dans GenAIScripts. Diverses entités dans GenAIScript peuvent être paramétrées, et le PromptParametersSchema fournit un moyen flexible de définir le schéma des paramètres avec un mélange d’inférences de types intégrées.

// parameters of a script
script({
parameters: {
city: "",
year: NaN,
},
})
// parameters of a tool
defTool("...", "...", { city: "", year: NaN }, ...)

En interne, GenAIScript convertit un objet parameters (PromptParametersSchema) en un schéma JSON (JSONSchema) à diverses fins. Par exemple, l’API des outils OpenAI utilise JSONSchema pour définir la signature des outils.

JSONSchema est plus expressif mais aussi plus verbeux à rédiger et peut être fastidieux à écrire manuellement pour des cas d’utilisation simples.

defTool("weather", "current weather", { city: "" }, ...)
Play

Les règles de transformation suivantes sont appliquées pour convertir les données de paramètres en un JSONSchema :

  • si la valeur est un objet et possède une propriété type, elle est traitée comme un objet JSONSchema déjà existant (et les objets imbriqués sont également convertis)
{ type: "string" } => { type: "string" }
  • si la valeur est une chaîne de caractères, elle est convertie en { type: "string" }. Si la chaîne est ’""’, elle sera requise ; sinon, la valeur sert de default.
"" => { type: "string" }
"San Francisco" => { type: "string", default: "San Francisco" }
  • si la valeur est un nombre, elle est convertie en { type: "number" }. Si le nombre est NaN, il sera requis.
NaN => { type: "number" }
42 => { type: "number", default: 42 }
  • si la valeur est un booléen, elle est convertie en { type: "boolean" }. Il n’existe pas encore de méthode pour encoder un booléen requis.
true => { type: "boolean", default: true }
  • si la valeur est un tableau, le type des éléments est déduit à partir du premier élément du tableau.
[""] => { type: "array", items: { type: "string" } }
  • si la valeur est un objet, elle est convertie en un schéma type: 'object'. Les champs avec des valeurs "" ou NaN sont requis.
{ city: "" } => {
type: "object",
properties: { city: { type: "string" } },
required: ["city"]
}
{ price: 42 } => {
type: "object",
properties: { price: { type: "number", default: 42 } },
required: []
}

Certaines propriétés supplémentaires, non standard, sont utilisées pour fournir des informations complémentaires à l’interface utilisateur :

  • uiGroup sur toute propriété d’objet regroupe cet élément dans une section repliée dans l’interface utilisateur.
{
"type": "string",
"uiGroup": "secondary"
}
  • uiType textarea pour indiquer que le champ doit être rendu sous la forme d’une zone de texte.
{
"type": "string",
"uiType": "textarea"
}
  • uiSuggestions pour fournir une liste de suggestions pour un type string. Les suggestions remplissent le menu déroulant dans l’interface utilisateur tout en permettant d’autres valeurs.
{
"type": "string",
"uiSuggestions": ["San Francisco", "New York"]
}
  • uiType: runOption pour un booléen place la case à cocher sous le bouton Run.
{
"type": "boolean",
"uiType": "runOption"
}

Vous pouvez spécifier la liste des extensions de fichiers prises en charge, séparées par des virgules, pour les variables env.files.

script({
accept: ".md,.txt",
})

Pour supprimer la prise en charge de tous les fichiers, définissez accept comme none.

script({
accept: "none",
})

Les parameters d’une entrée script sont utilisés pour remplir les entrées env.vars. Le schéma des paramètres est utilisé par Visual Studio Code lors du lancement du script, dans le playground pour remplir les champs du formulaire.

  • les noms des paramètres de script au niveau supérieur sont utilisés tels quels dans env.vars
script({
parameters: {
city: "",
year: NaN,
},
})
const city = env.vars.city // city is a string
const year = env.vars.year // year is a number
  • les parameters d’un script système sont préfixés par l’identifiant du script système.
system.something.genai.js
system({
parameters: {
value: "",
},
})
export default function (ctx: ChatGenerationContext) {
const { env } = ctx
const value = env.vars["system.something.value"]
...
}

Vous pouvez exécuter l’assistant de conversion en utilisant la fonction JSONSchema.infer.