AIエージェント活用実践編Tool Use と MCP — 外部システム連携

Claude Agent SDK の概要

無料公開レッスン / 読了目安 7


学習のねらい

AI エージェントを開発する際、Anthropic が提供する Claude Agent SDK (Software Development Kit、ソフトウェア開発キット) は、Claude の強力な機能を簡単に利用できるように設計されています。 本レッスンでは、この SDK の基本的な構成要素である AgentToolMemory について学び、エージェントを実際に動かす Agent.run() メソッドの使い方を理解します。 これにより、Claude を使ったエージェント開発の基礎を身につけましょう。

Claude Agent SDK とは

Claude Agent SDK は、Python で AI エージェントを構築するためのライブラリです。複雑なプロンプトエンジニアリングや API 連携の細部を抽象化し、開発者がエージェントのロジックに集中できるように設計されています。

主な構成要素は以下の3つです。

  1. Agent (エージェント): LLM (大規模言語モデル) の思考や行動を司る中心的なコンポーネントです。ユーザーからの指示を受け取り、どのようにタスクを遂行するかを計画し、必要に応じてツールを使ったり、記憶を参照したりします。
  2. Tool (ツール): エージェントが外部システムと連携するための機能です。例えば、Web 検索、データベース操作、Slack へのメッセージ送信など、具体的なアクションを実行します。エージェントは、与えられたタスクを達成するためにどのツールを使うべきかを自分で判断します。
  3. Memory (メモリ): エージェントが過去の会話履歴や学習した情報を保持するための仕組みです。これにより、エージェントは文脈を理解し、より一貫性のある対話や行動を取ることができます。

Agent の基本的な使い方

Agent クラスは、エージェントの振る舞いを定義し、実行するための中心的なインターフェースを提供します。

エージェントの初期化

Agent を使うには、まずインスタンスを作成します。このとき、使用する LLM モデル (例: claude-3-opus-20240229) や、必要に応じてツールやシステムプロンプトなどを指定します。

from anthropic_agent import Agent
from anthropic_agent.tool import Tool

# 仮のツールを定義
class HelloTool(Tool):
    def hello(self, name: str) -> str:
        """指定された名前に挨拶を返します。"""
        return f"こんにちは、{name}さん!"

# Agent を初期化
agent = Agent(
    tools=[HelloTool()],  # 使用するツールをリストで渡す
    model="claude-3-opus-20240229",
    system_prompt="あなたは親切なアシスタントです。ユーザーの質問に答えてください。",
)

system_prompt は、エージェントの基本的な役割や性格を設定するための指示です。

Agent.run() でエージェントを実行する

エージェントの対話を開始し、タスクを実行するには Agent.run() メソッドを使います。 このメソッドは、エージェントとユーザーの間でターンベースの対話を進めます。

# エージェントを実行し、ユーザーの入力に応答させる
agent_output = agent.run("こんにちはと挨拶してください。")
print(agent_output.output)

agent_output には、エージェントの最終的な応答が含まれています。 エージェントは内部で、ユーザーの入力、システムプロンプト、利用可能なツール、そして過去の対話履歴に基づいて思考し、最適な応答を生成しようとします。

セッション管理と保存

エージェントとの対話は、多くの場合、一度きりではなく複数回にわたって行われます。この一連の対話を セッション と呼びます。 SDK は、このセッションの履歴を自動的に管理し、エージェントが過去の文脈を覚えていられるようにします。

Agent オブジェクトは、そのインスタンス内に現在のセッションの履歴を保持しています。 もし、アプリケーションを終了してもセッションを継続したい場合は、セッションの履歴を保存し、後でロードする必要があります。

# セッションの履歴を取得
session_history = agent.get_session_history()

# 履歴をファイルなどに保存 (例: JSON形式)
# import json
# with open("session.json", "w") as f:
#     json.dump(session_history, f)

# 後でセッションを再開する場合
# agent_resumed = Agent(
#     tools=[HelloTool()],
#     model="claude-3-opus-20240229",
#     system_prompt="あなたは親切なアシスタントです。",
#     session_history=session_history, # 保存した履歴を渡す
# )
# agent_resumed.run("前の会話の続きを話してください")

このようにセッションを保存・ロードすることで、エージェントは中断した対話から再開し、一貫したユーザー体験を提供できます。

まとめ

Claude Agent SDK は、AgentToolMemory という主要なコンポーネントを通じて、強力な AI エージェントを構築するための基盤を提供します。 Agent.run() メソッドを使ってエージェントを実行し、セッション管理によって対話履歴を保持できることを学びました。 次の演習では、実際に SDK を使って簡単なエージェントを作成してみましょう。

参考リンク


Claude Agent SDK の概要 | AIエージェント活用実践編 第1章 - AI研修