コンテンツにスキップ

スマートツールのJSONフォーマット

概要

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

ファイル構造

\<ツール名>.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: このツールのロゴを表す文字列

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 = '<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": ""
    }
}

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='<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": ""
  }
}

制限事項

AWS Lambdaでは、関数の実行時間は最大15分、RAMは最大10GBに制限されています。そのため、ツールはこの制約内で実行を完了する必要があります。