# RAG与智能体开发 **Repository Path**: qjwtdd329/agent ## Basic Information - **Project Name**: RAG与智能体开发 - **Description**: **智扫通机器人智能客服系统** 基于 LangChain + 阿里云通义千问构建的智能客服系统。技术栈:Python + Streamlit + Chroma + DashScope Embeddings。核心功能包括:RAG知识库问答、ReAct智能体工具调用、流式对话响应、用户报告生成。通过中间件机制实现提示词动态切换,支持问答与报告两种模式无缝切换,为扫地机器人产品提供智能客服解决方案。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-15 - **Last Updated**: 2026-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🧹 智扫通机器人智能客服 — RAG + ReAct Agent 基于 **RAG(检索增强生成)** 与 **ReAct 智能体模式** 的扫地机器人智能客服系统,支持多工具协同调用、向量知识库检索和个性化使用报告生成。 ## 项目结构 ``` ├── app.py # Streamlit 入口(Web UI) ├── agent/ │ ├── react_agent.py # ReAct 智能体核心 │ └── tools/ │ ├── agent_tools.py # 七种工具定义 │ └── middleware.py # 中间件(监控/日志/提示词切换) ├── rag/ │ ├── rag_service.py # RAG 检索增强生成服务 │ └── vector_store.py # ChromaDB 向量库管理 ├── model/ │ └── factory.py # 模型工厂(通义千问 + 嵌入模型) ├── config/ │ ├── agent.yml # 智能体配置 │ ├── chroma.yml # 向量库配置(分块/检索参数) │ ├── prompts.yml # 提示词路径管理 │ └── rag.yml # 模型选择 ├── prompts/ │ ├── main_prompt.txt # 主对话提示词 │ ├── rag_summarize_prompt.txt # RAG 摘要提示词 │ └── report_prompt.txt # 报告生成提示词 ├── data/ │ ├── external/records.csv # 用户使用记录数据 │ ├── 扫地机器人 100 问.txt # 知识库 - FAQ │ ├── 故障排除.txt # 知识库 - 故障处理 │ ├── 维护保养.txt # 知识库 - 维护保养 │ └── 选购指南.txt # 知识库 - 选购建议 └── utils/ ├── config_handler.py # YAML 配置加载 ├── file_handler.py # 文件处理 ├── logger_handler.py # 日志管理 ├── path_tool.py # 路径工具 └── prompt_loader.py # 提示词加载器 ``` ## 技术栈 | 组件 | 技术选型 | |------|----------| | **LLM** | 通义千问 `qwen3-max`(DashScope) | | **Embedding** | `text-embedding-v4`(DashScope) | | **向量数据库** | ChromaDB | | **智能体框架** | LangChain ReAct Agent | | **Web UI** | Streamlit | | **编程语言** | Python 3.10+ | ## 核心功能 ### 1. 🤖 ReAct 智能体 严格遵循 **思考 → 行动 → 观察 → 再思考** 的推理循环,支持自主判断何时调用工具、何时生成最终回答。 ### 2. 🛠️ 七种工具 | 工具 | 功能 | |------|------| | `rag_summarize` | 从向量知识库检索扫地机器人专业知识 | | `get_weather` | 查询指定城市实时天气(湿度/降雨) | | `get_user_location` | 获取用户所在城市 | | `get_user_id` | 获取当前用户唯一标识 | | `get_current_month` | 获取当前月份 | | `fetch_external_data` | 检索用户指定月份的使用记录 | | `fill_context_for_report` | 为报告生成注入上下文 | ### 3. 📚 RAG 检索增强 - 支持 TXT / PDF 文档入库 - 自定义分块策略(chunk_size=200, overlap=20) - 基于文件 MD5 做增量更新,避免重复处理 - Top-K 检索(默认 3 条) ### 4. 📊 个性化报告生成 支持根据用户真实使用记录(CSV)自动生成月度使用报告,涵盖清洁效率、耗材状态等维度。 ### 5. 🔗 中间件机制 - 工具调用监控 - 模型调用日志 - 动态提示词切换(报告场景自动切换提示词) ## 快速开始 ### 前提条件 - Python 3.10+ - 阿里云 DashScope API Key(`DASHSCOPE_API_KEY` 环境变量) ### 安装 ```bash # 1. 克隆仓库 git clone https://gitee.com/qjwtdd329/agent.git cd agent # 2. 创建虚拟环境 python -m venv .venv source .venv/bin/activate # Linux/Mac # 或 .venv\Scripts\activate # Windows # 3. 安装依赖 pip install -r requirements.txt # 4. 配置环境变量 export DASHSCOPE_API_KEY="your-api-key-here" ``` ### 启动 ```bash streamlit run app.py ``` 访问 `http://localhost:8501` 即可使用。 ### 初始化知识库 首次使用需要将知识文档导入 ChromaDB 向量库: ```bash python rag/vector_store.py ``` ## 配置说明 所有配置集中在 `config/` 目录下的 YAML 文件中: - `chroma.yml` — 向量库分块大小、重叠数、检索数量(k值)、支持的文件类型等 - `rag.yml` — 选择使用的模型名称 - `agent.yml` — 智能体外挂数据路径 - `prompts.yml` — 各场景提示词文件路径映射 ## 自定义扩展 - **添加新工具**:在 `agent/tools/agent_tools.py` 中定义函数,在 `react_agent.py` 的 `tools` 列表中注册 - **添加知识文档**:放入 `data/` 目录,支持 `.txt` 和 `.pdf` 格式 - **自定义提示词**:修改 `prompts/` 目录下的对应 `.txt` 文件 ## 许可证 MIT