LLMエージェント
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