Overview
MongoDB Atlas Agent Engine SDK は、ディープ エージェントを構築するための開発者向けのインターフェースを提供します。ディープ エージェントは、ファイルシステム操作、 シェル実行、および複数段階の理由付けが可能なAIエージェントであり、すべての入力と出力はプラットフォームの 監査されたセキュリティレイヤーを通じてルーティングされます。
Tip
ディープ エージェントの詳細については、 Lgachein ドキュメントの「 ディープ エージェントの概要 」を参照してください。
エージェント作成者は、次の 3 つのプライマリ SDK コンポーネントと対話します。
ツール サンドボックスバックエンド: すべてのツール呼び出しをプラットフォームの安全な実行パスでルーティングするバックエンド。
前提条件
ディープエージェントを構築する 前に、deepagents の依存関係を pyproject.tomlファイルに追加し、agent.yamlファイルでディープエージェント機能を有効にする必要があります。
依存関係の更新
ディープエージェントを作成するには、deepagentsパッケージをプロジェクトの pyproject.tomlファイルに追加します。
dependencies = [ "deepagents==0.5.3", ... # other dependencies ]
deepagentsパッケージは、 agent-engine-sdk-langgraphパッケージのオプションの依存関係です。 SDK は、アプリがApp.deep_agent() 関数を呼び出すときにのみ deepagentsパッケージをインポートするため、プロジェクトで明示的に宣言する必要があります。
機能フラグを更新
次のフラグを agent.yamlファイルに追加して、agent.yaml でディープエージェント機能を有効にします。
features: deep_agent: true ... # other features
このフラグは、ディープ エージェントが依存する組み込みのファイルシステムとシェルハンドラーを登録するようにツール サンドボックスに指示します。
注意
TypeScript エージェントは、同等の app.deepAgent() ファクトリー メソッドを使用してディープ エージェントを構築します。これには、同じ features.deep_agent: true 設定が必要です。このページの例ではPythonを使用しています。
empty_ Agent() メソッド
App.deep_agent() メソッドは、エージェント作成者のプライマリ エントリ点です。これにより、プラットフォームの gRPC および SSEストリーミングパス、 MongoDBベースのチェックポイント、およびサンドボックス ツール実行用の AgentEngineToolSandboxBackendクラスと統合する、コンパイル済み LgDBグラフが作成されます。
メソッドは、次のタスクを自動的に実行します。
デフォルトのサンドボックスとして
AgentEngineToolSandboxBackendクラスを使用します最上位の LM とすべての
SubAgentモデルをSecureWrappedLLMクラスでラップし、プラットフォームの監査された LM パスを強制します永続的な実行状態のためにMongoDBチェックポイントをスレッド化します
既存の gRPC/SSEストリーミングパスと
POST /api/v1/executions/{execution_id}/resumeAPIリクエストと互換性のあるコンパイルされたグラフを返します
パラメーター
App.deep_agent() メソッドは次のパラメーターを受け入れます:
Parameter | タイプ | 必須 | 説明 |
|---|---|---|---|
| LLM | はい | エージェントのプライマリモデルとして使用する言語インスタンス。プラットフォームはこれを |
| list | No | エージェントで使用できる Lgachein 互換のツール オブジェクトのリスト。 LgChuin ツールの詳細については、 Latchin ドキュメントを参照してください。 |
| list | No |
|
| list[str] | No | |
| string | No | ディープエージェントのカスタム システム手順。省略した場合、エージェントは |
| list | No | SDK のデフォルトの割り込み回復と耐久性のあるネスト ミドルウェアの後に実行される追加のミドルウェア。 |
| any | No | 状態永続性のための LingGraph チェックポイント。デフォルトは |
| any | No | 特権やその他の共有データに使用される LanguageGraph ストア。 |
| any | No | ファイルシステムとシェル操作のバックエンド。デフォルトは |
特権エージェントの作成
特権を呼び出すディープエージェントを作成するには、特権ディレクトリのパスのリストを App.deep_agent() メソッドの skills パラメーターに渡します。
次の例では、 @app.entrypoint宣言された関数を変更して、単一のツールと スキームディレクトリ を持つディープエージェントを作成します。
from agent_engine_sdk_langgraph import App app = App() def build_agent(): return app.deep_agent( llm=my_llm, tools=[my_tool], subagents=[], skills=["skills/security-review"], )
重要
LMインスタンスを app.deep_agent() メソッドに渡す前に、app.llm() メソッドでラップしないでください。 deep_agent() メソッドは、SecureWrappedLLMクラスの LM を内部的にラップします。 app.llm() メソッドを呼び出すと、まず __default__ LM ID が2 回登録され、エージェントの起動は失敗します。
セキュリティ検証
初期化時に、App.deep_agent() メソッドは次のチェックを実行し、いずれかが失敗した場合はエラーを発生させます。
SubAgentクラスで string モデル参照を確認します。各SubAgent.model属性は、string ではなく LMインスタンスである必要があります。 string モデル名はSecureWrappedLLMクラスをバイパスし、プラットフォームはエージェントを拒否します。このメソッドは最大 10 レベルのネストをチェックします。手動指定された
backendパラメータを確認します。 プラットフォームはサンドボックスを所有し、AgentEngineToolSandboxBackendクラスをバックエンドとして強制します。カスタムバックエンドを指定すると、プラットフォームのサンドボックスがバイパスされ、プラットフォームはバックエンド を拒否します。
注意
App.deep_agent() メソッドは、Lgachein deepagents ライブラリがエージェントグラフをコンパイルする前に、前述のチェックを実行します。いずれかのチェックに失敗した場合、エージェントは起動しません。
これらのチェックに加えて、App.deep_agent() メソッドは、deepagents ライブラリがグラフをコンパイルする前に、llm パラメータと SecureWrappedLLMクラスのすべての SubAgent.model 属性に渡される LMインスタンスを自動的にラップします。
スキルマニフェスト
スキームは、 ディープエージェントに提供する再利用可能な命令セットです。各特権は独自のサブディレクトリに存在し、YAML フロントマ ターを持つ SKILL.mdファイルによって記述されます。プラットフォームは、エージェントのスタートアップにフロントマッパーを読み取り、ツールを検証し、LM に公開します。
能力ディレクトリ構造
特権は次のディレクトリ構造内にあります。ディレクトリ名はフロントマッパーの nameフィールドと一致します。
<workspace-directory>/ └── skills/ └── <skill-name>/ └── SKILL.md
skills パラメータに渡されるルール パスは、エージェントの ワークスペースディレクトリに相対的です。これは、agent.yamlファイルを含むディレクトリです。
SR.md 形式
有効な SKILL.mdファイルはYAML フロントマで始まる必要があります。次の例は、有効な SKILL.mdファイルのテンプレートです。
name: <skill-name> description: <one-sentence description for LLM discovery> # Skill Title Detailed instructions or reference material for the agent...
YAML フロントマに次のフィールドを含める必要があります。
フィールド | 必須 | 説明 |
|---|---|---|
| はい | 特権の名前。親ディレクトリ名と完全に一致する必要があります。 |
| はい | LM はこの短い説明を使用して、特権を呼び出すタイミングを決定します。 |
注意
SKILL.mdファイルには有効な UTF-8 文字のみが含まれている必要があります。プラットフォームによって UTF-8 として読み取れないファイルは、クラッシュを発生させることなくエージェントのスタートアップ時にスキップされます。
エージェントへの特権の渡し
次の例では、ツールディレクトリパスのリストを App.deep_agent() メソッドに渡します。
agent = app.deep_agent( llm=my_llm, tools=[], skills=["skills/security-review", "skills/style-guide"], )
ツール サンドボックス バックエンド
AgentEngineToolSandboxBackendクラスはSandboxBackendProtocolプロトコルを実装します。バックエンドは、SecureToolWrapperクラスを使用して、ディープエージェントグラフからのすべてのファイルシステムとシェルツールの呼び出しをプラットフォームのツール サンドボックス ハンドラーを介してルーティングします。 App.deep_agent() メソッドはそれを自動的にインスタンス化するため、AgentEngineToolSandboxBackendクラスを直接インスタンス化したり構成したりする必要はありません。
注意
AgentEngineToolSandboxBackendクラスは任意の依存関係であり、パッケージルートから再エクスポートされることはありません。直接参照必要がある場合は、明示的にインポートします。次の例は、クラスをインポートする方法を示しています。
from agent_engine_sdk_langgraph.backends.tool_sandbox import AgentEngineToolSandboxBackend
サポートされている操作
AgentEngineToolSandboxBackendクラス操作は実行時にエージェントによって自動的に呼び出され、エージェント作成者によって直接呼び出されることはありません。 AgentEngineToolSandboxBackendクラスは次の操作をサポートしており、それぞれが対応する filesystem_* または shell_execute ツールとして LM に公開されます。
操作 | 説明 |
|---|---|
| 指定されたパスにあるファイルとディレクトリを一覧表示 |
| ファイルの内容を読み取ります |
| コンテンツをファイルに書込み |
| 既存のファイルに編集を適用します |
| グローバル パターンに一致するファイルを検索 |
| ファイル内のパターンを検索します |
| サンドボックスでシェルコマンドを実行します |
| サンドボックスから呼び出し元にファイルをダウンロード |
Error Handling
バックエンドはすべてのエラーをエージェントグラフに表示する前にクラス化するため、エージェントは操作を再試行するかどうかを決定できます 。次の表は、利用可能なエラー分類とその原因を示しています。
分類 | 原因の例 |
|---|---|
再試行可能 |
|
再試行不可 |
|
プラットフォームは、エージェントに表示される前に、すべてのエラーメッセージからすべての内部ワークスペース パスを削除します。
Filesystem Sandbox
ディープ エージェントはサンドボックス化されたファイルシステム内で動作します。サンドボックスには次のレイヤーが含まれています。
書き込み可能なワークスペース(
WORKSPACE_DIR):/tmp/agent-workspaceデフォルトは ディレクトリです。エージェントサンドボックス セッション中、サンドボックスはエージェントの パスへのアクセスを制限し、同時セッションが分離されるようにします。生成されたファイルには、相対パスまたはWORKSPACE_DIR/.sessions/<session-hash>//tmpディレクトリ配下パスを使用します。読み取り専用リソースルート(
READONLY_RESOURCE_ROOTS):AGENTIC_AGENT_WORKDIR環境変数とskills/ディレクトリから入力されます。このレイヤーでは、エージェントはセッションごとのワークスペース内と外のSKILL.mdファイルを読み取ることができるため、オンデマンドでスキップ コンテンツを読み込むことができます。
重要
WORKSPACE_DIR 環境変数をエージェントソースディレクトリ(/appディレクトリなど)に設定しないでください。 WORKSPACE_DIR 変数をエージェントのソースディレクトリに設定すると、エージェントは実行時に特権ファイルにアクセスできなくなり、Path escapes workspace sandbox エラーがスローされます。
ワークスペースディレクトリを変更するには、代わりに AGENTIC_AGENT_WORKDIR 環境変数を設定します。
# .env AGENTIC_AGENT_WORKDIR=/app # Do NOT add: WORKSPACE_DIR=/app