はじめに

AIエージェントは、すべてを魔法のように知っている単一のチャットボットではありません。その内部では、反復するループが動作しています。何らかの事象を観察し、次に何をすべきかを考え、ツールを選び、行動を起こします。そしてその結果のフィードバックを再び受け取り、ループを繰り返します。このループを理解することが、このコースで学ぶすべての土台となります。データベースへの接続、APIの呼び出し、認証の処理はすべて、このループの中の「行動」ステップに過ぎません。

知覚–計画–行動のループ

エージェントのループには、エージェントのタスクが完了するまで継続的に繰り返される4つのフェーズがあります。

知覚とは、エージェントが読み取ったり知覚したりできるすべてのものです。ユーザーのプロンプト、会話履歴、以前のツール呼び出しの出力、データベースから取得したデータなどが含まれます。計画は、LLMが次に何が起きるべきかを判断する推論ステップです。ツール選択は、モデルが特定の関数(`query_database` や `send_email` など)を選び、その引数を生成する瞬間です。行動は、そのツールが実際に実行され、結果を返す段階を指します。

4つのステップが円状になるフロー図:知覚 → 計画 → ツール選択 → 行動 → 知覚へ戻る

行動が結果を返した後、その結果は新たな知覚入力となります。エージェントは再び計画を行います。これがあるからこそ、エージェントはツール呼び出しを連鎖させることができます。あるツールの出力が次の判断に影響を与えるのです。

モデルがツールの選択方法を決定する仕組み

最新のエージェントには、利用可能なツールの構造化されたリストが与えられます。各ツールには名前、説明、パラメータのスキーマがあります。LLMはこれらの説明を読み、現在のニーズに合致するものを選びます。モデルはAPIを自分で「知っている」わけではなく、開発者であるあなたが登録したツールの中から選ぶのです。

python
tools = [
{
"name": "query_database",
"description": "Run a read-only SQL query against the users database.",
"parameters": {
"type": "object",
"properties": {
"sql": {"type": "string", "description": "SELECT statement only"}
},
"required": ["sql"]
}
},
{
"name": "get_weather",
"description": "Fetch current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
]

ユーザーが「先週サインアップしたユーザー数は?」と尋ねた場合、モデルはリクエストを `query_database` にマッチさせ、SQLの引数を生成し、ランタイムがそれを実行します。ここで注目すべきは、エージェントが新しい能力を自発的に生み出したのではなく、あなたが定義したメニューから選択しただけだということです。

外部統合が組み込まれる場所

あらゆるデータベースクエリ、API呼び出し、認証チェックは、そのメニューの中の単なるツールに過ぎません。エージェントの視点から見ると、「Postgresで注文を検索する」ことと「Stripeの返金エンドポイントを呼び出す」ことの間に違いはなく、どちらもスキーマとハンドラー関数を持つツールです。このコースでは、これらのハンドラーを一つずつ構築していきます。最初は読み取り専用のDBクエリ、次に書き込み操作、そして外部API、認証付きフローと進んでいきます。

python
def handle_tool_call(tool_name, arguments):
if tool_name == "query_database":
return db.execute(arguments["sql"])
if tool_name == "get_weather":
return requests.get("https://api.weather.example/current",
params={"city": arguments["city"]}).json()
raise ValueError(f"Unknown tool: {tool_name}")

このハンドラーが実際の処理を行う場所です。LLMはあくまで「何をすべきか」を提案するだけであり、何が安全に実行できるかを決定するのはあなたのコードです。

よくある落とし穴

LLMを全知全能の存在として扱うこと — 登録されていないツールを呼び出すことも、ツールが提供されていないデータにアクセスすることもできません。計画と実行を混同すること — モデルは提案するだけであり、ランタイムが検証と実行を行う必要があります。エージェントを無限ループさせてしまうこと — 動作が不正なツールがエージェントを罠にはめることのないよう、必ず最大反復回数を設定してください。最後に、生のモデル出力を検証なしにそのままデータベース呼び出しやAPI呼び出しとして信頼しないでください。SQLインジェクションや不適切なAPIペイロードは、このステップを省略することで発生します。

まとめ

AIエージェントはループです。知覚し、計画し、ツールを選び、行動し、結果を観察し、繰り返す。ツールはLLMの推論と外部世界をつなぐ橋です。データベース、API、認証レイヤーはすべて、スキーマとハンドラーを持つツールとして実装されます。このメンタルモデルを習得することが、このコースの他のすべての前提条件となります。

レッスンのチェックポイント

1. このレッスンで紹介されたAIエージェントループの4つのフェーズは何ですか?

2. エージェントシステムにおいて、データベースクエリの実際の実行はどこで行われますか?

3. 開発者が説明とパラメータスキーマを添えてツールを登録する理由は何ですか?

4. ツール呼び出しが結果を返した後、エージェントは次に何をしますか?

5. エージェントの視点から見て、データベースへのクエリとStripeのような外部API呼び出しの違いは何ですか?

6. エージェントループを実行する際の推奨される安全策はどれですか?

7. レッスンで触れられているAIエージェントに関するよくある誤解は何ですか?

8. エージェントループの「行動」フェーズでは何が起こりますか?