スマートツール用の JSON 形式

Pythonコードで書かれたSkyDeck.AIスマートツールを共有するためのポータブルな方法

概要

SkyDeck.AIでスマートツールを作成するには、ファイル構造セクションで述べた仕様に従って、一連のファイルをアップロードする必要があります。アップロード後、当社のプラットフォームは初期設定を行い、これには数分かかるかもしれません。その後、ツールはGenStudioワークスペースで利用可能になります。

ファイル構造

<tool_name>.json

ツールの動作はJSONファイルで設定します。ここでは、設定の主な項目を簡単に紹介します:

  • version:ツールの現在のバージョン。

  • 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のスクリプトを実行するために必要なパッケージを指定します。

  • avatar:このツールのロゴを表す文字列

ツール_コード規約:

このスクリプトは、ツールの動作を概説しています。このスクリプトの主要なコンポーネントは_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までに制限しています。したがって、ツールはこれらの制約内で実行を完了させるべきです。

最終更新