Monty は、制限されたPythonサブセットの Rust ベースのインタープリターです。
MontyCodeActProvider は、Agent Framework エージェントに 1 つの execute_code ツールを提供し、生成されたコードが型指定された非同期関数として、または call_tool(...)を介してプロバイダー所有のツールを呼び出すことができます。
この統合では、ハードウェア分離サンドボックスではなく、制限付きインタープリターで CodeAct パターンを使用します。
Hyperlight のハイパーバイザーまたは WASM ゲスト依存関係のないクロスプラットフォーム CodeAct ランタイムが必要な場合は、Monty を使用します。
Note
agent-framework-monty はベータ パッケージです。 Monty は、オペレーティング システム、サブプロセス、および直接ネットワーク アクセスを制限しますが、ハードウェアから分離された仮想マシンではありません。
パッケージをインストールする
pip install agent-framework-monty agent-framework-foundry --pre
MontyCodeActProviderを追加する
エージェントに直接登録するのではなく、プロバイダーにホスト ツールを登録します。 モデルは execute_code を確認し、生成されたコードからこれらのツールを呼び出します。
async def main() -> None:
"""Run the provider-owned Monty CodeAct sample."""
# 1. Create the Monty-backed provider and register sandbox tools on it.
codeact = MontyCodeActProvider(
tools=[compute, fetch_data],
approval_mode="never_require",
)
# 2. Create the client and the agent.
agent = Agent(
client=FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["FOUNDRY_MODEL"],
credential=AzureCliCredential(),
),
name="MontyCodeActProviderAgent",
instructions="You are a helpful assistant.",
context_providers=[codeact],
middleware=[log_function_calls],
)
# 3. Run a request that should use execute_code plus provider-owned tools.
query = (
"Fetch all users, find admins, multiply 7*(3*2), and print the users, "
"admins, and multiplication result. Use a single execute_code call. "
"You may call the registered tools directly as typed async functions "
"(`await compute(operation='multiply', a=7, b=6)`) or via "
"`call_tool('compute', ...)`."
)
print(f"{_CYAN}{'=' * 60}")
print("Monty CodeAct provider sample")
print(f"{'=' * 60}{_RESET}")
print(f"{_CYAN}User: {query}{_RESET}")
result = await agent.run(query)
print(f"{_CYAN}Agent: {result.text}{_RESET}")
機能を設定する
MontyCodeActProvider と MontyExecuteCodeTool のサポート:
- ホスト ツールとランタイム ツールの管理
-
never_requireまたはalways_requireのexecute_codeに対する承認 - ワークスペースルートと明示的なファイルマウント
- Monty リソースの制限
- エージェント フレームワークのコンテンツとして読み取り/書き込みマウントから返されるファイル
Monty は送信 URL 許可リストを提供しません。 宛先と入力を検証する狭いホスト ツールを使用してネットワーク アクセスを提供します。
Monty または Hyperlight を選択する
| ランタイム | 次の場合に選択します。 |
|---|---|
| Monty | クロスプラットフォーム実行と制限付きインタープリターで十分です。 |
| Hyperlight | セキュリティ強化されたサンドボックス、ファイルシステムコントロール、またはアウトバウンドドメイン許可リストが必要です。 |