0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LangGraph × RAG × 複数エージェントで構築する「AIタウン」Version 8 の技術解説

0
Posted at

※この記事は 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 では、さらに実務的なタスク処理能力を持つ都市へと進化させます。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?