lhh737/LangChain-ReAct-Agent
基于 LangChain/LangGraph 的 ReAct Agent,结合 RAG 检索、工具调用与 Streamlit 界面,面向智能客服与报告生成场景。
LangChain ReAct 에이전트 – 추론, 도구 사용, RAG를 갖춘 AI 기반 챗봇
개요
- LangChain과 LangGraph 위에 ReAct (Reasoning + Acting) 에이전트를 구축하는 Python 애플리케이션.
- 지식 베이스에서 질문에 답하고, 외부 도구(날씨, 사용자 데이터, 보고서 생성)를 호출하고, 프롬프트를 동적으로 전환할 수 있으며, 내부 생각-행동-관찰 루프를 Streamlit UI에 표시합니다.
주요 기능
| 기능 | 설명 |
|---|---|
| ReAct 추론 루프 | 에이전트가 Thought를 반복 생성하고, Action (예: 도구 호출 또는 RAG 쿼리 실행)을 결정하고, Observation을 받고, 답할 수 있을 때까지 루프. |
| RAG 강화 QA | 로봇 청소기에 관한 문서(txt/pdf)를 DashScope 임베딩을 사용하여 Chroma 벡터 저장소에 인덱싱. 에이전트가 관련 청크를 검색하고 LLM이 요약. |
| 멀티 도구 호출 | 날씨 조회, 사용자별 데이터 검색, 보고서 생성을 위한 내장 도구. 미들웨어가 사용자 의도에 따라 올바른 도구를 자동 선택. |
| 동적 프롬프트 전환 | 일반 Q&A용과 보고서 생성용의 두 시스템 프롬프트 템플릿을 미들웨어가 런타임에 교체. |
| Streamlit 프론트엔드 | 대화를 표시하고, LLM 출력을 토큰 단위로 스트리밍하고, 에이전트의 내부 추론 체인을 시각화하는 웹 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. 클론
git clone 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 참조).
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트