概要
Jinba Toolboxは、隔離されたSandbox環境でToolコードを実行します。Sandboxシステムはプロバイダー非依存のアーキテクチャで設計されています。共有インターフェースパッケージ(@jinba-toolbox/sandbox-core)がコントラクトを定義し、個別のプロバイダーパッケージ(sandbox-e2b、sandbox-daytona)がそれを実装します。
この分離により、ビジネスロジックを変更することなく、プロバイダーの切り替えや新規追加が可能になります。
アーキテクチャ
コアインターフェース
@jinba-toolbox/sandbox-core パッケージにはインターフェースと型のみが含まれ、具体的な実装はありません。すべてのプロバイダーはこれらのコントラクトに準拠する必要があります。
SandboxProvider
Sandboxインスタンスを作成・再開するファクトリ:SandboxInstance
コード実行、シェルコマンド、ファイルシステムアクセスを備えた実行中のSandbox環境:SandboxCommands
Sandbox内でのシェルコマンド実行:SandboxFilesystem
Sandbox内でのファイル操作:主要な型
E2Bプロバイダー
@jinba-toolbox/sandbox-e2b パッケージは、E2B Code Interpreter SDKを使用してSandboxインターフェースを実装しています。
設定
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
apiKey | string | (必須) | E2B APIキー |
templateId | string | undefined | カスタムSandboxテンプレートID |
timeoutMs | number | 300000 | デフォルトタイムアウト(5分) |
動作の仕組み
- Sandboxの作成: プロバイダーがE2B Code Interpreter Sandboxを作成します。オプションでカスタムテンプレートを使用できます。
- パッケージのインストール: パッケージが指定されている場合、Sandbox内で
pip install(Python)またはnpm install(TypeScript)が実行されます。 - コードの実行: ToolコードはE2Bの
runCodeAPIを介してJupyterライクなカーネルで実行されます。 - ライフサイクル: Sandboxは一時停止、再開、または終了できます。
TypeScriptに関する注意
E2BのCode Interpreterは、ESMファイルインポートをサポートしないJupyterカーネルでTypeScriptを実行します。このため、TypeScript Toolのコードはファイルからの読み込みではなくインライン化されます。Python Toolは通常通りファイルシステムインポートを使用できます。Daytonaプロバイダー
@jinba-toolbox/sandbox-daytona パッケージは、Daytona SDKを使用してSandboxインターフェースを実装しています。
設定
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
apiKey | string | (必須) | Daytona APIキー |
apiUrl | string | https://app.daytona.io/api | Daytona API URL |
target | string | us | ターゲットリージョン(us または eu) |
timeoutMs | number | 300000 | デフォルトタイムアウト(5分) |
動作の仕組み
- Sandboxの作成: プロバイダーがDaytona SDKを初期化し、指定された言語でSandboxを作成します。
- パッケージのインストール: パッケージが指定されている場合、プロバイダーがSandbox内で
pip installまたはnpm installを実行します。 - コードの実行: ToolコードはDaytonaの
process.codeRunAPIを介して実行されます。 - ライフサイクル: Sandboxは起動、停止、削除が可能です。
ToolSetのSandbox設定
ToolSetを作成する際に、使用するSandboxプロバイダーと設定を指定します:SandboxConfig:
エラーハンドリング
すべてのSandboxパッケージは統一されたSandboxError 型を使用します:
新しいプロバイダーの追加
アーキテクチャは拡張性を考慮して設計されています。新しいSandboxプロバイダーを追加するには:関連ドキュメント
- REST API — ToolSetの管理とToolの実行に関するエンドポイント
- バージョニングと公開 — VersionにSandbox設定がどのように凍結されるか
- セキュリティとアクセス制御 — 隔離とテナント境界
Jinba Toolbox