スマートツール用の JSON 形式
Pythonコードで書かれたSkyDeck.AIスマートツールを共有するためのポータブルな方法
概要
SkyDeck.AIでスマートツールを作成するには、ファイル構造セクションで述べた仕様に従って、一連のファイルをアップロードする必要があります。アップロード後、当社のプラットフォームは初期設定を行い、これには数分かかるかもしれません。その後、ツールはGenStudioワークスペースで利用可能になります。
ファイル構造
<tool_name>.json
ツールの動作はJSONファイルで設定します。ここでは、設定の主な項目を簡単に紹介します:
tool_name:ツールの名前。この名前はあなたのワークスペース内で一意であるべきです。
tool_code:実行されるPythonコードを含みます。このフィールドの詳細は次のセクションで説明します。
description:ツールが何をするかの簡単な説明。
usage_notes:ツールの使用方法についての説明。
model_version:続きの質問に使用可能なモデルを指定します。すべてのモデルを指定する場合は、_["gpt-4", "gpt-3.5", "claude", "chat-bison"]_を使用します。
creator:ツールの作者に関する情報、名前、メール、組織など。
variables:ツールで使用される変数の配列。各変数には名前、説明、デフォルト値があります。UIでの変数の順序は、この配列の順序に従います。
expected_output:ツールが生成する出力のタイプ。開発段階では、この値は常にテキストであるべきです。
avatar_type:ツールのUIで使用されるアバターのフォーマット。
timestamp:ツールが最後に更新された日時。
requirements:tool_codeのスクリプトを実行するために必要なパッケージを指定します。
ツール_コード規約:
このスクリプトは、ツールの動作を概説しています。このスクリプトの主要なコンポーネントは_execute_関数で、次の要件があります:
この関数には variables と呼ばれる単一の入力パラメータが必要で、これは辞書です。この辞書の各キーは、ユーザーがツールに入力するフィールドに対応します。
関数は文字列を返すべきで、これはGenStudio UI上のレスポンスとして表示されます。
例示ツール
DALL-E 2を使用した画像生成
説明:
このツールは、画像の説明を入力として受け付け、該当する画像のURLを生成します。出力にはURLと有効期限の注意事項が含まれます。このツールは、クエリをOpenAI DALL-E APIに送信し、応答を取得することで機能します。
入力:
出力:
生成された画像のURLと有効期限の注意事項を含むメッセージ
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を利用して、ユーザーが質問した内容に基づくリアルタイムの天候情報を提供します。気温、降水量、風の状況など、天候に関する質問をすると、このツールは最も関連性の高く最新のデータを取得します。
このツールの動作は、LangChainライブラリの一機能であるAPIChainを利用して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='<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": "天候レポーター",
"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['質問']\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": "Open-Meteo 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": "質問",
"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分、RAMを10GBまでに制限しています。したがって、ツールはこれらの制約内で実行を完了させるべきです。