618ZXW

LLMベースのエージェントに関する詳細な記事

オリジナル:Eternity Datawhale

Datawhaleのヒント

著者: Eternity、Datawhaleメンバー

志湖リンク: https://zhuanlan.zhihu.com/p/...

Zhihuに記事を投稿するのは久しぶりです。コンピュータグラフィックスの仕事をしながら、暇な時間にLLMやエージェント関連のトピックを読んでいて、その考えを書き留めるためにこれを書いています。間違いがあればご指摘ください。この記事はLilian Weng氏のエージェントに関するブログ記事をベースにしており、他の視点も参考にしています(参考文献のセクションに記載されている多数のエージェント関連のレビューを参照しています)。また、この記事を書いているうちに、6、7年前にナレッジグラフや質問応答システムに少しだけ手を出した素晴らしい思い出を思い出しました。もちろん、「本来の職業」を忘れるわけにはいかないので、機会があればLLMと3D、そして合成データ生成についての記事も書いていきたいと思っています。

大規模言語モデルに基づく自律エージェントの調査からのLLMベースの自律エージェントのアーキテクチャ設計のための統一フレームワーク

エージェントシステムの概要

大規模言語モデル(LLM)の重要な機能である計画は、複雑な問題を解決する上で重要な役割を果たし、特定の目標を達成するための一連の行動の作成を伴います。LLMの重要な応用分野である自律エージェントは、汎用人工知能(AGI)の実現に向けた有望な技術的アプローチです。これらのエージェントは、環境を認識し、解決策を計画し、行動を実行することで、設定された目標タスクを達成します。タスクベースの計画を実装することで、自律エージェントは環境内で必要な行動を実行し、目標タスクを達成できます。LLM駆動型の自律エージェントシステムでは、LLMがエージェントの頭脳として機能し、いくつかの主要コンポーネントによって補完されます。

LLM 搭載の自律エージェント

計画

計画は主にサブ目標と分解、反省と改善の2つの部分から構成されます。

サブ目標と分解:エージェントは大きなタスクをより小さく管理しやすいサブ目標に分割し、複雑なタスクを効率的に処理できるようにします。

タスクの分解は、次の方法で行うことができます。(1) LLMを使用して、「XYZの手順\n1.」、「XYZで達成すべきサブ目標は何ですか?」などの簡単なプロンプトを使用する。(2) タスク固有の指示を使用する。たとえば、「小説を書くためのストーリーのアウトラインを作成します。」、(3) または人間による入力。

Chain of Thoughts (CoT)は、具体的には2つのアイデアから着想を得ています。算術推論タスクは、自然言語生成における中間推論ステップと、少数例学習の恩恵を受けることができるというものです。CoTは、プロンプト例(入力、思考連鎖/思考プロセス、出力)をデモンストレーションとして用い、LLMが推論ロジックを出力し、正しい答えを提供するように導きます。CoTには通常、少数例学習とゼロ例学習(Let's think step by step)の2つの主要なタイプがあります。

  • MindChain は、ユーザーがモデルの推論プロセス(特定の答えに到達する方法を含む)を理解できるようにする解釈可能なウィンドウを提供し、推論パスのエラーをデバッグする機会を提供します。
  • 思考連鎖推論は、数学の文章題、常識推論、記号操作といった課題に応用できます。理論的には、言語によって解決できるあらゆる人間の課題に応用可能です。
  • いくつかの例のヒントに思考連鎖シーケンスを含めるだけで、既存の大規模 LLM で思考連鎖推論を生成できます。

思考連鎖の促し

CoT の単一サンプリングと比較すると、自己一貫性サンプリングにより、CoT-SC は温度が 0 より大きい場合に複数の出力を生成し (さまざまなサンプリング方法と互換性あり)、候補から最適な出力を選択できます (多数決など)。

自己無撞着法

これに基づいたさらなる作業には、Tree of Thoughts と Graph of Thoughts が含まれます。

反省と改善:エージェントは過去の行動を自己批判して反省し、間違いから学び、将来のステップで改善を加えることができるため、最終結果の品質が向上します。

ReAct: Reason and Actionは、LLMを思考プロセスの連鎖に沿って導き、複雑な問題を分解し、推論と行動を通して段階的に導き出すとともに、観察フェーズも導入します。具体的には、トレーニングセットから例を選択し、ReAct形式の推論軌跡をプロンプト内の小さなサンプル例として手動で記述します。各軌跡は、複数の思考-行動-観察ステップ(つまり、集中的思考)で構成され、ここでは、一連の分解された問題解決思考(「x を検索し、y を見つけ、次に z を見つける必要がある」)の使用、Wikipedia の観察からの情報の抽出(「x は 1844 年に始まる」、「段落には x について言及されていない」)、常識的推論(「x は y ではないので、z は…である必要がある」)または算術的推論(「1844 < 1989」)、検索再構築のガイド(「代わりに x を検索/見つけることができるかもしれない」)、および最終答えの統合(「…したがって答えは x です」)など、さまざまな目的で自由形式の思考が使用されます。

人間の知能のユニークな特徴の一つは、タスク指向の行動と言語的推論(あるいは内的発話)をシームレスに組み合わせる能力です。この言語的推論は、人間の認知において、自己制御や戦略立案、ワーキングメモリの維持に重要な役割を果たすと理論化されています。この「行動」と「推論」の緊密な相乗効果により、人間は新しいタスクを迅速に学習し、未知の状況や情報の不確実性に直面した場合でも、堅牢な意思決定や推論を行うことができます。

ReAct: 言語モデルにおける推論と行動の相乗効果

続く:反省、後知恵の連鎖

メモリ

人間と同様に、記憶は感覚記憶(生の入力)、短期記憶(対話的な会話)、長期記憶(外部に保存されたデータ)に分けられます。一般的な技術にはRAG(参照ベース記憶)があり、データベース検索、ベクターデータベース、埋め込みなどの技術が活用されています。

人間の記憶の分類。

感覚記憶は、元の刺激が終了した後も、感覚情報(視覚、聴覚など)の印象を保持する能力を提供します。感覚記憶は通常、数秒しか持続しません。サブカテゴリには、視覚的アイコニック記憶、聴覚的エコー記憶、触覚的ハプティック記憶があり、これらはLLMにおける元の入力として機能する学習埋め込み表現に対応しています。

短期記憶は、私たちが現在認識している情報と、複雑な認知タスク(学習と推論)を実行するために必要な情報を、約20~30秒の範囲で保存します。対照的に、LLMにおける文脈学習は短命で限定的であり、Transformerの有限なコンテキストウィンドウ長によって制約されます。

長期記憶:数日から数十年に及ぶ。LLM では、エージェントが長期間にわたって情報を保持および思い出すために、外部のベクトル ストレージと高速検索が主に使用されます。

  • 明示的/成熟した記憶: これは事実や出来事の記憶、具体的にはエピソード記憶 (出来事や経験) や意味記憶 (事実や概念) など意識的に思い出すことができる記憶を指します。
  • 暗黙記憶/手続き記憶: このタイプの記憶は無意識であり、自転車に乗る、キーボードを入力するなど、自動的に実行されるスキルや手順に関係します。

大規模言語モデルに基づくエージェントの記憶機構に関する調査

最大内積探索

外部ストレージは、有限な注意持続時間による制約を緩和し、モデルが錯覚的な回答を出力することをある程度防ぐことができます。一般的なアプローチは、情報の埋め込み表現を、高速な最大内積探索をサポートするベクトルデータベースに保存することです。一般的には、k近傍点を返す近傍アルゴリズムが用いられます。

  • LSH (Locality-Sensitive Hashing): 類似の入力が高い確率で同じバケットにマッピングされ、バケットの数が入力数よりもはるかに少なくなるようにハッシュ関数を導入します。
  • ANNOY (approximate Nearest Neighbors Oh Yeah): バイナリ ツリーを構築して類似情報をすばやく取得します。
  • HNSW(階層的ナビゲート可能なスモールワールド)
  • FAISS(Facebook AI類似性検索)
  • ScaNN(スケーラブル最近傍法)

道具の使用

トレーニング後、エージェントはツールを用いて外部機能を活用し、モデルのトレーニング中に不足していた追加情報(天気情報のクエリなど)を取得したり、コードを実行したりすることができます。比較的シンプルなアプローチとしては、JSONなどのフォーマットされた出力(最近の回答へのリンクはこちら大規模な言語モデル出力をJSON形式で作成する方法。JSON形式を使用すると、エージェントがツールを呼び出しやすくなります)を使用し、必要なツールAPIインターフェースを呼び出し、各ツール呼び出しの結果を反映して要約することで、さらなる判断と実行(ReActなど)を行います。典型的な手順は以下のとおりです。

1. エージェントの判断: ユーザークエリが質問への回答の範囲内にあるかどうか (つまり、プロセスを開始する必要があるかどうか) を判断します。

2. タスク計画

  • API 検索と選択: ユーザー入力に基づいて最も関連性の高い API を検索し、コンテキストと入力に基づいて呼び出す最終的な API を決定します。
  • パラメータ決定:呼び出すAPIとユーザー入力に基づいてパラメータを決定します。呼び出し要件が満たされていない場合(パラメータが不足している場合)、ユーザーにクエリの入力を求めます。
  • パラメータの入力/アセンブリ: ユーザー入力を API 呼び出しで使用するための最終的な API 呼び出しパラメータに組み立てる「スロットの入力」タスクに対応します。

3. アクション実行: API を呼び出します。必要に応じて、上記のプロセスを繰り返して新しい API を呼び出します。

4. 回答の生成: すべての呼び出しに基づいて最終結果を出力します。

MRKL (Karpas et al. 2022)は、Modular Reasoning, Knowledge, and Language(モジュラー推論、知識、言語)の略称で、自律エージェントのためのニューラルシンボリックアーキテクチャです。提案されているMRKLシステムは、一連の「エキスパート」モジュールで構成され、汎用的で大規模な言語モデルがルーターとして機能し、クエリを最も適切なエキスパートモジュールにルーティングします。これらのモジュールは、ニューラルネットワーク(例:ディープラーニングモデル)またはシンボル(例:数学計算機、通貨換算ツール、天気予報API)のいずれかです。

HuggingGPT (Shen et al. 2023)は、ChatGPTをタスクプランナーとして使用し、タスクの説明に基づいてHuggingFaceプラットフォーム上のモデルを選択し、結果を実行して応答を生成します。

API-Bank (Li et al. 2023) ベンチマークは、大規模言語モデルが実世界のアプリケーションでツールを使用する能力を評価することを目的としています。このベンチマークは実世界のシナリオをシミュレートし、API を呼び出すかどうか、適切な API を選択するかどうか、API レスポンスを処理するかどうか、複雑なタスクを計画するかどうかなど、複数のレベルでモデルが意思決定を行う必要があります。テストは、API 呼び出し能力(API 記述が与えられた場合、モデルは指定された API を呼び出すかどうかを判断し、正しく呼び出し、API レスポンスに適切に応答する必要があります)、API 取得能力(モデルはユーザーのニーズを解決する可能性のある API を検索し、ドキュメントを読んでその使用方法を学習する必要があります)、API 呼び出し計画能力(曖昧なユーザー要求(例:グループ会議の手配、旅行のためのフライト/ホテル/レストランの予約)に直面し、モデルは問題を解決するために複数の API 呼び出しを行う必要がある場合があります)に対応する 3 つのレベルで構成されています。これらのテストは、ツールの使用におけるモデルのパフォーマンスを包括的に理解するのに役立ちます。

これには、一般的に使用される 53 個の API ツール、完全なツール拡張 LLM ワークフロー、および 568 個の API 呼び出しを含む 264 個の注釈付きダイアログが含まれています。

理想は素晴らしいですが、実際には多くの制限があります。

@ybq(https://www.zhihu.com/people/...)

LLM の別の年に書いたもの:

先ほども述べたように、2024年の初めには、エージェントはすぐに実装されるだろうと誰もが信じていました。なぜでしょうか?それは、関数呼び出しという技術的なアプローチがすでに実装に成功していたからです。関数呼び出しでAPIを呼び出すようにすることで、LLMが環境と簡単にインタラクションできるようになります。その後、様々な企業がエージェントモデルをリリースしましたが、どれも魂のない抜け殻のようで、ユーザーを惹きつけることができませんでした。問題はどこにあったのでしょうか?個人的には、これらのエージェントには批判的思考力が欠けており、環境とのインタラクションが過度に硬直的になっていたためだと考えています。結局のところ、現在の関数呼び出しは、基本的に一連のif-else文をモデルが記憶するためのトレーニングデータに変換しているだけです。コードに遭遇するとPython APIを呼び出し、天気に遭遇すると天気APIを呼び出します。プロンプトを書けば、モデルがどの関数を呼び出すかを予測できます。

実際、今日の多くのシステムは真の意味で「エージェント」とは言えません。Anthropicでは、エージェントを、自身のプロセスとツールの使用を動的にガイドし、タスクの完了方法を制御するLLMと定義しています。一方、事前に定義されたコードパスとツールを調整するシステムは、ワークフローと呼ぶ方が適切です。あるいは、その両方を「エージェントシステム」と呼ぶこともできます。

デザインパターン

LLM上に検索、ツール、記憶といったコンポーネントを追加することで、最も基本的なモジュールを構築できます。モデルはこれらの機能を用いて、検索クエリを生成し、適切なツールを選択し、保持する情報を決定できます。

拡張法学修士課程

  1. プロンプトチェーニング:タスクは一連のステップに分割され、各大規模言語モデル(LLM)呼び出しは前の呼び出しの出力を処理します。中間ステップのいずれにも手続き型チェックを追加することで、結果が期待どおりであるかどうかを確認できます。
  2. ルーティング:タスクを分類し、下流のタスクに振り分ける作業です。例えば、顧客サービスに関する様々な問い合わせ(一般的な質問、返金リクエスト、テクニカルサポートなど)を、それぞれ異なる下流のプロセス、ヒント、ツールに誘導します。簡単な質問やよくある質問は小規模なモデルにルーティングし、難しい質問や一般的でない質問はより堅牢なモデルにルーティングします。
  3. 並列化: LLM は同時に動作し、主に 2 つのバリエーションで出力を集約します。1 つは、タスクを独立したサブタスクに分割して並列実行するセクション化、もう 1 つは、同じタスクを複数回実行して多様な出力を取得する投票です。
  4. オーケストレータワーカー:中心となる大規模言語モデル(LLM)は、タスクを動的に分解し、作業中のLLMに委譲します。構造的には、ルーティングと並列化に非常に似ています。オーケストレータワーカーは、タスクを事前に定義するのではなく、動的にオーケストレーションできるため、並列化の高度なバージョンと見なすことができます。個人的には、ルーティングと並列化はオーケストレータワーカーの特殊なケースだと考えています。
  5. 評価最適化モード:このモードでは、1つのLLMが生成を担当し、もう1つのLLMが生成されたコンテンツが要件を満たすまでチェックとフィードバックを提供します。これは実際にはGANのトレーニングに似ています。

エージェントワークフロー

エージェントに関しては、自律性により重点が置かれているようです。つまり、エージェントは事前に定義された手順に依存せず、環境からのフィードバックを受け入れる必要があります。例えば、コードを生成し、コードインタープリタを使用してプログラムを検証し、フィードバックに基づいて最大試行回数に達するまで反復処理を行います。全体的な設計において、Anthropicは必要な場合にのみエージェントを使用し、システムの複雑さを最小限に抑え、安定性と制御性を追求する際にはフレームワークではなくAPIを直接呼び出す傾向があります。

マルチエージェントシステム

このセクションでは、主に「大規模言語モデル ベースのマルチエージェント: 進捗状況と課題の調査」を参照します。

エージェントシステムは、大規模言語モデルの帰納的推論機能を活用し、ツールの使用と組み合わせながら、実行、観察、考察を繰り返し行うことでユーザーのニーズを満たします。このプロセスには、ユーザーとの複数回のインタラクションが含まれる場合があります。シングルエージェントシステムと比較して、マルチエージェントシステムは、以下の点でより高度な機能を提供します。

  1. 大規模な言語モデルを異なる機能を持つ複数の独立したエージェントに特化することで、各エージェントが独自の専門知識を持つようになり、回答の精度と一貫性が向上し、LLM の錯覚問題を効果的に軽減できます。
  2. マルチエージェント システムはタスクを複数の部分に分割できるため、より複雑なタスクを処理し、より長いコンテキスト長に対応できます。
  3. ロールプレイングを通じて、複数のエージェントがそれぞれ異なる視点を提示することで、タスクに対するより包括的かつ完全な回答が得られます。また、複数のエージェントが連携し、異なるモデルの長所を組み合わせて問題を解決することも可能です。

大規模言語モデルに基づくマルチエージェントによるLLM-MAシステムのアーキテクチャ:進歩と課題の調査

マルチエージェント システムを構築するには、シングルエージェント システムに次のコンポーネントを追加する必要があります。

環境:すべてのエージェントは同じ環境に存在し、グローバルな状態を共有する必要があります。エージェントと環境の間には相互作用と更新が存在します。エージェントはエージェント-環境インターフェースを通じて環境と相互作用し、環境を認識し、周囲の状況を学習し、意思決定を行い、行動の結果から学習します。現在、大規模言語モデル-マルチエージェントシステムにおけるインターフェースは、サンドボックス型、物理型、環境レス型の3種類に分類されます。

  • サンドボックスとは、人間が構築したシミュレーション環境または仮想環境のことを指し、エージェントはより自由にインタラクションを行い、様々なアクションや戦略を試すことができます。このタイプのインターフェースは、ソフトウェア開発(コードインタープリターがシミュレーション環境として機能する)やゲーム(ゲームルールがシミュレーション環境として機能する)で広く利用されています。
  • 物理環境とは、エージェントが物理的な実体と相互作用し、現実世界の物理法則と制約に従う現実世界の環境を指します。物理空間では、エージェントは通常、直接的な物理的な結果をもたらす行動を実行する必要があります。例えば、掃除、サンドイッチ作り、食料品の梱包、キャビネットの整理といったタスクを実行する場合、ロボットエージェントは行動を繰り返し実行し、物理環境を観察し、行動を継続的に改善する必要があります。
  • コンテキストフリーとは、特定の外部環境が存在せず、エージェントがいかなる環境とも相互作用しないシナリオを指します。複数のエージェントを用いて議論し、合意形成を図るアプリケーションもあります。これらのアプリケーションは、主にエージェント間のコミュニケーションに焦点を当てており、外部環境に依存しません。

エージェントのプロファイリング

マルチエージェントシステムでは、エージェントは特性、動作、スキルによって定義され、特定の目的を達成するためにカスタマイズされます。エージェントはシステムごとに異なる役割を担い、それぞれに特性、機能、動作、制限を含む包括的な説明が与えられます。例えば、ゲーム環境では、エージェントは異なる役割とスキルを持つプレイヤーとして描かれ、それぞれがゲームの目的に異なる方法で貢献します。ソフトウェア開発では、エージェントはプロダクトマネージャーとエンジニアの役割を担い、それぞれが開発プロセスを導く責任と専門知識を持ちます。同様に、ディベートプラットフォームでは、エージェントは支持者、反対者、審判として設計され、それぞれが独自の能力と戦略を持ち、それぞれの役割を効果的に果たします。

エージェントコミュニケーション

コミュニケーションパラダイム:現在のLLM-MAシステムでは、主に協力、討論、競争という3つのコミュニケーションパラダイムが採用されています。協力的なエージェントは、共通の目標または目的を達成するために協力し、通常は集団的な解決策を強化するために情報交換を行います。エージェントが議論的なやり取りを行う場合は、討論パラダイムが用いられます。このパラダイムでは、エージェントは自身の見解や解決策を提案・擁護し、他者の解決策を批判します。このパラダイムは、合意形成やより洗練された解決策の策定に適しています。競争的なエージェントは、自身の目標を達成しようと努めますが、それが他のエージェントの目標と衝突する場合もあります。

通信構造:階層型通信は階層的に構成され、各層のエージェントはそれぞれ異なる役割を持ち、主に自身の層内または隣接する層と相互作用します。分散型通信はピアツーピアネットワークを用いて動作します。この構造は、エージェント間の直接通信が必要なワールドシミュレーションアプリケーションで一般的に使用されます。集中型通信では、中央エージェントまたは中央エージェントのグループがシステム内の通信を調整し、他のエージェントは主にこの中央ノードを介して相互作用します。MetaGPTは、通信効率を向上させるために共有メッセージプールを提案しています。この通信構造は共有メッセージプールを維持し、エージェントは設定ファイルに従ってメッセージをパブリッシュおよびサブスクライブすることで、通信効率を向上させます。

大規模言語モデルに基づくマルチエージェントによるエージェントコミュニケーション構造:進歩と課題の調査

コミュニケーション内容: LLM-MAシステムでは、コミュニケーション内容は通常テキスト形式で表示されます。具体的な内容はアプリケーションによって異なります。例えば、ソフトウェア開発では、エージェントはコードスニペットについて互いにコミュニケーションをとることがあります。「人狼」ゲームのようなシミュレーションでは、エージェントは分析、疑念、戦略について話し合うことがあります。

シングルエージェントシステムと比較して、マルチエージェントシステムは、環境や人間からのフィードバックに加えて、他のエージェントからのフィードバックも受け取ります。これにより、議論などのシナリオにおけるエージェントの能力が向上します。さらに、マルチエージェントシステムは、記憶、自己反省、その他の手段を通じて能力を強化します(シングルエージェントシステムと同様)。

マルチエージェントフレームワークに関しては、現在主流となっているものは次のとおりです。

@Guohao Li (https://www.zhihu.com/people/...)

機会があれば、私の前任者によって開始された Camel-AI、MetaGPT、および AutoGen を個別に検討するつもりです。

応用

いくつかの研究(Bran et al. 2023、Boiko et al. 2023)では、法学修士(LLM)と専門家が提供するツールを科学研究に活用し、特定の科学分野(有機合成、創薬、材料設計など)における課題の達成を目指しています。マルチエージェントシステムの応用については、現在、社会科学の問題の探求、ゲーム理論、経済学など、学際的な研究分野がいくつか存在します。

大規模言語モデルに基づく自律エージェントに関する調査

チャレンジ

コンピューティング リソース: 単一エージェント システム (継続的なリフレクションとタスク実行を含む) であっても、マルチエージェント システムであっても、トレーニングと展開中に大量のコンピューティング リソースが使用されます。

コンテキストの長さの制限:大規模言語モデルは、情報処理時にコンテキストの長さによって制限を受けます。これは、履歴データ、詳細な指示、API呼び出しの詳細、レスポンスなど、情報処理能力に影響を与えます。システム設計では、この限られた通信能力を考慮する必要があります。

長期計画とタスク分解:大規模言語モデルは、長期的な履歴記録を扱い、解決策を探索する際に、計画上の課題に直面します。予期せぬエラーが発生した場合に計画を調整する能力が限られているため、試行錯誤を通じて学習できる人間に比べて堅牢性が低くなります。

自然言語インターフェースの信頼性:インテリジェントエージェントシステムは、大規模な言語モデルや外部コンポーネントとの対話に自然言語に依存しています。しかし、モデル出力の信頼性は疑問視されています。これは、モデル出力にフォーマットエラーが含まれていたり、指示に従わない場合があるためです。

結論は

参考文献

1.http://lilianweng.github.io/p...

2.https://link.zhihu.com/?target...

3.https://link.zhihu.com/?target...

4. https://zhuanlan.zhihu.com/p/...

5.https://link.zhihu.com/?target...

6.https://link.zhihu.com/?target...

7.https://link.zhihu.com/?target...

8.https://link.zhihu.com/?target...

9.https://link.zhihu.com/?target...

10.https://link.zhihu.com/?target...

11.https://link.zhihu.com/?target...

12.https://link.zhihu.com/?target...

13.https://link.zhihu.com/?target...

14.https://link.zhihu.com/?target...

いいね (3件のいいね!)↓