agent_proj/README.md

7.4 KiB
Raw Permalink Blame History

智扫通智能机器人客服

基于 LangChain + RAG + Agent 的智能问答系统,专注于扫地机器人和扫拖一体机器人的专业客服

项目简介

智扫通是一个基于大语言模型的智能客服系统,利用 LangChain 的 Agent 框架和 RAG (检索增强生成) 技术,为用户提供专业、准确的扫地机器人相关问答服务。

核心功能

  • 智能问答:基于 ReAct 框架的 Agent 自主工具调用
  • 专业知识库:通过 RAG 从向量库检索专业资料
  • 个性化服务:支持生成用户使用报告
  • 多轮对话:保持会话上下文,提供连贯回答
  • 流式输出:实时显示思考过程和回答内容

技术栈

类别 技术/框架 版本
前端 Streamlit 最新
AI 框架 LangChain >= 0.3.0
大语言模型 通义千问 (qwen3-max) -
向量数据库 Chroma 最新
Embedding DashScope (text-embedding-v4) -
配置管理 YAML -
语言 Python 3.9+

安装指南

1. 环境要求

  • Python 3.9 或更高版本
  • 已配置阿里云 DashScope API 密钥

2. 安装依赖

# 克隆项目
git clone https://github.zhang-heng.com/czzhangheng/agent_proj
cd agent_proj

# 安装依赖
pip install -r requirements.txt

3. 配置环境变量

在项目根目录创建 .env 文件,添加以下内容:

# DashScope API 密钥
DASHSCOPE_API_KEY=your_api_key_here

4. 知识库初始化

首次运行前需要初始化知识库:

# 加载知识库到向量库
python -m rag.vector_store

快速开始

1. 启动 Web 应用

# 启动 Streamlit 应用
streamlit run app.py

2. 访问界面

打开浏览器访问:http://localhost:8501

3. 开始对话

在聊天输入框中输入问题,例如:

  • "扫地机器人如何保养?"
  • "推荐适合小户型的扫地机器人"
  • "生成我的使用报告"

项目结构

agent_proj/
├── agent/               # Agent 核心模块
│   ├── tools/          # 工具定义和中间件
│   └── react_agent.py  # ReAct Agent 封装
│
├── config/             # 配置文件
│   ├── agent.yaml      # Agent 配置
│   ├── chroma.yaml     # 向量库配置
│   ├── prompts.yaml    # Prompt 路径配置
│   └── rag.yaml        # RAG 模型配置
│
├── data/               # 知识库和外部数据
│   ├── external/       # 外部数据 (CSV)
│   └── 知识库文件 (pdf/txt) # 专业资料
│
├── docs/               # 项目文档
│
├── model/              # 模型工厂
│   └── factory.py      # LLM/Embedding 模型创建
│
├── prompts/            # Prompt 模板
│   ├── main_prompt.txt # 主系统 Prompt
│   ├── rag_summarize.txt # RAG 总结 Prompt
│   └── report_prompt.txt # 报告生成 Prompt
│
├── rag/                # RAG 服务
│   ├── rag_service.py  # RAG 总结服务
│   └── vector_store.py # 向量存储服务
│
├── utils/              # 工具模块
│   ├── config_handler.py # 配置加载
│   ├── file_handler.py # 文件处理
│   ├── logger_handler.py # 日志管理
│   ├── path_tool.py    # 路径工具
│   └── prompt_loader.py # Prompt 加载
│
├── chroma_db/          # Chroma 向量数据库
├── logs/               # 日志目录
├── app.py              # Streamlit 主应用
├── requirements.txt    # 依赖列表
└── README.md           # 项目说明

核心模块

Agent 模块

  • ReactAgent:封装 LangChain Agent实现 ReAct 思考框架
  • 工具系统:支持 7 种工具,包括 RAG 检索、天气查询、用户信息获取等
  • 中间件:监控工具调用、动态提示词切换、日志记录

RAG 模块

  • 向量存储:基于 Chroma 实现知识向量存储
  • 文档加载:支持 PDF 和 TXT 文件
  • 文本分片:使用 RecursiveCharacterTextSplitter 进行智能分片
  • 相似度检索:基于余弦相似度的 Top-K 检索

模型管理

  • 模型工厂:统一管理 LLM 和 Embedding 模型
  • 动态配置:通过 YAML 配置文件管理模型参数

配置说明

1. RAG 配置 (config/rag.yaml)

# 大语言模型
chat_model_name: "qwen3-max"

# Embedding 模型
embeddings_model_name: "text-embedding-v4"

2. 向量库配置 (config/chroma.yaml)

# 集合名称
collection_name: "agent"

# 持久化目录
persist_directory: "chroma_db"

# 检索 Top-K
k: 3

# 数据目录
data_path: "data"

# 分片配置
chunk_size: 200
chunk_overlap: 20
separators: ["\n\n", "\n", ".", "!", "?", "。", "", "", " "]

3. Agent 配置 (config/agent.yaml)

# 外部数据路径
external_data_path: "data/external/records.csv"

4. Prompt 配置 (config/prompts.yaml)

# 主 Prompt 路径
main_prompt_path: "prompts/main_prompt.txt"

# RAG 总结 Prompt 路径
rag_summarize_prompt_path: "prompts/rag_summarize.txt"

# 报告 Prompt 路径
report_prompt_path: "prompts/report_prompt.txt"

使用示例

1. 基本问答

用户"扫地机器人如何处理毛发?"

系统

我需要从知识库中检索关于扫地机器人处理毛发的专业信息,以便给出准确的回答。

[参考资料]: 扫地机器人在处理毛发时应定期清理滚刷和边刷建议每使用2-3次清理一次。对于宠物家庭建议每天清理。部分高端机型配备防缠绕设计可有效减少毛发缠绕问题。 | 参考源: {'source': 'data/维护保养.txt'}

扫地机器人处理毛发的建议:
1. 定期清理滚刷和边刷每使用2-3次清理一次
2. 宠物家庭建议每天清理
3. 选择配备防缠绕设计的高端机型
4. 定期检查过滤网,避免毛发堵塞

2. 个性化报告

用户"生成我的使用报告"

系统

我需要为用户生成使用报告首先获取用户ID然后获取当前月份再调用报告上下文工具最后获取用户的使用数据。

[工具调用] get_user_id
用户ID1005

[工具调用] get_current_month
当前月份2025-06

[工具调用] fill_context_for_report
fill_context_for_report已调用

[工具调用] fetch_external_data
用户1005在2025-06的使用数据{'特征': '高效模式使用频繁', '效率': '平均清洁时间30分钟', '耗材': '滚刷损耗正常', '对比': '比上月提升15%'}

根据您的使用数据以下是您的6月使用报告

**使用特征**:高效模式使用频繁
**清洁效率**平均清洁时间30分钟
**耗材状态**:滚刷损耗正常
**性能对比**比上月提升15%

建议:继续保持良好的使用习惯,可考虑定期深度清洁机器内部。

常见问题

Q1: 如何添加新的知识库文件?

  1. 将 PDF 或 TXT 文件放入 data/ 目录
  2. 重新运行知识库初始化命令:
    python -m rag.vector_store
    

Q2: 如何修改 Agent 的工具?

编辑 agent/tools/agent_tools.py 文件,添加或修改工具定义。

Q3: 如何调整 RAG 检索效果?

修改 config/chroma.yaml 中的配置:

  • chunk_size:调整文本分片大小
  • k:调整检索的文档数量
  • separators:调整文本分割策略

Q4: 如何查看系统日志?

日志文件位于 logs/ 目录,按日期命名。