※この記事は AI(Microsoft Copilot)によって生成され、筆者が内容を確認・調整しています。
※この記事は前回の記事
https://qiita.com/genkyoryo110/items/bf7ff080a2a2fe4d9fe8
の続編です。
はじめに
本記事では、LangGraph・FAISS・Ollama を組み合わせて構築した
「AIタウン」Version 8 の技術的な実装内容と設計思想をまとめます。
AIタウンは、
「管理AIがユーザー入力を分類し、適切な作業AIへ委譲する都市型AIアーキテクチャ」
をコンセプトにしたプロジェクトです。
Version 8 では、以下の基盤を完成させました。
- タスク分類(chat / search / save / summarize)
- 作業AI(chat_agent / rag_agent / memory_agent / summarize_agent)
- RAGStore による永続化記憶
- LangGraph によるノードフロー構築
- pytest による自動テスト整備
この記事では、Version 8 の技術内容を体系的に解説します。
1. Version 8 の目的
Version 8 の主目的は以下の通りです。
- ユーザー入力を分類し、適切な作業AIへ委譲する基盤を整備する
- 記憶を永続化し、RAG検索で再利用できるようにする
- LangGraph によるノードフローを確立する
- テスト可能な構造を持たせ、品質を担保する
- Version 9 のタスク拡張に備える
2. ディレクトリ構造
解析対象は以下の5ディレクトリ。
ai-town/
├─ agents/ # 各エージェント(LLM)の実装
├─ city_controller/ # LangGraph ノードと制御フロー
├─ memory/ # RAGStore(FAISS永続化)
├─ test/ # pytest テスト群
└─ tools/ # LangChain BaseTool ラッパー
3. LangGraph のノード構成
Version 8 の LangGraph は以下の4ノードで構成されます。
ノードの役割
| ノード | 役割 |
|---|---|
| task_planner | ユーザー入力を分類(chat / search / save / summarize) |
| agent_selector | タスク種別に応じて作業AIを選択 |
| worker_call | 選択されたツールを実行 |
| memory_update | save タスク時に記憶を永続化 |
4. 作業AI(agents/)
Version 8 では4種類の作業AIを実装しました。
4-1. chat_agent
自然な会話応答を生成するエージェント。
4-2. rag_agent
RAGStore から文脈を検索し、コンテキスト付き応答を生成。
4-3. memory_agent(要約して保存)
- 長文 → 要約
- 短文 → 保存用に整形
- RAGStore に保存する前処理を担当
4-4. summarize_agent(要約専用)
文章全体を簡潔にまとめる専用エージェント。
5. RAGStore(FAISS永続化)
Version 8 の RAGStore は以下の特徴を持ちます。
- FAISS によるローカル永続化
- 起動時に空インデックスを自動生成
-
add_text()→save()による即時永続化 -
search()による類似検索 - pytest では
tmp_pathを使って永続化テストを実施
6. TaskPlanner の分類ロジック
Version 8 のタスク分類は以下の4種類。
| タスク | キーワード例 |
|---|---|
| save | 覚えて、保存して、記録して |
| search | 調べて、検索、情報 |
| summarize | 要約、まとめて |
| chat | 上記以外 |
LLM には JSONOutputParser を使い、
{"task_type": "save"} のような形式で返します。
7. pytest によるテスト整備
Version 8 では、以下のテストを作成しました。
test/
├─ test_agents/
├─ test_city_controller/
├─ test_memory/
└─ test_tools/
テスト内容
- agents の run() 動作確認
- LangGraph の統合テスト(graph.invoke)
- RAGStore の永続化テスト(tmp_path)
- tools の _run() テスト
テスト結果
17 passed, 1 warning in 0.54s
Version 8 の基盤は十分に安定していることが確認できました。
8. Version 9 の拡張方針(概要)
Version 9 では、より実務的なタスクとエージェントを追加します。
8-1. 新規タスク分類案
- generate(文章生成)
- code(コード生成)
- rewrite(書き換え)
- translate(翻訳)
- plan(計画立案)
8-2. 新規エージェント案
- code_agent
- writer_agent
- translator_agent
- planner_agent
8-3. LangGraph の拡張
- ノード追加
- 並列処理
- 複数タスク候補の返却
- worker_call の高度化
9. まとめ
Version 8 では、AIタウンの基盤となる以下の構造を完成させました。
- 管理AIによるタスク分類
- 作業AIへの委譲
- RAGStore による永続化記憶
- LangGraph による明確なノードフロー
- pytest による品質担保
この基盤の上に、Version 9 では
より高度なタスク拡張とエージェント追加を行い、
都市型AIアーキテクチャとしての完成度を高めていきます。
✨ おわりに
Version 8 の開発は、AIタウンの「基盤構築フェーズ」を完了させる重要なステップでした。
LangGraph × RAG × 複数エージェントという構成は、
今後の AI システム開発においても応用可能な強力なアーキテクチャです。
Version 9 では、さらに実務的なタスク処理能力を持つ都市へと進化させます。