Guides
Import / Export
ToolSetをZIPファイルでインポート・エクスポートする方法
概要
ToolSetのツール群をZIPファイルとしてエクスポート・インポートできます。
ローカルエディタでコードを編集し、ZIPでインポートすることで効率的に開発できます。
ローカル編集 → Import → Draft更新 → Publish → Version作成ZIPファイル構造
エクスポートされるZIPは以下の構造を持ちます。
{toolset-slug}/
├── toolset.yml
└── tools/
└── {tool-slug}/
├── tool.yml
└── main.py (or main.ts)ファイル形式
toolset.yml
ToolSetのメタデータを定義します。
name: My ToolSet
description: ToolSetの説明文
language: python # python or typescript
packages: # 省略可
- name: requests
version: "2.31.0"
- name: beautifulsoup4
env: # 省略可
- key: SLACK_BOT_TOKEN
secret: true # secret はキーのみ、値なし
- key: LOG_LEVEL
value: debug # 非 secret は値も含むslugはZIPのルートディレクトリ名から自動決定されますlanguageによってコードファイルの拡張子が決まります(.py/.ts)packagesはサンドボックスにインストールするパッケージの一覧です。versionを指定するとそのバージョンが使用されます(Python:requests==2.31.0、TypeScript:zod@3.24.0)。省略時は最新バージョンがインストールされますenvはサンドボックスに設定する環境変数の一覧です。secret: trueの変数はエクスポート時にキーのみ含まれ、値は含まれません。インポート時、secretでvalueのないエントリはスキップされます
tool.yml
各ツールのメタデータを定義します。
name: My Tool
description: ツールの説明文
entrypoint: run # 省略時は "run"slugはディレクトリ名から自動決定されますentrypointはデフォルト値(run)の場合、エクスポート時に省略されます
コードファイル
ファイル名はlanguageに応じて main.py または main.ts です。
スキーマはコード内で定義し、インポート時に自動抽出されます。
Python(Pydantic)
from pydantic import BaseModel
class Input(BaseModel):
query: str
class Output(BaseModel):
result: str
def run(input: Input) -> Output:
return Output(result=input.query.upper())TypeScript(Zod)
import { z } from "zod";
export const input = z.object({ query: z.string() });
export const output = z.object({ result: z.string() });
export async function run(input: z.infer<typeof input>) {
return { result: input.query.toUpperCase() };
}Web UIでの操作
Export
- ToolSetの詳細画面で「Export」ボタンをクリック
{slug}.zipがダウンロードされます
Import
- ToolSetの詳細画面で「Import」ボタンをクリック
- ZIPファイルを選択
- 確認画面でファイル名とオプションを確認
- 「Import」をクリックして実行
「Overwrite existing tools with same slug」を有効にすると、同じslugのツールが既に存在する場合に上書きされます。
エラー
ZIPファイルの解析時に以下のエラーが返される場合があります。
| ケース | エラーメッセージ |
|---|---|
toolset.ymlが見つからない | Invalid ZIP: no root directory found |
toolset.ymlに必須フィールドがない | Invalid toolset.yml: name and language are required |
ツールにtool.ymlがない | Invalid ZIP: tool.yml not found for tool "{slug}" |
| ツールにコードファイルがない | Invalid ZIP: main.{ext} not found for tool "{slug}" |