Formato JSON para herramientas inteligentes

Una forma portátil de compartir herramientas inteligentes de SkyDeck.AI escritas en código Python

General

Para crear una herramienta inteligente en SkyDeck.AI, necesitas subir un conjunto de archivos de acuerdo a las especificaciones mencionadas en la sección de Estructura de Archivos. Una vez subidos, nuestra plataforma realizará la configuración inicial, lo cual puede tomar unos minutos. Posteriormente, la herramienta estará disponible en el Espacio de Trabajo de GenStudio.

Estructura de Archivo

<nombre_herramienta>.json

El comportamiento de la herramienta también se configura a través de un archivo JSON. Aquí hay un breve resumen de los campos clave en la configuración:

  • version: La versión actual de la herramienta.

  • nombre_herramienta: El nombre de la herramienta. Este nombre debe ser único en tu espacio de trabajo.

  • codigo_herramienta: Contiene el código Python a ejecutar. Más detalles sobre este campo estarán en la siguiente sección.

  • descripcion: Una breve descripción de lo que hace la herramienta.

  • notas_uso: Instrucciones sobre cómo usar la herramienta.

  • version_modelo: Especifique los modelos que están permitidos para usar en preguntas de seguimiento. Para especificar todos los modelos, use ["gpt-4", "gpt-3.5", "claude", "chat-bison"].

  • creador: Información sobre el creador de la herramienta, incluyendo nombre, correo electrónico y organización.

  • variables: Un conjunto de variables usadas por la herramienta. Cada variable tiene un nombre, descripción y valor por defecto. El orden de las variables en la UI sigue el orden en este conjunto.

  • salida_esperada: El tipo de salida producida por la herramienta. Durante la etapa de desarrollo, el valor siempre debería ser texto.

  • tipo_avatar: El formato del avatar usado en la interfaz de la herramienta.

  • marca_tiempo: La fecha y hora en que la herramienta fue actualizada por última vez.

  • requisitos: especifica los paquetes requeridos para ejecutar el script en codigo_herramienta.

  • avatar: la cadena de texto que representa el logo de esta herramienta

Convención de tool_code:

Este script describe el funcionamiento de tu herramienta. El componente principal de este script es la función execute, que tiene los siguientes requisitos:

  • La función debería tener un único parámetro de entrada llamado variables, que es un diccionario. Cada clave en este diccionario se corresponde con un campo que el usuario introduciría en tu herramienta.

  • La función debe devolver una cadena, que se mostrará como la respuesta en la interfaz de usuario de GenStudio.

Ejemplo de Herramientas

Generación de imágenes usando DALL-E 2

Descripción:

Esta herramienta acepta una descripción de imagen como entrada y genera una URL correspondiente para la imagen. La salida incluye la URL junto con una nota de vencimiento. La herramienta funciona enviando la consulta a la API de OpenAI DALL-E y recuperando la respuesta.

Entrada:

  • Descripción: Descripción de la imagen, por ejemplo, "Un gato blanco y peludo"

Salida:

  • Un mensaje con la URL generada para la imagen junto con la nota de vencimiento.

Script en Python (que sería un campo dentro de image_generation.json):

import openai
def execute(variables):
    openai.api_key = '<USER API KEY>'
    description = variables['Descripción']
    response = openai.Image.create(
        prompt=description,
        n=1,
        size="1024x1024"
    )
    url_imagen = response['data'][0]['url']
    return f"Aquí está el enlace a tu imagen:{url_imagen}. El enlace expirará en 1 hora."

image_generation.json

{
    "version": "0.1",
    "metadata": {
        "tool_name": "Generación de imagen",
        "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\"Aquí está el enlace a tu imagen:{image_url}. El enlace caducará en 1 hora.\"\n",
        "description": "Generó una imagen basada en la descripción con el modelo DALL-E de OpenAI.",
        "usage_notes": "Describe la imagen en detalle y colócala en el campo de descripción. Se devolverá una URL de la imagen. La vida útil de la URL es de aproximadamente 1 hora, así que asegúrate de descargarla antes de que caduque.",
        "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": "Descripción",
                "description": "Descripción de la imagen",
                "default": "un gato siamés blanco"
            }
        ],
        "expected_output": {
            "type": "text"
        },
        "avatar_type": "base64",
        "timestamp": "2023-05-23T10:00:00Z",
        "requirements": "openai>=0.27.4",
        "avatar": ""
    }
}

Informe del clima en tiempo real con Open-Meteo API

Descripción:

Esta herramienta utiliza la API de Open-Meteo para proporcionar información meteorológica en tiempo real basada en las preguntas de los usuarios. Al hacer una pregunta sobre el clima, como la temperatura, la precipitación o las condiciones del viento, la herramienta recupera los datos más relevantes y actualizados.

El funcionamiento de esta herramienta se basa en APIChain, una característica de la biblioteca LangChain, para acceder a la documentación de la API de Open-Meteo. Esto permite a la herramienta aprender a hacer las llamadas correctas a la API y recuperar la información requerida de manera fluida.

Entrada:

  • Pregunta: Hacer una pregunta específica sobre el clima, por ejemplo, "¿Cuál es la temperatura actual en la ciudad de Nueva York?"

Salida:

  • Una respuesta que proporciona la información meteorológica solicitada.

Script de Python (que sería un campo dentro 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):
    pregunta = variables['Pregunta']
    llm = ChatOpenAI(
        nombre_modelo='gpt-3.5-turbo',
        clave_api_openai='<CLAVE API USUARIO>'
    )
    cadena_api = APIChain.from_llm_and_api_docs(
        llm, open_meteo_docs.OPEN_METEO_DOCS, verbose=False
    )
    resultado = cadena_api.run(pregunta)
    return resultado

weather_reporter.json

{
  "version": "0.1",
  "metadata": {
    "tool_name": "Reportero del tiempo",
    "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['Pregunta']\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": "Aproveche la API de Open-Meteo para obtener detalles del clima en tiempo real",
    "usage_notes": "Ingrese su pregunta relacionada con el clima en el campo proporcionado",
    "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": "Pregunta",
        "description": "Pregunte sobre las condiciones climáticas",
        "default": "¿Cuál es la temperatura actual en Múnich, Alemania, expresada en grados Celsius?"
      }
    ],
    "expected_output": {
      "type": "text"
    },
    "avatar_type": "base64",
    "timestamp": "2023-07-13T10:00:00Z",
    "requirements": "openai>=0.27.4\nlangchain>=0.0.229",
    "avatar": ""
  }
}

Limitaciones

AWS Lambda sólo permite que una función se ejecute durante un máximo de 15 minutos y 10GB de RAM. Por lo tanto, las herramientas deben terminar su ejecución dentro de esta restricción.

Última actualización