JSON Format for Smarte Værktøjer

En bærbar måde at dele SkyDeck.AI smarte værktøjer skrevet i Python-kode

Overordnet

For at oprette et smart værktøj på SkyDeck.AI skal du uploade et sæt filer i henhold til de specifikationer, der er nævnt i sektionen om filstruktur. Når de er uploadet, vil vores platform udføre den indledende opsætning, hvilket kan tage et par minutter. Derefter vil værktøjet være tilgængeligt i GenStudio Workspace.

Filstruktur

<tool_name>.json

Værktøjets adfærd konfigureres også gennem en JSON-fil. Her er en kort oversigt over de vigtigste felter i konfigurationen:

  • version: Den nuværende version af værktøjet.

  • tool_name: Navnet på værktøjet. Dette navn skal være unikt i dit arbejdsområde.

  • tool_code: Indeholder den Python-kode, der skal udføres. Flere detaljer om dette felt vil være i næste sektion.

  • description: En kort beskrivelse af, hvad værktøjet gør.

  • usage_notes: Instruktioner om, hvordan man bruger værktøjet.

  • model_version: Angiv de modeller, der må bruges til opfølgende spørgsmål. For at angive alle modeller, brug ["gpt-4", "gpt-3.5", "claude", "chat-bison"].

  • creator: Oplysninger om skaberen af værktøjet, herunder navn, e-mail og organisation.

  • variables: Et array af variabler, der bruges af værktøjet. Hver variabel har et navn, en beskrivelse og en standardværdi. Rækkefølgen af variabler i UI følger rækkefølgen i dette array.

  • expected_output: Den type output, der produceres af værktøjet. I udviklingsfasen skal værdien altid være tekst.

  • avatar_type: Formatet af avataren, der bruges i værktøjets UI.

  • timestamp: Dato og tidspunkt for, hvornår værktøjet sidst blev opdateret.

  • requirements: angiver de nødvendige pakker for at køre scriptet i tool_code.

  • avatar: strengen, der repræsenterer logoet for dette værktøj

tool_code konvention:

Dette script skitserer funktionen af dit værktøj. Hovedkomponenten i dette script er execute funktionen, som har følgende krav:

  • Funktionen skal have en enkelt inputparameter kaldet variables, som er et ordbog. Hver nøgle i denne ordbog svarer til et felt, som brugeren ville indtaste i dit værktøj.

  • Funktionen skal returnere en streng, som vil blive vist som svaret på GenStudio UI.

Eksempelværktøjer

Billedgenerering ved hjælp af DALL-E 2

Beskrivelse:

Dette værktøj accepterer en billedbeskrivelse som input og genererer en tilsvarende URL til billedet. Outputtet inkluderer URL'en sammen med en udløbsnote. Værktøjet fungerer ved at sende forespørgslen til OpenAI DALL-E API'en og hente svaret.

Input:

  • Beskrivelse: Billedbeskrivelse, f.eks. "En hvid, pelsklædt kat"

Output:

  • En besked med den genererede URL til billedet sammen med udløbsnoten.

Python-script (som ville være et felt inde i 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"Her er linket til dit billede:{image_url}. Linket udløber om 1 time."

image_generation.json

{
    "version": "0.1",
    "metadata": {
        "tool_name": "Billedgenerering",
        "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\"Her er linket til dit billede:{image_url}. Linket vil udløbe om 1 time.\"\n",
        "description": "Genereret et billede baseret på beskrivelsen med OpenAI's DALL-E model.",
        "usage_notes": "Beskriv billedet i detaljer og læg det i beskrivelsesfeltet. Et URL til billedet vil blive returneret. Levetiden for URL'en er omkring 1 time, så sørg for at downloade det, før det udløber.",
        "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": "Billedbeskrivelse",
                "default": "en hvid siamesisk kat"
            }
        ],
        "expected_output": {
            "type": "text"
        },
        "avatar_type": "base64",
        "timestamp": "2023-05-23T10:00:00Z",
        "requirements": "openai>=0.27.4",
        "avatar": ""
    }
}

Real-time vejrrapport med Open-Meteo API

Beskrivelse:

Dette værktøj udnytter Open-Meteo API til at levere realtidsvejrinformation baseret på brugernes spørgsmål. Ved at stille et spørgsmål om vejret, såsom temperatur, nedbør eller vindforhold, henter værktøjet de mest relevante og opdaterede data.

Funktionen af dette værktøj er afhængig af APIChain - en funktion fra LangChain-biblioteket - for at få adgang til Open-Meteo API-dokumentationen. Dette gør det muligt for værktøjet at lære, hvordan man foretager de korrekte API-opkald og henter de nødvendige oplysninger problemfrit.

Input:

  • Spørgsmål: Stil et specifikt spørgsmål om vejret, f.eks. "Hvad er den nuværende temperatur i New York City?"

Output:

  • Et svar, der giver de ønskede vejroplysninger.

Python-script (som ville være et felt inde i 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

Bemærk, at Langchain nu er integreret med Rememberizer. Se https://python.langchain.com/docs/integrations/retrievers/rememberizer/

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": "Udnyt Open-Meteo API'en til at hente realtids vejrinformationer",
    "usage_notes": "Indtast dit vejrelaterede spørgsmål i det angivne felt",
    "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": "Spørg om vejrforskningsforholdene",
        "default": "Hvad er den aktuelle temperatur i München, Tyskland, udtrykt i grader Celsius?"
      }
    ],
    "expected_output": {
      "type": "text"
    },
    "avatar_type": "base64",
    "timestamp": "2023-07-13T10:00:00Z",
    "requirements": "openai>=0.27.4\nlangchain>=0.0.229",
    "avatar": ""
  }
}

Begrænsninger

AWS Lambda tillader kun en funktion at køre i maksimalt 15 minutter og 10GB RAM. Derfor bør værktøjerne afslutte deres udførelse inden for denne begrænsning.

Last updated