Format JSON pour Outils Intelligents

Un moyen portable de partager les outils intelligents SkyDeck.AI écrits en code Python

Global

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

<nom_de_l'outil>.json

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 :

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

Génération d'images en utilisant DALL-E 2

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) :

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

{
    "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

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):

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

{
  "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

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.

Dernière mise à jour