LLMエージェント

自律的にタスクを遂行するAIエージェント。計画・実行・反省のループ、記憶、マルチエージェント協調。

最終更新:2025年11月

1. エージェントの概要

1.1 エージェントとは

環境を認識し、自律的に意思決定・行動するシステム。

  • 目標指向:与えられた目標の達成を目指す
  • 自律性:人間の逐次指示なしで動作
  • 適応性:状況に応じて行動を調整

1.2 LLMエージェントの特徴

  • LLMを「脳」として使用
  • 自然言語で目標・状況を理解
  • 複雑な推論と計画が可能
  • ツールを使って外部と相互作用

1.3 エージェントの進化

時期 発展
2023/3 AutoGPT登場、大きな注目
2023 BabyAGI、AgentGPT等
2024 Claude Computer Use、Devin
2025 より実用的なエージェント

2. エージェントアーキテクチャ

2.1 基本構成要素

┌─────────────────────────────────────┐
│           LLMエージェント            │
├─────────────────────────────────────┤
│  [LLM Core] - 推論・計画・意思決定   │
│       ↓                             │
│  [Planning] - タスク分解・順序付け   │
│       ↓                             │
│  [Memory] - 短期・長期記憶           │
│       ↓                             │
│  [Tools] - 外部ツール・API           │
│       ↓                             │
│  [Action] - 実行・環境への働きかけ   │
└─────────────────────────────────────┘

2.2 認知アーキテクチャ

人間の認知プロセスを模倣:

  • 知覚:環境からの入力処理
  • 推論:状況分析と判断
  • 計画:行動の順序決定
  • 実行:アクションの実施
  • 学習:経験からの改善

2.3 エージェントループ

while not goal_achieved:
    # 1. 観察
    observation = perceive(environment)
    
    # 2. 思考(推論・計画)
    thought = llm.think(observation, memory, goal)
    
    # 3. 行動決定
    action = llm.decide_action(thought)
    
    # 4. 実行
    result = execute(action)
    
    # 5. 記憶更新
    memory.update(observation, action, result)
    
    # 6. 反省(オプション)
    reflection = llm.reflect(result, goal)

3. 計画・推論

3.1 タスク分解

複雑なタスクを小さなサブタスクに分割。

目標: ウェブサイトを作成する

分解:
1. 要件を整理する
2. 技術スタックを決定する
3. デザインを作成する
4. HTMLを実装する
5. CSSでスタイリング
6. JavaScriptで機能追加
7. テストする
8. デプロイする

3.2 Chain-of-Thought Planning

ステップバイステップで計画を立案:

  • 各ステップの依存関係を考慮
  • 必要なリソース・ツールを特定
  • 潜在的な問題を予測

3.3 Tree of Thoughts

複数の計画候補を探索:

  • 分岐する可能性を列挙
  • 各分岐を評価
  • 最適な経路を選択
  • 必要に応じてバックトラック

3.4 再計画

実行中に計画を修正:

  • 予期せぬ結果への対応
  • 新しい情報の反映
  • 失敗からの回復

4. 記憶システム

4.1 記憶の種類

種類 内容 実装
作業記憶 現在のコンテキスト プロンプト内
短期記憶 最近の会話・行動 スライディングウィンドウ
長期記憶 過去の経験・知識 ベクトルDB

4.2 記憶の実装

class AgentMemory:
    def __init__(self):
        self.working = []      # 現在のタスク情報
        self.short_term = []   # 最近N件の履歴
        self.long_term = VectorDB()  # 永続化記憶
    
    def add(self, item):
        self.short_term.append(item)
        if is_important(item):
            self.long_term.store(item)
    
    def retrieve(self, query, k=5):
        return self.long_term.search(query, k)

4.3 記憶の検索と圧縮

  • 関連性検索:現在のタスクに関連する記憶を取得
  • 要約:長い履歴を要約して圧縮
  • 重要度:重要な情報を優先的に保持

5. 反省・自己改善

5.1 Reflexion

Shinn et al. (2023):言語的なフィードバックによる学習。

1. タスクを試行
2. 結果を評価
3. 失敗の原因を分析(反省)
4. 改善策を言語化
5. 反省を記憶に保存
6. 次の試行で反省を活用

5.2 自己批判

LLM自身が出力を批評:

  • 計画の妥当性をチェック
  • 論理的な誤りを検出
  • 改善点を提案

5.3 Self-Consistency

複数回生成して一貫性を確認:

  • 同じ問題に複数の解答を生成
  • 多数決または一貫する解答を選択
  • 信頼性の向上

6. マルチエージェント

6.1 概要

複数のエージェントが協調してタスクを遂行。

  • 役割分担:専門化したエージェント
  • 議論:異なる視点からの検討
  • 協調:複雑なタスクの分散処理

6.2 役割ベースのエージェント

チーム構成例:
- PM Agent: 計画・調整
- Developer Agent: コード実装
- Reviewer Agent: コードレビュー
- Tester Agent: テスト実行
- Designer Agent: UI設計

6.3 議論・討論

複数エージェントで議論:

  • 異なる立場からの意見
  • 反論と防御
  • 合意形成

6.4 代表的システム

システム 特徴
AutoGen Microsoft、会話型マルチエージェント
CrewAI 役割ベースの協調
MetaGPT ソフトウェア開発チーム
ChatDev 仮想ソフトウェア会社

7. フレームワーク

7.1 主要フレームワーク

名前 特徴
LangChain 最も普及、豊富なツール
LlamaIndex RAG特化、データ連携
AutoGPT 自律エージェントの先駆け
OpenAI Assistants 公式API、統合しやすい

7.2 実用エージェント

製品 用途
Devin AIソフトウェアエンジニア
Claude Computer Use PC操作エージェント
GitHub Copilot Workspace 開発ワークスペース
Cursor AIコードエディタ

7.3 課題

  • 信頼性:エラー・ループの発生
  • コスト:多数のAPI呼び出し
  • 速度:複雑なタスクに時間がかかる
  • 安全性:意図しない行動のリスク

8. 参考文献

  • Yao et al. (2023). "ReAct: Synergizing Reasoning and Acting in Language Models" ICLR
  • Shinn et al. (2023). "Reflexion: Language Agents with Verbal Reinforcement Learning" NeurIPS
  • Park et al. (2023). "Generative Agents: Interactive Simulacra of Human Behavior" UIST
  • Wang et al. (2024). "A Survey on Large Language Model based Autonomous Agents" arXiv
  • Wu et al. (2023). "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation" arXiv