エージェントとは何か?
現実のアナロジー
もし誰かが、あなたにコーヒーが欲しい!と頼んできたとしましょう。
その時、あなたはそれを達成するためのステップを以下のように推論し、プランニングをします。
- キッチンに行く
- コーヒーマシーンを使用する
- コーヒーを淹れる
- コーヒーを持ってくる
このようにプランが確定したら、あなたが使用できるツールを使って(今回はコーヒーマシーン)目的を達成します。そして最終的に、コーヒーを届けることができるのです。
これがまさにエージェントです。
エージェントは、推論、プランニング、そして、環境と交流することができます。

よりフォーマルに
エージェントの定義
定義したタスクを達成するため、AIモデルを使用して、環境と交流するシステム。
その中で、推論、プランニング、外部ツールを使用したアクションの実施を行う。
エージェントは2つのパートに分かれていると考えられる。
-
脳(AI model)
思考が行われる場所。AIモデルが推論とプランニングを行って、そのシチュエーションに応じてどの行動を取るべきかが決める。 -
体(能力とツール)
エージェントが何をできるかが決まる。
例)人間は羽がないので、飛ぶことができない。しかし、歩いたり、ジャンプしたりはできる。
以下がエージェントのレベル
| エージェンシーレベル | 説明 | 呼び方 | 例 |
|---|---|---|---|
| ☆☆☆ | エージェントの出力がプログラムの流れに一切影響を与えない | シンプルプロセッサー |
process_llm_output(llm_response)(LLMの出力を単に処理するだけ) |
| ★☆☆ | エージェントの出力によって基本的な分岐(if文など)が決まる | ルーター |
if llm_decision(): path_a() else: path_b()(LLMの判断で処理のルートが変わる) |
| ★★☆ | エージェントの出力によってどの関数を実行するかが決まる | ツールコーラー(ツール呼び出し型) |
run_function(llm_chosen_tool, llm_chosen_args)(LLMが使うツールと引数を決める) |
| ★★★ | エージェントの出力が、繰り返し処理や継続の判断を行う | マルチステップエージェント |
while llm_should_continue(): execute_next_step()(続けるべきかLLMが判断して次のステップを実行) |
| ★★★ | 一つのエージェントの処理が、別のエージェントの処理を起動する | マルチエージェント |
if llm_trigger(): execute_agent()(LLMが必要と判断したら、別のエージェントを起動する) |
エージェントが実際にできること
例)
あなたがSiriのようなチャットアシスタントを作りたいとする。
そして、そのアシスタントで上司にメールを送りたいならば、以下のようなpythonの関数を与えてあげれば可能である。
def send_message_to(recipient, message):
"""Useful to send an e-mail message to a recipient"""
...
そして、LLMにこの関数を使用するコードを引数付きで生成させる。
send_message_to("Manager", "Can we postpone today's meeting?")
ポイント
- ツールの設計は非常に大切
- ツールの質がエージェントの質に大きく関わってくる
- 専門のタスクには専門のツールが必要になることもあれば、web_searchなどの一般的なツールのみの使用で解決することもある。
- アクションはやりたいことであり、ツールはそれを行うための手段。1つのアクションを達成するために複数のツールを使用することもある。
AI Agentの応用例
ビデオゲームのNPC
今までは行動ツリーに従って行動を決定していたが、LLMを使用したエージェントによって
プレイヤーの行動に応じて文脈的に反応することができる。
まとめ
AI Agentとは、
- 自然言語を理解して、
- 推論、計画を行って、
- ツールなどを使って環境と交流をする(情報収集、アクションをする、結果を観察する等)
参考文献