# Format JSON pour les outils intelligents

## Global <a href="#lgmg27qgfdrg" id="lgmg27qgfdrg"></a>

Pour créer un outil intelligent sur SkyDeck.AI, vous devez télécharger un ensemble de fichiers conforme aux spécifications mentionnées dans la section Structure du fichier. Une fois téléchargés, notre plateforme effectuera la configuration initiale, ce qui peut prendre quelques minutes. Par la suite, l'outil sera disponible dans l'espace de travail GenStudio.

## Structure de fichier <a href="#id-7dcm0ac78x60" id="id-7dcm0ac78x60"></a>

### \<nom\_de\_l'outil>.json <a href="#xvdq6eic1eed" id="xvdq6eic1eed"></a>

Le comportement de l'outil est également configuré via un fichier JSON. Voici un bref aperçu des principaux champs de la configuration :

* **version** : La version actuelle de l'outil.
* **nom\_de\_l'outil** : Le nom de l'outil. Ce nom doit être unique dans votre espace de travail.
* **code\_de\_l'outil** : Contient le code Python à exécuter. Plus de détails sur ce champ seront dans la section suivante.
* **description** : Une brève description de ce que fait l'outil.
* **notes\_d'utilisation** : Instructions sur comment utiliser l'outil.
* **version\_du\_modèle** : Spécifie les modèles qui sont autorisés à être utilisés pour les questions de suivi. Pour spécifier tous les modèles, utilisez *\["gpt-4", "gpt-3.5", "claude", "chat-bison"]*.
* **créateur** : Informations sur le créateur de l'outil, incluant le nom, l'email, et l'organisation.
* **variables** : Un tableau de variables utilisées par l'outil. Chaque variable a un nom, une description et une valeur par défaut. L'ordre des variables dans l'UI suit l'ordre dans ce tableau.
* **sortie\_attendue** : Le type de sortie produite par l'outil. Durant la phase de développement, la valeur devrait toujours être texte.
* **type\_d'avatar** : Le format de l'avatar utilisé dans l'UI de l'outil.
* **horodatage** : La date et l'heure de la dernière mise à jour de l'outil.
* **exigences** : spécifie les packages requis pour exécuter le script dans le code de l'outil.
* **avatar** : la chaîne représentant le logo de cet outil

### Convention pour tool\_code : <a href="#id-177qobv2sfe9" id="id-177qobv2sfe9"></a>

Ce script décrit le fonctionnement de votre outil. Le composant principal de ce script est la fonction *execute*, qui a les exigences suivantes :

* La fonction doit avoir un seul paramètre d'entrée appelé *variables*, qui est un dictionnaire. Chaque clé de ce dictionnaire correspond à un champ que l'utilisateur entrerait dans votre outil.
* La fonction doit retourner une chaîne de caractères, qui sera affichée comme la réponse sur l'interface utilisateur de GenStudio.

## Exemple d'outils <a href="#h9o86a5lgfut" id="h9o86a5lgfut"></a>

### Génération d'images en utilisant DALL-E 2 <a href="#quzi31gwxka6" id="quzi31gwxka6"></a>

**Description:**

Cet outil accepte une description d'image comme entrée et génère une URL correspondante pour l'image. La sortie inclut l'URL ainsi qu'une note d'expiration. L'outil fonctionne en envoyant la requête à l'API OpenAI DALL-E et en récupérant la réponse.

**Entrée:**

* Description: Description de l'image, par exemple, "Un chat blanc et duveteux"

**Sortie:**

* Un message avec l'URL générée pour l'image ainsi que la note d'expiration.

#### Script Python (qui serait un champ à l'intérieur de image\_generation.json) : <a href="#qw9m9923kptk" id="qw9m9923kptk"></a>

```python
import openai
def execute(variables):
    openai.api_key = '<CLE API UTILISATEUR>'
    description = variables['Description']
    response = openai.Image.create(
        prompt=description,
        n=1,
        size="1024x1024"
    )
    image_url = response['data'][0]['url']
    return f"Voici le lien vers votre image:{image_url}. Le lien expirera dans 1 heure."
```

#### image\_generation.json <a href="#id-4q3mtb2zf8gt" id="id-4q3mtb2zf8gt"></a>

```json
{
    "version": "0.1",
    "metadata": {
        "tool_name": "Génération d'image",
        "tool_code": "import openai\n\ndef execute(variables):\n openai.api_key = ''\n description = variables['Description']\n response = openai.Image.create(\n prompt=description,\n n=1,\n size=\"1024x1024\"\n )\n\n image_url = response['data'][0]['url']\n return f\"Voici le lien vers votre image:{image_url}. Le lien expirera dans 1 heure.\"\n",
        "description": "A généré une image basée sur la description avec le modèle DALL-E d'OpenAI.",
        "usage_notes": "Décrivez l'image en détail et mettez-la dans le champ description. Une URL de l'image sera retournée. La durée de vie de l'URL est d'environ 1 heure, alors assurez-vous de la télécharger avant son expiration",
        "model_version": ["gpt-3.5","gpt-3.5-turbo", "gpt-4", "claude"],
        "creator": {
            "name": "SkyDeck AI",
            "email": "skydeck@eastagile.com",
            "organization": "East Agile"
        },
        "variables": [
            {
                "name": "Description",
                "description": "Description de l'image",
                "default": "un chat siamois blanc"
            }
        ],
        "expected_output": {
            "type": "text"
        },
        "avatar_type": "base64",
        "timestamp": "2023-05-23T10:00:00Z",
        "requirements": "openai>=0.27.4",
        "avatar": ""
    }
}
```

### Rapport météo en temps réel avec Open-Meteo API <a href="#yhjv7lbl4mu0" id="yhjv7lbl4mu0"></a>

**Description** :

Cet outil exploite l'API Open-Meteo pour fournir des informations météorologiques en temps réel en fonction des questions des utilisateurs. En posant une question sur la météo, telle que la température, les précipitations ou les conditions de vent, l'outil récupère les données les plus pertinentes et à jour.

Le fonctionnement de cet outil repose sur APIChain - une fonctionnalité de la bibliothèque LangChain - pour accéder à la documentation de l'API Open-Meteo. Cela permet à l'outil d'apprendre comment effectuer les bons appels API et récupérer les informations requises de manière fluide.

**Entrée** :

* Question : Posez une question spécifique sur la météo, par exemple, "Quelle est la température actuelle à New York City ?"

**Sortie** :

* Une réponse fournissant les informations météorologiques demandées.

#### Script Python (qui serait un champ à l'intérieur de weather\_reporter.json): <a href="#qw9m9923kptk" id="qw9m9923kptk"></a>

```python
from langchain.chains.api import open_meteo_docs
from langchain.chat_models import ChatOpenAI
from langchain.chains import APIChain
def execute(variables):
    question = variables['Question']
    llm = ChatOpenAI(
        model_name='gpt-3.5-turbo',
        openai_api_key='<CLE API UTILISATEUR>'
    )
    api_chain = APIChain.from_llm_and_api_docs(
        llm, open_meteo_docs.OPEN_METEO_DOCS, verbose=False
    )
    result = api_chain.run(question)
    return result
```

#### weather\_reporter.json <a href="#bgnhw14oi99h" id="bgnhw14oi99h"></a>

```json
{
  "version": "0.1",
  "metadata": {
    "tool_name": "Rapporteur Météo",
    "tool_code": "from langchain.chains.api import open_meteo_docs\nfrom langchain.chat_models import ChatOpenAI\nfrom langchain.chains import APIChain\n\n\ndef execute(variables):\n question = variables['Question']\n llm = ChatOpenAI(model_name='gpt-3.5-turbo',\n openai_api_key='')\n api_chain = APIChain.from_llm_and_api_docs(\n llm, open_meteo_docs.OPEN_METEO_DOCS, verbose=False)\n result = api_chain.run(question)\n return result\n",
    "description": "Exploitez l'API Open-Meteo pour récupérer les détails météorologiques en temps réel",
    "usage_notes": "Entrez votre question liée à la météo dans le champ prévu à cet effet",
    "model_version": ["gpt-3.5", "gpt-3.5-turbo", "gpt-4", "claude"],
    "creator": {
      "name": "SkyDeck AI",
      "email": "skydeck@eastagile.com",
      "organization": "East Agile"
    },
    "variables": [
      {
        "name": "Question",
        "description": "Renseignez-vous sur les conditions météorologiques",
        "default": "Quelle est la température actuelle à Munich, Allemagne, exprimée en degrés Celsius ?"
      }
    ],
    "expected_output": {
      "type": "text"
    },
    "avatar_type": "base64",
    "timestamp": "2023-07-13T10:00:00Z",
    "requirements": "openai>=0.27.4\nlangchain>=0.0.229",
    "avatar": ""
  }
}
```

## Limitations <a href="#g32lfwd6xlxx" id="g32lfwd6xlxx"></a>

AWS Lambda permet uniquement à une fonction de s'exécuter pendant un maximum de 15 minutes et avec 10 Go de RAM. Par conséquent, les outils doivent terminer leur exécution dans cette contrainte.


---

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