LLM + RAG + Function Calling は AI エージェントではない
LLM、RAG、および Function Calling を使用するアプリケーションを、何でも「AI エージェント」と呼んでしまう人が多くいます。
これは間違いです。
これらのツールは「能力」を追加するものであり、「自律性」を追加するものではありません。自律性がなければ、それはエージェントとは言えません。
この混乱が生じる理由は、人々がシステムの「能力」とシステムの「振る舞い」を混同しているからです。
これらのコンポーネントの役割を見てみましょう:
- LLM はコンテキストに基づいて回答を生成します。システムのフローを制御するわけではありません。
- RAG は関連データを取得します。コンテキストを提供しますが、意思決定やステップの計画を行うことはありません。
- Function Calling は LLM がアクションを要求することを可能にします。しかし、どの関数が存在し、いつそれを実行するかは、依然としてシステムが決定します。
これら3つをすべて組み合わせたとしても、システムには依然として実行フローの制御権がありません。
ほとんどの設定において、アプリケーションは定義済みのパイプラインに従います。コードが以下を決定します:
- いつ RAG を使用するか。
- いつ LLM を呼び出すか。
- いつ関数をトリガーするか。
- どのようにレスポンスを返すか。
これは限定されたワークフローです。モデルは定められた経路を辿り、そこで停止します。自律的に計画を立てたり、反復(イテレーション)したりすることはありません。
AI エージェントの仕組みは異なります。固定されたシーケンスに従うのではなく、プロセス中に何が起こったかに基づいて次のステップを決定します。
その違いは単純です:
- エージェントではないシステムは、ワークフローに従います。
- エージェントシステムは、目標を追求します。
エージェントはツールによってではなく、振る舞いによって定義されます。エージェントには以下のことができなければなりません:
- 次のアクションを選択する。
- ツールを動的に選択する。
- ループ内で複数のステップを実行する。
- 新しい結果に基づいて計画を変更する。
- 目標に到達するまで作業を続ける。
「責任」について考えてみてください。
LLM アプリケーションでは、システムがモデルに対して「何をすべきか」を指示します。
エージェントでは、システムはモデルに「目標」を伝えます。モデルは、それにどのように到達するかを自ら決定します。
RAG はコンテキストを向上させ、Function Calling はアクションを可能にし、LLM は推論を提供します。これらがいずれも単独でエージェントを作り出すわけではありません。
エージェントは、モデルが自分自身の行動シーケンスを制御するときにのみ存在します。
出典: https://dev.to/rohith_kn/llm-rag-function-calling-is-not-an-ai-agent-5459
