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ファイルに存在し、コード変更なしで再設定が容易。

仕組み(高レベルフロー)

  1. ユーザーがStreamlitチャットボックスにクエリを入力。
  2. ミドルウェアが使用するプロンプトテンプレートを決定し、ReActループを開始。
  3. エージェントがThoughtを生成→Action(例:RAG検索や天気API呼び出し)を決定。
  4. 選択されたツールが実行され、Observationを返す。
  5. ステップ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参照)。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト