agent-framework-claude は、Claude Agent SDK を ClaudeAgentとしてラップします。 Claude のマネージド エージェント ランタイム、セッション、アクセス許可モデル、組み込みツール、MCP サポートを使用して、Agent Framework の実行インターフェイスとストリーミング インターフェイスを公開します。
この統合は、アプリケーション所有の Agent Framework エージェントの背後にあるモデルとして Claude を使用するAnthropic モデル プロバイダーとは異なります。
前提条件
- Claude Code CLI をインストールして構成します。
- クロード モデルとアクセス許可モードを選択します。
- ファイルまたはシェル ツールを有効にする場合は、制約付き作業ディレクトリでエージェントを実行します。
パッケージをインストールする
pip install agent-framework-claude --pre
Configuration
| Variable | Purpose |
|---|---|
CLAUDE_AGENT_MODEL |
マネージド ランタイムによって使用されるクロード モデル。 |
CLAUDE_AGENT_PERMISSION_MODE |
組み込みツールと MCP ツールの既定のアクセス許可モード。 |
CLAUDE_AGENT_CLI_PATH |
Claude Code CLI への省略可能な明示的パス。 |
CLAUDE_AGENT_CWD |
ランタイムに公開されている作業ディレクトリ。 |
CLAUDE_AGENT_MAX_TURNS |
任意のエージェントのターンの最大数 |
CLAUDE_AGENT_MAX_BUDGET_USD |
1 回の実行にかかる任意のコスト予算。 |
max_turnsとmax_budget_usdの明示的なゼロ値は、Claude Agent SDK に転送されます。
ClaudeAgentを作成する
ClaudeAgent では、通常の実行とストリーミングの実行がサポートされ、Agent Framework 関数ツールを公開できます。
async def non_streaming_example() -> None:
"""Example of non-streaming response."""
print("=== Non-streaming Example ===")
agent = ClaudeAgent(
name="BasicAgent",
instructions="You are a helpful assistant. Keep responses concise.",
tools=[get_weather],
)
async with agent:
query = "What's the weather in Seattle?"
print(f"User: {query}")
result = await agent.run(query)
print(f"Agent: {result.text}\n")
async def streaming_example() -> None:
"""Example of streaming response."""
print("=== Streaming Example ===")
agent = ClaudeAgent(
name="StreamingAgent",
instructions="You are a helpful assistant.",
tools=[get_weather],
)
async with agent:
query = "What's the weather in Paris?"
print(f"User: {query}")
print("Agent: ", end="", flush=True)
async for chunk in agent.run(query, stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print("\n")
その他のサンプルの例を次に示します。
- Claude の搭載ファイルおよびシェル ツール。
- 対話型のアクセス許可の処理。
- ローカルおよびリモートの MCP サーバー。
- セッションの永続化と再開。
- Claude エージェント間で前のメッセージを渡すシーケンシャル ワークフロー。
- URL フェッチと複数のアクセス許可規則。
ClaudeAgentは、複数のメッセージを受信すると、メッセージを会話履歴としてフレーム化し、各メッセージにロール別のラベルを付ける 1 つのプロンプトを送信します。 この方法では、エージェントのハンドオフ中にロールの境界が保持されますが、ネイティブの Claude マルチロール履歴を再生したり、Claude セッションを共有したりすることはありません。 1 人のユーザー メッセージは変更されません。
アクセス許可に関する考慮事項
- タスクをサポートする最小制限の Claude Agent SDK アクセス許可モードから開始します。
- シェル、ファイル、ネットワーク、またはその他の副作用操作に対して明示的な承認が必要です。
- エージェント作業ディレクトリ内の環境変数または読み取り可能なファイルを介して資格情報を公開しないでください。