著者 | マヤ・ムラド 編纂者:岳陽 LLM エージェントの概要(画像は原著者提供) なぜ汎用エージェントを構築するのでしょうか?それは、ターゲットユースケースのプロトタイプを作成し、独自のカスタムエージェントアーキテクチャを設計するための基盤を構築できる優れたツールだからです。 詳しく説明する前に、LLMエージェントについて簡単に紹介しましょう。既にご存知の方は、このセクションを飛ばしていただいて構いません。 01 LLMエージェントとは何ですか?
スタンドアロンLLMからエージェント機能を備えたシステムへ。(画像は原著者提供) LLMエージェントは、単純な数回のプロンプトや事前定義されたワークフローとは異なり、ユーザークエリの実行に必要なステップを定義・調整できます。コード実行やWeb検索などのツールセットにアクセスできる場合、エージェントはどのツールをどのように使用するかを自律的に決定し、出力に基づいて反復的に最適化します。この柔軟性により、システムは最小限の設定要件で多様なシナリオに対応できます。 LLMエージェントのアーキテクチャ系統。(画像は原著者提供) エージェントアーキテクチャは、固定されたワークフローの信頼性から自律エージェントの高い柔軟性まで、様々なバリエーションが存在する。例えば、検索強化生成(RAG)[1]のような定義済みワークフローは、自己反省ループを追加することで改善が可能であり、初期応答が不十分な場合にプログラムが改善できる。一方、ReAct[2]エージェントは、柔軟かつ構造化されたアプローチを実現するためのツールの一つとして、定義済みワークフローを装備することができる。最終的には、アーキテクチャの選択は、具体的なアプリケーションシナリオと、信頼性と柔軟性のバランスの必要性に基づいて決定されるべきである。 より包括的な理解のために、このビデオ[3]をご覧ください。 02 汎用 LLM エージェントをゼロから構築してみましょう。ステップ1:適切なLLMを選択する望ましいパフォーマンスを達成するには、適切なモデルを選択することが不可欠です。モデルの選択にあたっては、ライセンス、コスト、言語サポートなど、いくつかの要素を考慮する必要があります。LLMエージェントの構築において最も重要なのは、プログラミング、ツールの呼び出し、論理的推論といったコアタスクにおけるモデルのパフォーマンスです。評価基準は以下のとおりです。
さらに、モデルの処理ウィンドウのサイズも非常に重要です。エージェントのワークフローは大量のトークン(場合によっては10万を超える)を消費する可能性があるため、処理ウィンドウを大きくすることで処理効率が大幅に向上します。 現在注目すべきモデル(執筆時点)は次のとおりです。
一般的に、モデルが大きいほどパフォーマンスは向上します。ただし、ローカルで実行できる小規模なモデルも良い選択肢です。小規模なモデルは通常、よりシンプルなシナリオに適しており、1つか2つの基本的なツールとのみ連携する場合があります。 ステップ 2: インテリジェント エージェントの制御ロジック (通信構造とも呼ばれます) を定義します。単一エージェントアーキテクチャの図。(画像は原著者作成) シンプル大規模言語モデル (LLM) とエージェントの主な違いは、システム プロンプトにあります。 LLMの場合、システムプロンプト[12]とは、モデルがユーザーのクエリの処理を開始する前にモデルに提供される一連の指示と背景情報を指します。 システムプロンプトを使用して、大規模な言語モデルが示すエージェントの動作をエンコードできます。 以下に、特定のニーズに応じて調整できる一般的なエージェントの動作パターンをいくつか示します。
一般的な単一エージェントを構築する場合、ReAct と Plan-then-Execute が通常、最適な出発点となります。 一般的なインテリジェントエージェントの行動パターンの概要。(画像は原著者作成) これらの行動パターンを効果的に実装するには、手がかりとなる言葉を慎重に設計する必要があります。また、構造化生成技術[13]を採用する必要があるかもしれません。これは、LLMの出力を特定の形式またはアーキテクチャに適合するように調整することを意味します。これにより、エージェントの応答が、私たちが追求しているコミュニケーションスタイルと一致することが保証されます。 例えば、以下はBee Agent Framework [14]のReActスタイルのエージェントのシステムプロンプトのスニペットです。 ステップ3: インテリジェントエージェントのコア指示の設定大規模言語モデル(LLM)は、すぐに使える一連の機能を備えていると思われがちです。これらの機能の中には優れたものもありますが、すべてが私たちの特定のニーズを満たすわけではありません。望ましいパフォーマンスを実現するには、システムプロンプトに含めるべき機能と含めるべきでない機能を明確にリストアップする必要があります。 これには次のような指示が含まれる場合があります。
例:以下はBee Agent Framework[14]の操作ガイドのセクションからの抜粋です。 ステップ4: コアツールセットの定義と最適化ツールは、インテリジェントエージェントに超能力を与える魔法です。明確に定義された単一のツールセットで、幅広いアプリケーションを実現できます。重要なツールには、コード実行、Web検索、ドキュメント読み取り、データ解析などがあります。 各ツールについて、次の情報を定義し、システム プロンプトに組み込む必要があります。
例えば、以下はLangchainコミュニティ[15]から取得したArxivツール実装のスニペットであり、ArxivAPIWrapper[16]のサポートが必要です。 特定のシナリオでは、望ましいパフォーマンスを実現するために、ツールを最適化する必要があります。これには、サジェストエンジニアリングのためのツール名や説明の微調整、一般的な問題に対処するための高度な設定、ツールの出力のフィルタリングと選択などが含まれる場合があります。 ステップ5: メモリ管理戦略を確立する大規模言語モデル(LLM)は、コンテキストウィンドウのサイズ、つまり一度に「記憶」できるトークンの数によって制限されます。マルチターンの対話では、過去のやり取り、ツールが出力する長いテキスト、あるいはエージェントが依存する追加のコンテキスト情報によって、メモリが急速に満杯になる可能性があります。そのため、効果的なメモリ管理戦略の開発が不可欠です。 ここでの「メモリ」とは、エージェントが過去のインタラクション情報を保存、取得、活用する能力を指します。この機能により、エージェントは対話のコンテキストを継続的に追跡し、過去の会話に基づいて応答を最適化できるため、よりパーソナライズされたユーザーエクスペリエンスを提供できます。 一般的なメモリ管理戦略は次のとおりです。
さらに、LLMを活用することで重要な瞬間を特定し、長期記憶に保存することができます。これにより、エージェントは重要なユーザー情報を「記憶」することができ、ユーザーエクスペリエンスをよりパーソナライズすることができます。 ここまでに説明した5つのステップは、インテリジェントエージェントを作成するための基盤となります。では、この段階でLLMを使用してユーザークエリを処理するとどうなるでしょうか? 答えは「未処理のテキスト出力が得られる」です。(画像は著者提供) 例は次のようになります。 この時点で、エージェントは生のテキスト出力を生成します。では、エージェントが後続の操作を実行できるようにするにはどうすればよいでしょうか?そのためには、解析とオーケストレーションのメカニズムを導入する必要があります。 ステップ 6: エージェントの生の出力を分析します。パーサーの役割は、生データをアプリケーションが認識して使用できるデータ形式 (特定の属性を持つオブジェクトなど) に変換することです。 私たちが構築しているエージェントでは、パーサーがステップ2で設定した通信構造を認識し、JSON形式などの構造化されたデータ出力に変換できる必要があります。これにより、アプリケーションはエージェントの後続のアクションをより容易に処理・実行できるようになります。 注: OpenAIなどの一部のモデルベンダーは、デフォルトで直接解析可能な出力を提供しています。他のモデル、特にオープンソースのモデルでは、追加の解析設定が必要になる場合があります。 ステップ7: エージェントのその後のアクションを計画する最後のステップは、オーケストレーションロジックを確立することです。このロジックは、LLM出力生成後の処理フローを決定します。システムは出力に基づいて、次のいずれかの操作を実行します。
拡張されたシングルエージェントアーキテクチャ図。(画像は原著者提供) ツール呼び出しがトリガーされると、ツールの出力がLLM(作業メモリの一部として)に送り返されます。LLMは、この新しいデータをどのように利用するか、つまりツール呼び出しを続行するか、それともユーザーに回答を直接返すかを決定します。 このオーケストレーション ロジックをコードで実装する例を次に示します。 ミッション完了!競合分析、詳細な調査、複雑なワークフローの自動化など、さまざまなシナリオに対応できるインテリジェントエージェントシステムが完成しました。 03 マルチエージェントシステムはどのような状況で役立ちますか?現在のLLMは優れた性能を備えているものの、膨大な情報量の処理には苦労しています[17]。コンテキストが多すぎたり、使用するツールが多すぎたりすると、モデルが過負荷になり、性能が低下する可能性があります。複数の目的のために設計されたシングルエージェントシステムは、特にトークン消費量が多いことが知られているため、最終的にはこの限界に達します。 特定のユースケースでは、マルチエージェントシステムの導入がより適している場合があります。タスクを複数のエージェントに分散させることで、単一のLLMエージェントへのコンテキスト負荷を効果的に回避し、全体的な実行効率を向上させることができます。 それでも、汎用的なシングルエージェントシステムは、プロトタイピングの優れた出発点であり続けます。ユースケースを迅速に検証し、システムの不具合発生時期を特定するのに役立ちます。このプロセスでは、以下のことが可能になります。
04 始めるにはどうすればいいですか?エージェントの構築を始めてみませんか? フレームワークを使用すると、エージェントの構成を迅速にテストして反復処理することができます。
読んでくれてありがとう! このブログを楽しんで、新しいことを学んでいただければ幸いです。 著者について マヤ・ムラド 学際的な技術者で、現在LLMエージェントをいじっています。AI、イノベーション・エコシステム、そしてクリエイティブ・コーディングの実験について書いています。 終わり 今週のインタラクティブコンテンツ🍻 汎用エージェントの構築において、どのような経験を積んできましたか?ぜひコメント欄であなたの知見を共有してください! 🔗記事内のリンク🔗 [1]https://research.ibm.com/blog/retrieval-augmented-generation-RAG [2]https://www.promptingguide.ai/techniques/react [3]https://www.youtube.com/watch?v=F8NKVhkZZWI&t=1s [4]https://paperswithcode.com/sota/multi-task-language-understanding-on-mmlu [5]https://gorilla.cs.berkeley.edu/leaderboard.html [6]https://evalplus.github.io/leaderboard.html [7]https://huggingface.co/spaces/bigcode/bigcode-models-leaderboard [8]https://platform.openai.com/docs/models#gpt-4o [9]https://www.anthropic.com/news/claude-3-5-sonnet [10]https://huggingface.co/collections/meta-llama/llama-32-66f448ffc8c32f949b04c8cf [11]https://huggingface.co/collections/Qwen/qwen25-66e81a666513e518adb90d9e [12]https://promptengineering.org/system-prompts-in-large-language-models/ [13]https://python.langchain.com/v0.1/docs/modules/model_io/chat/structured_output/ [14]https://github.com/i-am-bee/bee-agent-framework/blob/main/src/agents/bee/prompts.ts [15]https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/tools/arxiv/tool.py [16]https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/utilities/arxiv.py [17]https://arxiv.org/html/2410.18745v1 [18]https://github.com/i-am-bee/bee-agent-framework [19]https://github.com/i-am-bee/bee-agent-framework-starter [20]https://langchain-ai.github.io/langgraph/ [21]https://langchain-ai.github.io/langgraph/how-tos/react-agent-from-scratch/ オリジナルリンク: https://towardsdatascience.com/build-a-general-purpose-ai-agent-c40be49e7400 |
01 LLMエージェントとは何ですか?02 汎用 LLM エージェントをゼロから構築してみましょう。ステップ1:適切なLLMを選択するステップ 2: インテリジェント エージェントの制御ロジック (通信構造とも呼ばれます) を定義します。ステップ3: インテリジェントエージェントのコア指示の設定ステップ4: コアツールセットの定義と最適化ステップ5: メモリ管理戦略を確立するステップ 6: エージェントの生の出力を分析します。ステップ7: エージェントのその後のアクションを計画する03 マルチエージェントシステムはどのような状況で役立ちますか?04 始めるにはどうすればいいですか? |