Formato JSON para Ferramentas Inteligentes

Uma maneira portátil de compartilhar ferramentas inteligentes SkyDeck.AI escritas em código Python

Visão Geral

Para criar uma ferramenta inteligente no SkyDeck.AI, você precisa fazer upload de um conjunto de arquivos de acordo com as especificações mencionadas na seção Estrutura de Arquivo. Depois de enviado, nossa plataforma executará a configuração inicial, que pode levar alguns minutos. Posteriormente, a ferramenta estará disponível no GenStudio Workspace.

Estrutura de Arquivo

<nome_da_ferramenta>.json

O comportamento da ferramenta também é configurado através de um arquivo JSON. Aqui está uma visão geral dos principais campos na configuração:

  • version: A versão atual da ferramenta.

  • tool_name: O nome da ferramenta. Este nome deve ser único em seu espaço de trabalho.

  • tool_code: Contém o código Python a ser executado. Mais detalhes sobre este campo estarão na próxima seção.

  • description: Uma breve descrição do que a ferramenta faz.

  • usage_notes: Instruções sobre como usar a ferramenta.

  • model_version: Especifique os modelos que são permitidos para usar para perguntas de acompanhamento. Para especificar todos os modelos, use ["gpt-4", "gpt-3.5", "claude", "chat-bison"].

  • creator: Informações sobre o criador da ferramenta, incluindo nome, email e organização.

  • variables: Uma matriz de variáveis usadas pela ferramenta. Cada variável tem um nome, descrição e valor padrão. A ordem das variáveis na interface do usuário segue a ordem nesta matriz.

  • expected_output: O tipo de saída produzida pela ferramenta. Durante a fase de desenvolvimento, o valor deve ser sempre texto.

  • avatar_type: O formato do avatar usado na interface do usuário da ferramenta.

  • timestamp: A data e hora em que a ferramenta foi atualizada pela última vez.

  • requirements: especifica os pacotes necessários para executar o script em tool_code.

  • avatar: a string que representa o logotipo desta ferramenta

convenção tool_code:

Este script delineia o funcionamento da sua ferramenta. O componente principal deste script é a função execute, que possui os seguintes requisitos:

  • A função deve ter um único parâmetro de entrada chamado variables, que é um dicionário. Cada chave neste dicionário corresponde a um campo que o usuário inseriria em sua ferramenta.

  • A função deve retornar uma string, que será exibida como a resposta na interface do usuário do GenStudio.

Ferramentas de Exemplo

Geração de imagem usando DALL-E 2

Descrição:

Esta ferramenta aceita uma descrição de imagem como entrada e gera uma URL correspondente para a imagem. A saída inclui a URL junto com uma nota de expiração. A ferramenta funciona enviando a consulta para a API OpenAI DALL-E e recuperando a resposta.

Entrada:

  • Descrição: descrição da imagem, por exemplo, "Um gato peludo branco"

Saída:

  • Uma mensagem com a URL gerada para a imagem junto com a nota de expiração.

Script Python (que seria um campo dentro de image_generation.json):

import openai
def execute(variables):
    openai.api_key = '<CHAVE API USUÁRIO>'
    description = variables['Descrição']
    response = openai.Image.create(
        prompt=description,
        n=1,
        size="1024x1024"
    )
    image_url = response['data'][0]['url']
    return f"Aqui está o link para a sua imagem:{image_url}. O link expirará em 1 hora."

image_generation.json

{
    "version": "0.1",
    "metadata": {
        "tool_name": "Geração de imagens",
        "tool_code": "import openai\n\ndef execute(variables):\n openai.api_key = ''\n description = variables['Descrição']\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\"Aqui está o link para sua imagem:{image_url}. O link expira em 1 hora.\"\n",
        "description": "Gerou uma imagem baseada na descrição com o modelo DALL-E da OpenAI.",
        "usage_notes": "Descreva a imagem em detalhe e coloque na descrição. A URL da imagem será retornada. A vida útil da URL é cerca de 1 hora, portanto, certifique-se de baixá-la antes de expirar",
        "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": "Descrição",
                "description": "Descrição da imagem",
                "default": "um gato siamês branco"
            }
        ],
        "expected_output": {
            "type": "text"
        },
        "avatar_type": "base64",
        "timestamp": "2023-05-23T10:00:00Z",
        "requirements": "openai>=0.27.4",
        "avatar": ""
    }
}

Relatório climático em tempo real com Open-Meteo API

Descrição:

Esta ferramenta utiliza a API Open-Meteo para fornecer informações climáticas em tempo real com base nas perguntas dos usuários. Ao fazer uma pergunta sobre o clima, como temperatura, precipitação ou condições do vento, a ferramenta recupera os dados mais relevantes e atualizados.

O funcionamento desta ferramenta depende do APIChain - um recurso da biblioteca LangChain - para acessar a documentação da API Open-Meteo. Isso permite que a ferramenta aprenda a fazer as chamadas de API corretas e recupere as informações necessárias sem problemas.

Entrada:

  • Pergunta: Faça uma pergunta específica sobre o tempo, por exemplo, "Qual é a temperatura atual em Nova York?"

Saída:

  • Uma resposta fornecendo as informações climáticas solicitadas.

Script Python (que seria um 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):
    question = variables['Question']
    llm = ChatOpenAI(
        model_name='gpt-3.5-turbo',
        openai_api_key='<CHAVE API DO USUÁRIO>'
    )
    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": "Relatório do Tempo",
    "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": "Aproveita a API Open-Meteo para obter detalhes do tempo em tempo real",
    "usage_notes": "Digite sua pergunta relacionada ao tempo no campo fornecido",
    "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": "Questão",
        "description": "Pergunte sobre as condições climáticas",
        "default": "Qual é a temperatura atual em Munique, Alemanha, expressa em graus Celsius?"
      }
    ],
    "expected_output": {
      "type": "text"
    },
    "avatar_type": "base64",
    "timestamp": "2023-07-13T10:00:00Z",
    "requirements": "openai>=0.27.4\nlangchain>=0.0.229",
    "avatar": ""
  }
}

Limitações

A AWS Lambda apenas permite que uma função seja executada por no máximo 15 minutos e 10GB de RAM. Portanto, as ferramentas devem terminar sua execução dentro dessa restrição.

Last updated