# Format JSON pour les outils LLM

## 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

```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](https://skydeck-public-assets.s3.amazonaws.com/sample_tool.json).

## 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.skydeck.ai/fr/developers/develop-your-own-tools/json-format-for-llm-tools.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
