lhh737/LangChain-ReAct-Agent
基于 LangChain/LangGraph 的 ReAct Agent,结合 RAG 检索、工具调用与 Streamlit 界面,面向智能客服与报告生成场景。
LangChain ReAct Agent – 推論、ツール使用、RAGを備えたAI搭載チャットボット
概要
- LangChainとLangGraph上にReAct(Reasoning + Acting)エージェントを構築するPythonアプリケーション。
- ナレッジベースからの質問応答、外部ツール(天気、ユーザーデータ、レポート生成)の呼び出し、プロンプトの動的切り替えが可能で、内部の思考・行動・観察ループをStreamlit UIで表示。
主な機能
| 機能 | 説明 |
|---|---|
| ReAct推論ループ | エージェントがThoughtを生成し、Action(ツール呼び出しやRAGクエリなど)を決定、Observationを受け取り、回答できるまでループ。 |
| RAG拡張QA | ロボット掃除機に関するドキュメント(txt/pdf)をChromaベクトルストアにDashScope embeddingsを使用してインデックス化。エージェントが関連チャンクを取得し、LLMが要約。 |
| マルチツール呼び出し | 天気検索、ユーザー固有データ取得、レポート生成のための組み込みツール。ミドルウェアがユーザーの意図に基づいて適切なツールを自動選択。 |
| 動的プロンプト切り替え | 通常のQ&A用とレポート生成用の2つのシステムプロンプトテンプレートを、ミドルウェアが実行時に切り替え。 |
| Streamlitフロントエンド | 会話を表示し、LLM出力をトークン単位でストリームし、エージェントの内部推論チェーンを可視化するWeb UI。 |
| モジュール式YAML駆動設計 | エージェントロジック、RAG設定、ベクトルストアパラメータ、プロンプトパスが個別のYAMLファイルに存在し、コード変更なしで再設定が容易。 |
仕組み(高レベルフロー)
- ユーザーがStreamlitチャットボックスにクエリを入力。
- ミドルウェアが使用するプロンプトテンプレートを決定し、ReActループを開始。
- エージェントがThoughtを生成→Action(例:RAG検索や天気API呼び出し)を決定。
- 選択されたツールが実行され、Observationを返す。
- ステップ3〜4を、エージェントが最終回答を生成できるまで繰り返し、UIにストリーム返信。
技術スタック
- LLM: Alibaba DashScope ChatTongyi(DashScope API経由)。
- エージェントフレームワーク: LangChain 0.3 + LangGraph 0.2。
- ベクトルストア: Chroma(永続的なディスクインデックス)。
- 埋め込みモデル: DashScope埋め込みサービス。
- ドキュメント処理: PyPDF、RecursiveCharacterTextSplitter。
- フロントエンド: Streamlit 1.40。
- 設定: エージェント、RAG、プロンプト、Chroma用のYAMLファイル。
はじめに(READMEに記載)
# 1. クローン
ジットクローン https://github.com/lhh737/LangChain-ReAct-Agent.git && cd LangChain-ReAct-Agent
# 2. インストール
pip install -r requirements.txt
# 3. DashScope APIキーを設定
export DASHSCOPE_API_KEY="your-key" # Windowsでは `set DASHSCOPE_API_KEY=your-key`
# 4. ナレッジベースを構築(初回のみ)
python -c "from rag.vector_store import VectorStoreService; VectorStoreService().load_document()"
# 5. UIを起動
streamlit run app.py
ブラウザでhttp://localhost:8501を開き、サンプル質問を試してください:
- "掃地機器人有哪些主要功能?" → RAG QAをトリガー。
- "如果機器人無法正常回充,該如何處理?" → 故障診断推論をトリガー。
- "請根據用戶數據生成一份個性化使用報告" → レポート生成ツールチェーンをトリガー。
プロジェクト構成
agent/– コアReActロジックとツール定義。rag/– ベクトルストア処理とRAGサービス。model/– LLMと埋め込みクライアントを作成するファクトリ。config/– 動作を制御するYAMLファイル。prompts/– 生のプロンプトテンプレート。utils/– ヘルパーモジュール(設定ローダー、ファイル処理、ロギングなど)。app.py– Streamlitエントリポイント。
使用対象
- ツール使用を伴うReActスタイルエージェントの参照実装を求める開発者。
- ナレッジベース検索と外部データを組み合わせるAI支援カスタマーサービスボットを構築するチーム。
- 動的プロンプト管理とRAG統合のためのLangChain/LangGraphパターンを探求する方。
ライセンス: MIT(LICENSE参照)。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト