Format JSON pour Outils LLM

Un moyen portable de partager des outils

Introduction

Partager un outil de manière à ce qu'il puisse être rapidement ajouté à un programme ou à un éditeur d'outils serait grandement amélioré avec une méthode standard pour représenter un outil et comment l'utiliser. Nous voulons activer des fonctionnalités telles que les suivantes :

  • Une icône pour représenter visuellement l'outil

  • Métadonnées pour l'invite :

    • Un nom pour l'outil

    • Une description pour l'outil

    • Des notes d'utilisation pour l'outil

  • Paramètres de pseudo qui sont inclus dans la chaîne d'outils

  • Sortie attendue

  • Versioning et horodatage.

Spécification de Format JSON

{
  "version": "chaîne de caractères ou entier",
  "model_prompt": "chaîne de caractères avec des espaces réservés {{nom_variable}}",
  "metadata": {
    "prompt_name": "chaîne de caractères",
    "description": "chaîne de caractères",
    "usage_notes": "chaîne de caractères",
    "model_version": ["chaîne de caractères", "chaîne de caractères", …],
    "creator": {
      "name": "chaîne de caractères",
      "email": "chaîne de caractères",
      "organization": "chaîne de caractères"
    },
    "parameters": {
      "temperature": "nombre à virgule flottante",
      "max_tokens": "entier",
      "top_p": "nombre à virgule flottante",
      "frequency_penalty": "nombre à virgule flottante",
      "presence_penalty": "nombre à virgule flottante"
    },
    "variables": [
      {
        "name": "nom variable 1",
        "type": "texte",
        "description": "chaîne de caractères",
        "default": "chaîne de caractères",
      },
      {
        "name": "nom variable 2",
        "type": "sélection unique",
        "description": "chaîne de caractères",
        "default": "valeur1",
        "allowed_values": ["valeur1", "valeur2", "valeur3"]
      },
      {
        "name": "nom variable 3",
        "type": "sélection multiple",
        "description": "chaîne de caractères",
        "default": ["valeur1", "valeur2"]
        "allowed_values": ["valeur1", "valeur2", "valeur3"]
      },
      ...
    ],
    "expected_output": {
      "type": "chaîne de caractères (par exemple, texte, code, limité)",
      "format": "chaîne de caractères (facultatif, par exemple, JSON, XML, CSV)",
      "language": "chaîne de caractères (facultatif, par exemple, Python, JavaScript)",
      "allowed_values": ["chaîne de caractères1", "chaîne de caractères2", ...] (facultatif)
    },
    "avatar_type": "chaîne de caractères (par exemple, URL, base64)",
    "avatar": "chaîne de caractères (URL ou image codée en base64), 256x256 pixels recommandés",
    "timestamp": "chaîne de caractères (format ISO 8601)"
  }
}

Vous pouvez télécharger notre exemple de JSON ici.

Description des Champs

  • model_prompt: Une chaîne contenant l'indication de modèle GPT.

  • metadata: Un objet contenant des informations supplémentaires sur l'indication de modèle GPT, y compris les sous-champs suivants :

    • model_version: Une chaîne indiquant la version du modèle GPT utilisé.

    • creator: Un objet contenant des informations sur le créateur de l'indication de modèle GPT, avec les sous-champs suivants :

      • name: Une chaîne représentant le nom du créateur.

      • email: Une chaîne représentant le courrier électronique du créateur.

      • organization: Une chaîne représentant l'organisation à laquelle est affilié le créateur.

    • parameters: Un objet contenant des informations sur les paramètres du modèle GPT, avec les sous-champs suivants :

      • temperature: Un flottant indiquant la température utilisée pour contrôler l'aléa de la sortie.

      • max_tokens: Un entier indiquant le nombre maximum de jetons dans la réponse générée.

      • top_p: Un flottant représentant le seuil de probabilité d'échantillonnage du noyau.

      • frequency_penalty: Un flottant représentant la pénalité appliquée aux jetons en fonction de leur fréquence dans l'ensemble de données.

      • presence_penalty: Un flottant représentant la pénalité appliquée aux nouveaux jetons en fonction de leur présence dans l'indication.

    • timestamp: Une chaîne au format ISO 8601 représentant la date et l'heure de création ou de dernière modification de l'indication de modèle GPT.

    • expected_output (Optionnel): Un objet contenant des champs liés à la sortie attendue du model_prompt, y compris les sous-champs suivants :

      • type: Une chaîne indiquant le type de sortie attendu du model_prompt.

      • format (Optionnel): Une chaîne représentant le format de la sortie attendue si applicable.

      • language (Optionnel): Une chaîne représentant le langage de programmation de la sortie attendue si le type est code.

      • allowed_values (Optionnel): Un tableau de chaînes contenant une liste de valeurs de sortie autorisées si le type est limited.

    • variables (Optionnel): Une liste contenant des variables qui pourraient être insérées dans la chaîne model_prompt au format f-string. Chaque variable contient les sous-champs suivants :

      • name: Une chaîne représentant le nom de la variable.

      • type: Une chaîne montrant le type de variable. Les valeurs possibles de type sont actuellement text pour la variable par défaut, et single-select ou multi-select pour les variables de sélection.

      • description: Une chaîne montrant la description de la variable, y compris les usages et les exemples.

      • default: Une valeur montrant la valeur par défaut de la variable. Cette valeur est une chaîne si type est text ou single-select, et un tableau de chaînes pour multi-select.

      • allowed_values: Un tableau de chaînes contenant une liste de valeurs autorisées si le type de variable est single-select ou multi-select

    • avatar (Optionnel): Un objet contenant des champs liés à l'image graphique agissant comme un avatar ou une icône pour l'indication, y compris les sous-champs suivants :

      • avatar_type: Une chaîne spécifiant le type de données d'avatar incluses.

      • avatar: Une chaîne contenant l'URL pointant vers l'image si le type d'avatar est url, ou une chaîne encodée en base64 représentant l'image si le type d'avatar est base64.

    • prompt_name (Optionnel): Une chaîne représentant le nom de l'indication.

    • description (Optionnel): Une chaîne fournissant une brève description de l'outil et de son but.

    • usage_notes (Optionnel): Une chaîne contenant des notes libres du créateur sur l'utilisation ou toute considération spécifique liée à l'outil.

Pour spécifier le format de la sortie attendue du model_prompt, vous pouvez ajouter un objet expected_output à l'intérieur de l'objet metadata. En fonction du type de sortie attendu, vous pouvez inclure les sous-champs pertinents dans l'objet expected_output.

Pour inclure des champs pour les variables qui pourraient être insérés dans la chaîne model_prompt au format f-string, vous pouvez ajouter une liste variables séparée à l'intérieur de l'objet metadata.

Pour inclure une image graphique agissant comme un avatar ou une icône pour l'indication, vous pouvez ajouter un champ avatar à l'intérieur de l'objet metadata.

L'inclusion des champs expected_output, variables, avatar, prompt_name, description, et usage_notes à l'intérieur de l'objet metadata aide à garder toute l'information contextuelle sur l'indication en un seul endroit, facilitant sa gestion et sa compréhension.

Vous pouvez utiliser le champ version au niveau supérieur de l'objet JSON pour suivre explicitement la version de l'ensemble du fichier JSON

Dernière mise à jour