このページでは、エージェント フレームワークの概要と、効果的なエージェントを開発するための主な構成要素について説明します。
エージェントとは
生成 AI エージェントは、独立したアシスタントとして機能するスマートなコンピュータ プログラムのようなものです。目標が設定され、(データや情報を通じて)周囲の状況を把握し、さまざまなツールを使用して、人間による継続的な監督なしでその目標を達成できます。目標に近づくための次のステップを計画することもできます。
技術的には、生成 AI エージェントは、環境を観察し、最善の行動方針について推論し、利用可能なツールを使用してアクションを実行することで、定義された目標を自律的に追求するソフトウェア抽象化です。各ステップの直接的な人間の指示から独立して動作し、最終的な目標を達成するために後続のアクションを事前に決定できます。これは、エージェントの推論機能と意思決定機能を強化する生成 AI モデルによって実現されます。
エージェントではないもの
エージェントのように見えるが、エージェントとして機能しないよくある落とし穴を以下に示します。
ハードコードされた「If-Then」チャットボット(アンチパターン):
LLM で構築された chatbot。想定されるすべてのユーザー入力と LLM レスポンスを慎重に事前定義します。関数呼び出しを使用していても、ロジックが完全にハードコードされている場合は、エージェントではありません。これは推論システムではなく、高度なディシジョン ツリーです。
例: ユーザーが「フライトを予約」と言ったら、関数 book_flight()
を呼び出します。これはエージェントではなく、ルールベースのシステムです。
ReAct プロンプトに過度に依存する(潜在的なアンチパターン):
ReACT(Reason + Act)プロンプトは、LLM が段階的に考えて行動するようにプロンプトを構造化する手法です。これはエージェントの動作に近いですが、デベロッパーが考えられるすべてのシナリオに対して ReACT プロンプトを手動で作成している場合は、アンチパターンになる可能性があります。エージェントは、事前に作成されたテンプレートに従うだけでなく、独自の ReAct スタイルの推論を生成できる必要があります。演技部分は単純な関数呼び出しに限定され、上位レベルの計画や適応はありません。
アクションのない Chain-of-Thought(CoT)(アンチパターン):
CoT プロンプトを使用して LLM に推論を説明させるのは有益ですが、その推論に基づいて行動しなければエージェントではありません。これは、自律型エンティティではなく、より透明性の高い LLM にすぎません。
エージェントと LLM
単一プロンプト:
LLM に「ローマ帝国の歴史の概要を記述して」と尋ねます。これは単一のインタラクションです。Gemini がプロンプトを処理し、レスポンスを生成します。過去のやり取りの記憶、長期的な目標、外部ツールとのやり取りはありません。純粋な入出力です。
プロンプトの連鎖:
次に、「帝国の衰退の主な原因を挙げてください」と尋ねます。これはプロンプトの連鎖です。人間は、会話をガイドし、タスクを分割することで、エージェントのような動作を提供します。Gemini は、全体的な目標を広く理解することなく、各プロンプトに個別に応答します(明示的に繰り返し述べない限り)。お客様は Gemini ではなく、エージェントです。
エージェント:
LLM を使用するエージェントは根本的に異なります。
次のような「ローマ史研究エージェント」があるとします。
「ローマ帝国に関する包括的なレポートを作成します。その歴史、主要人物、文化的影響、衰退の理由などについて説明します。このレポートは、学術的な情報源からの新しい情報によって毎週更新される必要があります。」
主な違い:
- 継続的な目標: エージェントは、単一のターンのタスクだけでなく、継続的で長期的な目標を持っています。
- 計画: エージェントは、これを次のように分類できます。
- Gemini を使用した初期調査(履歴の要約、主要な人物の発見)。
- 学術データベースの検索(別のツールを使用)。
- 複数の情報源からの情報を統合すること。
- レポートの生成中。
- 手順 2 ~ 4 を繰り返すように毎週タスクをスケジュールする。
- ツールの使用: エージェントは Gemini 以外のツール(検索 API、データベースなど)を積極的に使用しています。
- 自律性: エージェントは独立して動作し、収集する情報とその表示方法を決定します。
- メモリ: エージェントは、検出結果を整理し、プロンプトを独自に改善するために、(データベースに)継続的にメモリを保持します。
重要なポイントは、単一/チェーン プロンプト シナリオでは、オーケストレーターが自分自身であるということです。エージェント シナリオでは、エージェント自体がオーケストレーターであり、Gemini をツールの 1 つとして使用します。
エージェント ワークロードと一般的な LLM ワークロードの違い
エージェントと一般的な LLM ワークロードの最も重要な違いは、反復的な改良と計画による自律的な目標指向型の動作です。次のことを確認します。
- 永続目標
- 個々のプロンプトへの対応を超えて、システムが目指している明確に定義された長期的な目標はありますか?
- 自律型アクション
- システムは、すべてのアクションについて人間からの明示的な手順なしでアクション(ツールの使用、意思決定)を実行できますか?
- 計画と推論
- システムに、計画(複雑な目標を小さなステップに分解)と推論(状況の理解に基づいて意思決定を行う)の証拠があるか。
- 反復的な改良
- システムは学習してアプローチを改善しますか?機械学習である必要はありません。観察に基づく自己プロンプトによる改善などです。
- ステートフル
- システムは、目標達成に向けて状態情報を維持して使用しますか?
上記の質問のすべてに「はい」と回答した場合、AI エージェントを使用している可能性があります。いずれかが「いいえ」の場合、高度な LLM アプリケーションはありますが、本格的なエージェントではありません。エージェントは、これらの要素の組み合わせによって定義されます。エージェントは、単に何かを行うだけでなく、何をすべきか、なぜすべきかを決定し、定義された目標を達成するためにアプローチを調整します。
エージェントの基本コンポーネント:
- モデル: 言語モデル(LM)は、命令ベースの推論と論理フレームワークを利用して、中心的な意思決定者として機能します。
- ツール: ツールは、エージェントの内部機能と外部世界とのギャップを埋め、幅広い可能性を開きます。外部データやサービスとのやり取りを可能にします。
- オーケストレーション レイヤ: このレイヤは、エージェントが情報を取得し、内部推論を実行し、その推論を使用して次のアクションや意思決定を行う方法を管理します。
エージェントと関数呼び出し
LLM の関数呼び出しは、エージェント動作の実現に向けた強力なステップですが、完全なエージェントと同等ではありません。
LLM + 関数呼び出し: LLM が呼び出せる関数を定義します(get_weather(location)
、search_wikipedia(topic)
)。LLM レスポンスで関数を使用する必要があることが示された場合、コードはその関数を実行し、結果を LLM に返します。これにより、モデルは外部データにアクセスしたり、アクションを実行したりできます。
LLM + エージェント:
エージェントは関数呼び出しに基づいて構築されます。関数呼び出しはエージェントが使用できるメカニズムですが、エージェントは次のことを追加します。
- 戦略的意思決定: エージェントは、全体的な目標と計画に基づいて、関数を呼び出すタイミングと理由を決定します。単一のプロンプトに反応するだけではありません。
- マルチステップ推論: エージェントは、内部推論プロセスに基づいて、複数の関数呼び出しと Gemini インタラクションを連結できます。プロンプトごとに 1 つの関数呼び出しに制限されません。
- エラー処理と適応: 優れたエージェントは、関数呼び出しが失敗した場合や予期しない結果が返された場合のケースを処理します。それに応じてプランを調整できます。
- 状態管理: エージェントは、複数のインタラクションにわたって保持される内部状態(メモリ)を維持し、進行状況を追跡してより的確な意思決定を行うことができます。
関数呼び出しは、LLM に外部とやり取りする能力を与えるものと考えてください。エージェントは、LLM にその能力を効果的に使用して複雑な目標を達成するためのインテリジェンスと自律性を与えます。
LLM パイプラインとチェーン
このサブセクションでは、パイプラインとチェーンを使用してエージェント内で LLM を構造化して整理する方法について詳しく説明します。LLM 呼び出し、ツールの操作、その他のエージェント コンポーネントを接続して複雑なタスクを実行するためのさまざまなパターンについて説明します。エージェントの設計に関連する一般的なパイプラインとチェーンのアーキテクチャについて説明します。
エージェントを構築する際のアンチパターン
このセクションでは、エージェントの開発時に避けるべき一般的な間違いと落とし穴について説明します。ここでは、「アンチパターン」を特定し、説明します。アンチパターンとは、エージェントのパフォーマンス、メンテナンス性、スケーラビリティを損なう可能性がある設計上の選択や実装戦略です。これらのアンチパターンを学習すると、デベロッパーはより堅牢で効果的なエージェントを構築できます。
マルチステップ エージェントとマルチエージェント - どちらを選択すべきか
このセクションでは、エージェントの複雑さに対する 2 つの異なるアプローチ(マルチステップ エージェント(一連のステップでタスクを実行するエージェント)とマルチエージェント システム(複数の相互作用するエージェントで構成されるシステム))を比較します。各アプローチの長所と短所について説明します。また、ユースケースと目的のエージェント動作に基づいて、どちらを選択すべきかについてガイダンスを提供します。
マルチエージェント フローを利用するタイミング
このセクションでは、マルチエージェント システムを拡張し、マルチエージェント「フロー」を使用するのが有利なシナリオについて詳しく説明します。複数のエージェント間のコラボレーション、委任、分散された問題解決が有益なユースケースについて説明します。複雑なエージェント システムにおけるマルチエージェント フローの実際のアプリケーションとメリットを説明することを目的としています。
複数のツールを使用するエージェントとマルチエージェント
このセクションでは、単一エージェントに複数のツールを装備するのか、マルチエージェント システムを作成するのか、設計上の選択について説明します。単一エージェントのツールセットを増やすだけで十分な状況と、タスクと機能を複数のエージェントに分散する方が効果的なアプローチとなる状況を分析します。これにより、デベロッパーは複雑さと機能要件に基づいて最適なアーキテクチャを決定できます。
事前定義されたフローを備えたエージェントと自律型エージェント
ここでは、事前定義された構造化ワークフロー(「フロー」)を持つエージェントと、運用においてより柔軟性と意思決定能力を発揮するより自律的なエージェントを区別します。制御と適応性とのトレードオフと、各タイプのエージェントがさまざまなアプリケーションに最も適している場合について説明します。
短期記憶と長期記憶
このセクションでは、エージェント フレームワーク内の短期記憶と長期記憶のコンセプトについて説明します。エージェントが会話のコンテキスト(短期記憶)を管理し、セッション間でナレッジやデータを保持する(長期記憶)方法について説明します。これらのメモリ メカニズムを理解することは、状態を維持し、時間の経過とともに学習できるエージェントを構築するために重要です。
1 ステップと複数ステップのプランニング
エージェントの計画機能を探り、単一ステップの計画(即時意思決定)とマルチステップの計画(戦略の策定と複雑なタスクのシーケンスへの分解)を比較します。このセクションでは、各プランニング アプローチのメリットと複雑さ、およびそれらがエージェントの行動と問題解決能力に与える影響について説明します。
単一ツール、複数ツール、AgentTools
このセクションでは、エージェント向けのさまざまなツール構成の比較概要について説明します。単一のツール、複数のツールを備えたエージェント、特殊な「AgentTools」(他のエージェントを呼び出すツール)の使用について説明します。目的は、各ツールタイプと構成の目的と使用シナリオを明確にすることです。
ツールとメモリ
このセクションでは、エージェントの設計におけるツールとメモリの関係について説明します。エージェントがメモリをどのように使用してツールの使用状況を通知し、ツールの出力を保存し、ツールの選択を最適化していくかについて説明します。この相互作用を理解することは、ツールとメモリの両方を効果的に活用してパフォーマンスを向上させるエージェントを構築するうえで重要です。
エージェントのテストと QA
このセクションでは、エージェント向けのテストと品質保証(QA)の重要な側面について説明します。エージェントの動作、ツールの統合、システム全体のパフォーマンスを厳密にテストするための戦略と方法論について説明します。デプロイ前にエージェントの信頼性と正確性を確保するためのガイダンスを提供することを目的としています。
エージェントの評価
このセクションでは、テストを踏まえ、エージェントの評価について説明します。定義された指標とベンチマークに基づいてエージェントのパフォーマンスを体系的に測定して評価する方法について詳しく説明します。評価フレームワーク、精度や効率などの指標、評価を使用してエージェントの設計を改善する方法について説明します。
マルチエージェント
このセクションでは、フレームワーク内のマルチエージェント システムのコンセプトについて詳しく説明します。マルチエージェント コンセプトについて、これまでに説明した内容を統合して拡張し、アーキテクチャ、メリット、課題について包括的な概要を説明します。これは、マルチエージェント アプリケーションを理解して設計するための中心的なリソースとして機能します。
フロー
このセクションでは、エージェント フレームワークの「フロー」について詳しく説明します。事前定義フロー(順序型、ループ、自動など)の種類と、それらがエージェントの動作と子エージェントとのやり取りをどのように管理するかについて詳しく説明します。フローの仕組みとカスタマイズ オプションについて、明確かつ体系的に説明します。
コミュニケーション
このセクションでは、エージェント フレームワーク内の通信(特にマルチエージェント システム内)について説明します。エージェントが情報を交換し、アクションを調整し、共同で目標を達成する方法について説明します。エージェント間の効果的なコミュニケーションのメカニズムとパターンに焦点を当てます。
計画
このセクションでは、エージェント内のプランニングについて詳しく説明します。さまざまなプランニング アルゴリズム、複雑なタスクを分解する戦略、エージェントがプランニングを使用してアクションとツールの使用をガイドする方法について説明します。エージェントの開発に関連する計画手法について、より技術的な議論が展開されます。
セッションと状態
このセクションでは、Agent Framework のセッションと状態管理について詳しく説明します。セッションの作成と維持方法、状態変数を使用して情報の保存とアクセスを行う方法、セッションデータのライフサイクルについて詳しく説明します。セッションと状態を理解することは、コンテキストを管理し、インタラクション全体で継続性を維持できるエージェントを構築するために重要です。
コールバック
このセクションでは、Agent Framework 内のコールバックについて詳しく説明します。さまざまな種類のコールバック(エージェント、モデル、ツールの前後)、その目的、デベロッパーがコールバックを使用して処理のさまざまな段階でエージェントの動作をカスタマイズおよび拡張する方法について説明します。コールバックを活用した高度なエージェント カスタマイズに関する詳細なガイドが提供される予定です。