Formato JSON per gli Strumenti intelligenti¶
Panoramica generale ¶
Per creare uno strumento intelligente su SkyDeck.AI, è necessario caricare un insieme di file secondo le specifiche indicate nella sezione Struttura dei file. Una volta caricati, la nostra piattaforma eseguirà la configurazione iniziale, che potrebbe richiedere alcuni minuti. Successivamente, lo strumento sarà disponibile nello Spazio di lavoro GenStudio.
Struttura dei file ¶
\.json ¶
Il comportamento dello strumento viene configurato anche tramite un file JSON. Di seguito è riportata una breve panoramica dei campi chiave della configurazione:
- version: La versione corrente dello strumento.
- tool_name: Il nome dello strumento. Questo nome deve essere univoco nel proprio spazio di lavoro.
- tool_code: Contiene il codice Python da eseguire. Ulteriori dettagli su questo campo sono disponibili nella sezione successiva.
- description: Una breve descrizione di ciò che fa lo strumento.
- usage_notes: Istruzioni su come utilizzare lo strumento.
- model_version: Specifica i modelli autorizzati per le domande di follow-up. Per specificare tutti i modelli, utilizzare ["gpt-4", "gpt-3.5", "claude", "chat-bison"].
- creator: Informazioni sul creatore dello strumento, inclusi nome, e-mail e organizzazione.
- variables: Un array di variabili utilizzate dallo strumento. Ogni variabile ha un nome, una descrizione e un valore predefinito. L'ordine delle variabili nell'interfaccia utente segue l'ordine di questo array.
- expected_output: Il tipo di output prodotto dallo strumento. Durante la fase di sviluppo, il valore deve essere sempre testo.
- avatar_type: Il formato dell'avatar utilizzato nell'interfaccia utente dello strumento.
- timestamp: La data e l'ora dell'ultimo aggiornamento dello strumento.
- requirements: specifica i pacchetti necessari per eseguire lo script in tool_code.
- avatar: la stringa che rappresenta il logo di questo strumento
Convenzione di tool_code: ¶
Questo script descrive il funzionamento dello strumento. Il componente principale di questo script è la funzione execute, che ha i seguenti requisiti:
- La funzione deve avere un unico parametro di input chiamato variables, che è un dizionario. Ogni chiave in questo dizionario corrisponde a un campo che l'utente inserirebbe nel proprio strumento.
- La funzione deve restituire una stringa, che verrà visualizzata come risposta nell'interfaccia utente di GenStudio.
Strumenti di esempio ¶
Generazione di immagini con DALL-E 2 ¶
Descrizione:
Questo strumento accetta una descrizione di immagine come input e genera un URL corrispondente per l'immagine. L'output include l'URL insieme a una nota di scadenza. Lo strumento funziona inviando la query all'API OpenAI DALL-E e recuperando la risposta.
Input:
- Descrizione: Descrizione dell'immagine, ad esempio, "Un gatto bianco e peloso"
Output:
- Un messaggio con l'URL generato per l'immagine insieme alla nota di scadenza.
Script Python (che sarebbe un campo all'interno di image_generation.json): ¶
import openai
def execute(variables):
openai.api_key = '<USER API KEY>'
description = variables['Description']
response = openai.Image.create(
prompt=description,
n=1,
size="1024x1024"
)
image_url = response['data'][0]['url']
return f"Here is the link to your image:{image_url}. The link will expire in 1 hour."
image_generation.json ¶
{
"version": "0.1",
"metadata": {
"tool_name": "Image generation",
"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\"Here is the link to your image:{image_url}. The link will be expired in 1 hour.\"\n",
"description": "Generated an image based on the description with OpenAI's DALL-E model.",
"usage_notes": "Describe the image in detail and put it in the description field. An URL of the image will be returned. The lifetime of the URL is about 1 hour, so make sure to download it before expired",
"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": "Image description",
"default": "a white siamese cat"
}
],
"expected_output": {
"type": "text"
},
"avatar_type": "base64",
"timestamp": "2023-05-23T10:00:00Z",
"requirements": "openai>=0.27.4",
"avatar": ""
}
}
Report meteo in tempo reale con l'API Open-Meteo ¶
Descrizione:
Questo strumento sfrutta l'API Open-Meteo per fornire informazioni meteo in tempo reale in base alle domande degli utenti. Ponendo una domanda sul tempo, come temperatura, precipitazioni o condizioni del vento, lo strumento recupera i dati più rilevanti e aggiornati.
Il funzionamento di questo strumento si basa su APIChain — una funzionalità della libreria LangChain — per accedere alla documentazione dell'API Open-Meteo. Ciò consente allo strumento di apprendere come effettuare le chiamate API corrette e recuperare le informazioni richieste in modo trasparente.
Input:
- Domanda: Porre una domanda specifica sul meteo, ad esempio, "Qual è la temperatura attuale a New York?"
Output:
- Una risposta che fornisce le informazioni meteorologiche richieste.
Script Python (che sarebbe un campo all'interno di 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='<USER API KEY>'
)
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": "Weather Reporter",
"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": "Leverage the Open-Meteo API to retrieve real-time weather details",
"usage_notes": "Enter your weather-related question in the provided field",
"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": "Inquire about the weather conditions",
"default": "What is the current temperature in Munich, Germany, expressed in degrees Celsius?"
}
],
"expected_output": {
"type": "text"
},
"avatar_type": "base64",
"timestamp": "2023-07-13T10:00:00Z",
"requirements": "openai>=0.27.4\nlangchain>=0.0.229",
"avatar": ""
}
}
Limitazioni ¶
AWS Lambda consente a una funzione di eseguire per un massimo di 15 minuti e 10 GB di RAM. Pertanto, gli strumenti devono completare la propria esecuzione entro questo limite.