智能工具的 JSON 格式
一種便攜式的方式來分享用 Python 代碼編寫的 SkyDeck.AI 智能工具
總覽
若要在SkyDeck.AI上創建一個智能工具,你需要根據文件結構部分提到的規範上傳一組文件。一旦上傳,我們的平台將進行初始設置,這可能需要幾分鐘的時間。之後,該工具將在GenStudio工作區中可用。
檔案結構
<工具_名稱>.json
工具的行為也是透過 JSON 檔案配置的。以下是配置中關鍵欄位的簡短概述:
tool_name:工具的名稱。此名稱在您的工作區中應該是唯一的。
tool_code:包含要執行的 Python 代碼。關於此欄位的更多詳細信息將在下一節中介紹。
description:闡述工具的功能的簡短描述。
model_version:指定可用於後續問題的模型。要指定所有模型,使用 ["gpt-4", "gpt-3.5", "claude", "chat-bison"]。
creator:關於工具創建者的信息,包括名稱、電子郵件和組織。
variables:工具使用的變量數組。每個變量都有名稱、描述和默認值。UI 中變量的順序按照此數組中的順序。
expected_output:工具生成的輸出類型。在開發階段,值應始終為文本。
avatar_type:在工具使用者介面(UI)中使用的頭像的格式。
requirements:指定運行 tool_code 腳本所需的套件。
工具_代碼慣例:
此腳本概述了您的工具的功能。此腳本的主要組成部分是_execute_函數,該函數有以下要求:
函數應該有一個名為_variables_的單一輸入參數,該參數是一個字典。此字典中的每個鍵都對應於使用者會輸入到您的工具中的一個欄位。
該函數應返回一個字符串,該字符串將在GenStudio UI上顯示為響應。
工具示例
使用 DALL-E 2 生成圖像
描述:
此工具接受圖像描述作為輸入,並生成相對應的圖像 URL。輸出包括 URL 以及過期說明。該工具通過向 OpenAI DALL-E API 發送查詢並獲取響應來運作。
輸入:
輸出:
Python 腳本 (這將是 image_generation.json 中的一個欄位):
import openai
def execute(variables):
openai.api_key = '<用戶 API 金鑰>'
description = variables['Description']
response = openai.Image.create(
prompt=description,
n=1,
size="1024x1024"
)
image_url = response['data'][0]['url']
return f"這是你的圖片連結:{image_url}。此連結將在 1 小時後過期。"
image_generation.json
{
"version": "0.1",
"metadata": {
"tool_name": "圖像生成",
"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\"這是您的圖像的鏈接:{image_url}。該鏈接將在1小時後過期。\"\n",
"description": "利用OpenAI的DALL-E模型,根據說明生成圖像。",
"usage_notes": "詳細描述圖像並將其放在描述欄位中。將返回圖像的URL。URL的生命期約為1小時,所以請確保在過期之前下載它",
"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": "圖像描述",
"default": "一隻白色暹羅貓"
}
],
"expected_output": {
"type": "text"
},
"avatar_type": "base64",
"timestamp": "2023-05-23T10:00:00Z",
"requirements": "openai>=0.27.4",
"avatar": ""
}
}
利用 Open-Meteo API 的實時天氣報告
描述:
此工具使用 Open-Meteo API 來根據用戶的問題提供實時天氣信息。通過問關於天氣的問題,例如溫度,降水或風的情況,該工具可以獲取最相關和最新的數據。
此工具的運作依賴於 APIChain 這個 LangChain 庫的一個特性,用以訪問 Open-Meteo API 的文檔。這使工具能夠學習如何正確調用 API 並無縫取得所需信息。
輸入:
問題: 問一個關於天氣的具體問題,例如,"紐約市目前的溫度是多少?"
輸出:
Python 腳本(將位於 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='<使用者 API 金鑰>'
)
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": "天氣報告器",
"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": "利用開放天氣API取得即時天氣詳情",
"usage_notes": "在提供的欄位中輸入您有關天氣的問題",
"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": "詢問天氣情況",
"default": "德國慕尼黑當前的溫度是多少,以攝氏度表示?"
}
],
"expected_output": {
"type": "text"
},
"avatar_type": "base64",
"timestamp": "2023-07-13T10:00:00Z",
"requirements": "openai>=0.27.4\nlangchain>=0.0.229",
"avatar": ""
}
}
限制
AWS Lambda 僅允許一個功能運行最多15分鐘和10GB的RAM。因此,工具應在此限制內完成執行。