🧸

LLM Agentの技術的な外観を理解する

2024/12/14に公開

はじめに

株式会社neoAIの研究開発組織 (neoAI Research) / 東京都立大学の板井孝樹です.

OpenAIが提供するFunction callingを皮切りに,DifyやSakana.aiのAI Scientist,AnthropicのCompute UseModel Context Protocolなど,次々と新たなエージェントツールが登場しています.これらは,単なるNLIやText Inferenceを超えて,より複雑なタスクの実行や意思決定を可能にする新しい可能性を切り開いています.

本記事では,LLM BasedなAgentに関するレビュー論文やサーベイ論文を通して,技術的な全体像や外観についてまとめます.

Agent・AGIの定義の整理

ビジネスの市場において,AIエージェントという言葉はよく出回っていますが,ワークフローやAGI.RAGなどのワードとの棲み分けが曖昧である言えます.アカデミックな観点ではどのようにこれらのキーワードが捉えられているのか整理しました.

AGIの定義

Google Deepmind: Levels of AGI for Operationalizing Progress on the Path to AGI

https://deepmind.google/research/publications/66938/
Google Deepmindらは5つのレベルの階層構造により定義している.ここでの定義は機械工学のような物理的なタスクは必須要件とされておらず,メタ認知能力のような新しくスキルを学んだり,助けを求める判断などが重要視されている.現在のSoTAのLLM(ChatGPT, Claude, Geminiなど)は,一部のタスクでは「Competent」レベルに達しているものの,ほとんどのタスクではまだEmergingに位置付けられているとされている.

Performance (AGIレベルの深さ)

レベル 名称 説明
1 Emerging 未熟な人間と同等かやや優れた程度
2 Competent 熟練した大人の50%以上
3 Expert 熟練した大人の90%以上
4 Virtuoso 熟練した大人の99%以上
5 Superhuman 全ての人間を上回る

Generality (AGIの活用の幅,汎用性)

種類 説明
Narrow AI 明確に定義された特定のタスクのみ
General AI メタ認知能力を含む幅広い非物理的タスク


Levels of AGI for Operationalizing Progress on the Path to AGI Published 21 July 2024より引用

OpenAI: OpenAI Scale Ranks Progress Toward ‘Human-Level’ Problem Solving

https://www.bloomberg.com/news/articles/2024-07-11/openai-sets-levels-to-track-progress-toward-superintelligent-ai
OpenAIもAGIについての定義を設けており,下記の通り.

レベル 名称 説明
1 Chatbots 現在のChatGPTのように自然な対会話語力を持つAI
2 Reasoners 博士号レベルの教育を受けた人のように高度な問題解決が可能なAI
3 Agents 独立してまたは指示に基づいて行動を取ることができるAIシステム
4 Innovators 新しいアイデアを発明し,人類の知識に貢献することができるAI
5 Organizations 組織全体の業務を独立して行うことができるAI

Agentの定義

下記に代表的な企業のAgentの定義をまとめました.Planningを自律的に行い,ワークフローを遂行するシステムがAI Agentであるとの考え方が一般的なようです.

Microsoft

https://learn.microsoft.com/ja-jp/azure/cosmos-db/ai-agents

「特定のタスクを実行し,質問に回答しユーザに変わって一連のプロセスを自動化するために設計されたシステム」

Salesforce

https://www.salesforce.com/jp/agentforce/what-are-ai-agents/

「人間の介入なしにユーザの問い合わせを理解して対応できるインテリジェンスなシステム」

AWS

https://aws.amazon.com/jp/what-is/ai-agents/

「環境と対話し,データを収集し,そのデータを使用して自己決定タスクを実行して,事前に決められた目標を達成するためのソフトウェアプログラム.目標は人間が設定するが,その目標を達成するために実行する必要がある最適なアクションは AI エージェントが独自に選択する」

IBM

https://www.ibm.com/jp-ja/think/topics/ai-agents
「ワークフローを設計し,利用可能なツールを活用することで,ユーザーまたは別のシステムに代わってタスクを自律的に実行できるシステムまたはプログラム」

Agentに関するサーベイ論文

LLM BasedなAgentに関するサーベイ論文を下記にまとめました.

Augmented Language Models: a Survey

https://ai.meta.com/research/publications/augmented-language-models-a-survey/

  • Meta AI Researchが2023年6月に発表した論文で,Transactions on Machine Learning Researchに掲載
  • LMに推論能力やツールの使用能力を付加する"Augmented Language Models (ALMs)"についての包括的なサーベイ
  • ALMsは,タスクを単純な部分タスクに分解する推論能力と,計算機やウェブ検索などの外部ツールを利用する能力を組み合わせることで,従来のLMの限界(解釈可能性,一貫性,スケーラビリティなど)を克服することを目指している
  • 論文では,ALMsの開発手法として教師あり学習や強化学習などのアプローチを整理・分析し,この新しい研究分野の可能性と課題についての議論がされている

A Survey on Large Language Model based Autonomous Agents

https://arxiv.org/abs/2308.11432

  • 2024年にRenmin University of Chinaのグループが発表した論文で,Frontiers of Computer Scienceに掲載
  • LLMベースの自律エージェントに関する包括的なサーベイ論文で,構築方法・応用・評価の3つの観点から体系的なレビューがされている
  • Agentの構築方法として,プロファイリング・メモリ・プランニング・アクションの4つのモジュールからなる統一的なフレームワークを提案し,それぞれのモジュールについて詳細な分析を実施
  • 社会科学・自然科学・工学の3分野における応用事例を広く調査し,さらに主観的/客観的評価手法についても整理することで,この新興分野の課題と今後の方向性を示している

A Review of Prominent Paradigms for LLM-Based Agents: Tool Use (Including RAG), Planning, and Feedback Learning

https://github.com/xinzhel/LLM-Agent-Survey

  • Independent Researcherのxinzhe liが2024年11月に公開したpreprint
  • LLM BasedなAgentにおける3つの主要なパラダイム(Tool Use, Planning, Feedback Learning)について,統一的な分類法を用いた体系的なレビュー
  • LMPRs (LLM-Profiled Roles) として,Policy,Evaluator,Dynamic Modelという3つの共通的な役割を定義し,それらを組み合わせた汎用的なワークフローを提案
  • 2024年の12月8日に更新されており,現在確認している中では最新のLLM Agentに関するサーベイ論文

Understanding the planning of LLM agents: A survey

https://arxiv.org/abs/2402.02716

  • 中国の University of Science and Technology と Huawei Noah's Ark Lab の共同研究チームが2024年2月に公開したpreoprint
  • LLMをAgentのPlanningモジュールとして活用する研究のサーベイ論文
  • Planning能力を5つの主要カテゴリー(タスク分解,プラン選択,外部モジュール,リフレクション,メモリ)に分類し,それぞれの手法や課題を包括的に分析
  • 代表的な手法についてALFWorld,ScienceWorld,HotPotQA,FEVERの4つのベンチマークで実験的な評価を行い,各手法の有効性と限界について議論している

The Rise and Potential of Large Language Model Based Agents: A Survey

https://arxiv.org/abs/2309.07864

  • 中国科学技術大学とHuawei Noah's Ark Labの研究チームが2024年2月にarXivで公開した論文
  • LLMをエージェントのプランニングモジュールとして活用する研究についての体系的なサーベイ論文
  • Task Decomposition,Plan Selection,External Module,Reflection,Memoryという5つの主要なアプローチに分類して,各手法の分析と課題を詳細に議論
  • ALFWorld,ScienceWorld,HotPotQA,FEVERの4つのベンチマークで代表的な手法の性能を評価し,将来の研究課題として幻覚,生成されたプランの実現可能性と効率性,マルチモーダル環境へのフィードバック,きめ細かい評価などを提起

A Survey on the Memory Mechanism of Large Language Model based Agents

https://arxiv.org/abs/2404.13501

  • 中国人民大学人工知能高等学院とHuawei Noah’s Ark Labが2024年4月に公開したpreprint
  • LLMを基盤としたAgentにおける記憶機構を包括的にレビュー
  • 記憶がエージェントの環境との対話や自己進化,長期的な情報保持において重要であることの指摘
  • 記憶の情報源,形式,操作に関する分類と応用事例の整理
  • 現行手法の課題と記憶機構の将来的な研究方向性の提案

LLM Agentの技術的な構成要素

上述したサーベイ論文から読み解くと,LLM BasedなAgentにおける技術的な構成要素は以下であると言えます.下記にこれらの外観をまとめます.

  • Profile
  • Planning
  • Reflection
  • Tool Use
  • Memory

Profile

Agentが特定の役割を引き受けるための基本設定であり,一般にプロンプトに組み込まれ,LLMの振る舞いに影響を与えるモジュール.ここではAgentのパーソナリティや社会的関係性を定義される.Wang et al.ではProfileの主要な構成要素として下記の整理がされている.

  • 基本情報: 年齢,性別,職業など
  • 心理情報: Agentのパーソナリティ特性
  • 社会情報: 他のAgentとの関係性

またWang et al.ではProfileの作成方法として下記の整理がされている.

  1. Handcrafting Method: プロファイルを手動で指定する方法
  2. LLM-generation Method:LLMを使って自動的にプロファイルを生成
    • シードプロファイルから追加プロファイルを生成可能
    • 効率的だが生成されるプロファイルの正確な制御が難しい
    • 例:RecAgent,
  3. Dataset Alignment Method:実世界のデータセットからプロファイルを取得

Li 24では,ProfileモジュールはLLM-Profiled Roles (LMPRs)としてまとめられており,Policy Model (glm_{policy}), Evaluator(glm_{eval}), Dynamic Model(glm_{dynamic})に分けられている.

  • glm_{policy}: 意思決定を行うようプロファイリングされたLM
    • Actor (glm_{actor}): 状態から直接アクションを生成
    • Planner (glm_{planner}): 状態から一連のアクション(プラン)を生成
  • glm_{eval}: 異なるワークフローで重要なフィードバックを提供し,プランニング時のアクションステップの評価や,フィードバック学習時の意思決定の修正をするようにプロファイリングされたLM
  • glm_{dynamic}: 環境の変化を予測・記述し,現在の状態とアクションから次の状態を予測するようにプロファイリングされたLM

Planning (Reasoning)

Planningは,LLMベースのAgentが目標を達成するために適切な行動を計画・選択するプロセスを指す.これは,Agentの振る舞いを構造化し,適応性を高める重要なモジュールと言える.

planningの構成要素

Liang et al.では以下の要素をPlanningの構成要素として整理している.

  1. Goal Decomposition:
    • 高レベルの目標を,実行可能な小さなタスクに分割するプロセス.
      例: 「ユーザーに情報を提供する」という目標を「情報収集」「情報整理」「情報伝達」に分解.
  2. Action Planning:
    • タスクを実行するための具体的な行動を設計.一般にはプロンプトを通じてLLMに指示し,計画を生成させる.
    • 例: 実行順序を含むステップバイステップの計画.
  3. Execution Monitoring:
    • 計画が適切に進行しているかを監視し,状況に応じて計画を修正する.
    • 例: ユーザーからの新しい要求に対応して計画を再編成.

Planningの方法

Liang et al.では,LLMを用いたPlanningの方法を以下のように分類している.

  1. Explicit Prompting Method:
    • プロンプトに直接,計画の生成や目標分解を指示する方法.
    • 例: Chain-of-ThoughtやReActなど,逐次的に考えさせるフレームワーク.
  2. Iterative Refinement Method:
    • 計画の生成後に反復的に見直しを行い,改善する手法.
    • 例:Self-Refine
  3. Autonomous Planning Module:

Wang et al.では,フィードバックの有無による2つの大分類がされている.フィードバック無しのPlanningはシンプルな実装であるが,複雑なタスクの遂行はやや不向きであり,フィードバック有りのPlanningは推論時間の懸念や,設計が煩雑になるものの,複雑かつ長期的な推論が可能になる.

  1. Planning without Feedback
    • Single Path Reasoning
      • Chain of Thought (CoT): プロンプトに推論ステップを例として含め,段階的な計画を生成
      • Zero-shot-CoT: "think step by step"などのトリガー文でLLMに推論プロセスを生成させる
      • RePrompting: 各ステップの前提条件を確認し,必要に応じて計画を再生成
      • HuggingGPT : タスクをサブゴールに分解し、Huggingfaceを使って各サブゴールを解決
    • Multi Path Reasoning
      • CoT-SC: 複数の推論パスを生成し,最も頻度の高い答えを選択
      • Tree of Thoughts (ToT): ツリー状の推論構造を構築し,各ノードをLLMで評価
      • GoT: ToTのツリー構造をグラフ構造に拡張
      • AoT: アルゴリズム例を組み込んで推論プロセスを強化
    • External Planner
      • LLM+P: タスク記述をPDDLに変換し,外部プランナーで処理
      • LLM-DP: 観察・現在の状態・目標をPDDLに変換して行動シーケンスを決定
      • CO-LLM: 高レベルの計画はLLMで生成し,低レベルの制御は外部プランナーで実行
  2. Planning with Feedback
    • Environmental Feedback
      • ReAct: 思考-行動-観察の3つ組で計画を構築し、観察結果を次の思考に反映
      • Voyager: プログラム実行の進捗,エラー,自己検証結果に基づいて計画を修正
      • SayPlan: シーングラフシミュレータからのフィードバックで計画を検証・改善
      • DEPS: タスク失敗の詳細な理由を基に計画を修正
    • Human Feedback:
      • Inner Monologue: シーンの説明に関する人間からのフィードバックを収集し,計画に組み込む
    • Model Feedback:
      • SelfCheck: 推論ステップを自己評価して誤りを修正
      • InterAct: 異なる言語モデルを補助的な役割として使用
      • ChatCoT: 評価モジュールで推論ステップを監視

Reflection

ReflectionはAgentが過去の行動や計画を振り返り,それらをもとに自身の戦略や計画を洗練させることを指す.内省的なフィードバックを通じて,学習および適応能力を強化し,タスク遂行の効率性や精度を向上させる役割を担うことが目的と言える.
Xi et al.では,Reflectionの具体的なプロセスとして以下が挙げられている.

  • 内省的フィードバック:
    過去の行動や計画を振り返り,それらを評価・改善するプロセス.例として,行動後の観察やタスク達成の成果から得たフィードバックが挙げられる.
  • 計画の改良:
    Reflectionを通じて,環境やタスク要件に基づいて計画を修正し,実世界の状況により適応する.
  • タスク遂行への応用:
    Reflectionにより得られた知見をもとに,新たなタスクや環境に適応した計画や行動を策定.

Reflectionを用いることで,複雑な文脈や長期的なタスクでもエージェントの一貫性を保つことができ,新たな情報や状況に応じた動的な適応力・柔軟性の向上が期待できる.また過去の行動や意思決定の自己評価を通じて,出力の信頼性の向上にも貢献していると言える.

[NeurIPS 2023] Reflexion: Language Agents with Verbal Reinforcement Learning

https://github.com/noahshinn/reflexion

Reflectionの代表的な手法として,Shinnらが提案するReflexionが挙げられる.Reflexionは,環境からのフィードバック(自由形式の言語またはスカラー)を言語的フィードバックに変換し,次の試行に活かすフレームワークである.具体的には,

  • Actionに対する環境からの評価(スカラー値,バイナリなど)を受け取り,
  • その評価を,「なぜ失敗したのか」「どう改善すべきか」といった具体的な言語による振り返りに変換(内省)
  • 内省を次の試行時のコンテキストとして活用することで,より適切な行動を選択できるようになります

人間が経験から学ぶように,AIも試行錯誤を通じて徐々に性能を向上させることが期待できる.またLMの重みを更新することなく,記憶を通じた学習を実現している点が特徴的である.


PromptEngineeringGuideの解説がわかりやすかったので参考になるかと思います.
https://www.promptingguide.ai/jp/techniques/reflexion

Tool Use

Tool Useは,LLMベースのAgentが外部ツールと連携する能力を指す.これにより,Agentはモデルの内部知識を補完する形で,数学的計算,Web検索,DBからのデータ取得などの様々なタスクを遂行可能となる.

代表的な例としては下記などが挙げられる.

Memory

環境から得た情報を保存し,将来の行動に活用するための要素.Transformerのコンテキストウィンドウ内の入力に相当する短期記憶(Short-term memory)と,外部のベクトルストレージに保存され,必要に応じて素早く検索・取得可能な情報である長期記憶 (Long-term memory)に分けられている.HuangらのサーベイではRAG-based MemoryとEmbodied Memory(モデルに組み込まれたメモリ)に整理されているが,ここではより広く記述されているWangらのサーベイにおける定義をまとめる.Memoryについて以下のような整理がされている.

Memory構造

  • Unified Memory
    • 短期記憶のみをシミュレート
    • In-context learningで実装され,記憶情報は直接プロンプトに書き込まれる
    • コンテキストウィンドウの制限があるため,大量の記憶の保持が困難
  • Hybrid Memory
    • 短期記憶と長期記憶の両方を明示的にモデル化
    • 短期記憶は最近の知覚を一時的にバッファし,長期記憶は重要な情報を時間をかけて定着

Memory形式

  • Natural Languages
    • 自然言語で記憶情報を直接記述
    • 柔軟で理解しやすい表現が可能であり,豊かな意味情報を保持可能
  • Embeddings
    • 記憶情報をベクトルとしてエンコード
    • 効率的な検索と取り出しが可能
  • Databases
    データベースに記憶情報を格納(当然SQLなどによる操作が可能)
  • Structured Lists
    • リストとして記憶情報を整理
    • 効率的で簡潔な意味表現が可能

Memory操作

  • Memory Reading
    • 記憶からの情報抽出
    • Recency(新しさ),Relevance(関連性),Importance(重要性)に基づく抽出
    • 基準の定義: m* = arg min(αsrec(q,m) + βsrel(q,m) + γsimp(m))
      • q: クエリ(現在のタスク/状況)
      • m: メモリ内の情報
      • srec, srel, simp: 上述した基準のスコアリング関数
      • α, β, γ: 重み付けパラメータ
  • Memory Writing
    • 環境から知覚した情報をメモリに保存する操作
    • Memory Duplicated
      • 既存の記憶と類似した情報をどう統合するか(例:同じサブゴールに関する成功した行動シーケンスを統合して一つの解決プランにまとめる)
    • Memory Overflow
      • メモリが一杯になった時の対処方法(例:FIFO方式での古い記憶の削除,ユーザコマンドによる明示的な削除)
  • Memory Reflection
    • 記憶に基づく抽象的な推論することでより高次の洞察を得る
    • 例:
      • 低レベルの記憶:「Klaus Muellerは研究論文を書いている」「Klaus Muellerは図書館員と研究について話している」
      • 高レベルの記憶:「Klaus Muellerは研究に専念している」

おわりに

こちらのテックブログは,画像生成やLLM開発などを通して,社内の技術力を先導しているneoAIの研究組織「neoAI Research」メンバーで執筆しています.
「未来を創る生成AIの先駆者になろう」
neoAIでは最先端技術を駆使するプロフェッショナル集団として,業務効率化を超えて社会に新たな価値を創出していきます.あなたの好奇心と可能性を,neoAIで開花させてみませんか?
【現在採用強化中です!】
・AIエンジニア/PM職
・Biz Dev
・自社プロダクトエンジニア職
・オープンポジション
【詳しい採用情報はこちらから!】
https://neoai.jp/career

neoAI

Discussion