【AI智能客服系统】02.项目部署与运行

markdown 复制代码
# 项目环境准备

## 1. 环境要求

| 项目 | 推荐版本 |
|------|----------|
| Python | 3.10+ |
| MySQL | 5.7+ |
| Neo4j | 5.x(需安装 APOC 插件) |
| 开发 IDE | VS Code / PyCharm |

## 2. 创建 Python 环境

进入项目根目录:

```bash
cd D:\ycUpdate\guigu\llm_customer_service

创建并激活虚拟环境:

bash 复制代码
python -m venv .venv
.venv\Scripts\activate

安装项目依赖:

bash 复制代码
py -m pip install -r requirements-atguigu.txt

创建环境方式随便用哪种都行。

我一般用uv或者conda

3. 配置环境变量

复制或创建 ecs_demo/.env 文件,填入你的实际配置:

env 复制代码
DASHSCOPE_API_KEY=你的百炼平台API_KEY
NEO4J_PASSWORD=你的neo4j密码
MYSQL_HOST=10.28.6.34
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=你的mysql密码
MYSQL_DATABASE=ecs
EMBEDDING_MODEL=./models/bge-base-zh-v1.5

注意MYSQL_PASSWORD 必须改成你 MySQL 的真实 root 密码。

4. 准备 MySQL 数据

4.1 创建数据库

连接 MySQL 后执行:

sql 复制代码
drop database if exists ecs;
create database ecs;

4.2 导入表结构

bash 复制代码
mysql -h 10.28.6.34 -P 3306 -u root -p < "D:\ycUpdate\guigu\llm_customer_service\02_资料\业务数据准备\ecs.sql"

4.3 导入示例数据

bash 复制代码
mysql -h 10.28.6.34 -P 3306 -u root -p ecs < "D:\ycUpdate\guigu\llm_customer_service\02_资料\业务数据准备\ecs_sample_data.sql"

如果 ecs_sample_data.sql 不存在,可以先运行生成脚本:

bash 复制代码
cd "02_资料\业务数据准备"
py gen_sample_data.py

5. 准备 Neo4j 数据

5.1 安装 APOC 插件

若未安装 APOC 插件,后续步骤将无法执行并会报错,因此这是必须完成的安装项。

APOC(Awesome Procedures On Cypher)是 Neo4j 官方维护的核心插件库,提供了数百个用于数据集成、图形算法、数据转换和实用程序的存储过程与函数。在本项目中,安装 APOC 插件是必须的,主要原因如下:

  1. 数据导入与转换 :APOC 提供了强大的 apoc.load.jsonapoc.import.csv 等过程,是高效导入外部数据(如本项目中的图数据)到 Neo4j 的关键工具。
  2. 图算法与高级查询:它包含丰富的图算法(如路径查找、社区检测、中心性计算等),能显著增强基于知识图谱的检索(GraphRAG)能力。
  3. 流程支持:本项目的某些自定义 Action 或检索逻辑可能依赖 APOC 提供的特定函数来完成复杂的数据操作。

因此,请务必完成以下安装与配置步骤,否则后续的图数据导入和项目运行可能会失败。

这个要安装和配置一下,

powershell 复制代码
# 下载 APOC(版本需与 Neo4j 匹配,5.26.9 用 5.26.0)
Invoke-WebRequest -Uri "https://github.com/neo4j/apoc/releases/download/5.26.0/apoc-5.26.0-extended.jar" -OutFile "D:\devApp\neo4j-community-5.26.9\plugins\apoc-5.26.0-extended.jar"

# 编辑 D:\devApp\neo4j-community-5.26.9\conf\neo4j.conf,末尾添加:
dbms.security.procedures.unrestricted=apoc.*

# 重启 Neo4j
cd D:\devApp\neo4j-community-5.26.9\bin
.\neo4j.bat restart

5.2 导入图数据

powershell 复制代码
cd D:\devApp\neo4j-community-5.26.9\bin

# 停止 Neo4j
.\neo4j.bat stop

# 导入 dump 文件
.\neo4j-admin.bat database load --from-path="D:\ycUpdate\guigu\llm_customer_service\02_资料\neo4j导入数据" --overwrite-destination=true neo4j

# 启动 Neo4j
.\neo4j.bat start

5.3 构建向量索引和全文索引

powershell 复制代码
cd D:\ycUpdate\guigu\llm_customer_service\ecs_demo\addons
..\..\.venv\Scripts\python.exe create_indexing.py

6. 项目关键文件说明

复制代码
ecs_demo/
├── config.yml              # 主配置(Pipeline + Policies)
├── endpoints.yml           # LLM、Neo4j、MySQL 端点配置
├── .env                    # 环境变量
├── data/flows/             # Flow 流程定义
│   ├── flow_order.yml
│   ├── flow_logistics.yml
│   └── flow_postsale.yml
├── domain/                 # 槽位、响应、Action 声明
│   ├── domain_order.yml
│   ├── domain_logistics.yml
│   └── domain_postsale.yml
├── actions/                # 自定义业务 Action
│   ├── action_order.py
│   ├── action_logistics.py
│   └── action_postsale.py
└── addons/                 # GraphRAG 检索器

7. 启动服务

必须在 ecs_demo 目录下启动 ,否则 .env 不会被正确加载:

powershell 复制代码
# 方式一:CLI 命令
atguigu run -m ecs_demo

# 方式二:Python 模块
python -m atguigu_ai run -m ecs_demo

# 方式三:交互式调试
python -m atguigu_ai inspect -m ecs_demo

启动后访问:

  • 对话界面:http://localhost:5005
  • 交互测试:http://localhost:5005/inspect
  • Neo4j Browser:http://localhost:7474

8. 验证

访问调试页面后,输入:

text 复制代码
查询订单详情

如果配置正确,系统会进入 query_order_detail Flow,并展示当前用户的订单列表。

常见问题排查

1. ModuleNotFoundError: No module named 'dotenv'

原因pyproject.tomldependencies = [] 为空,pip install 未安装任何依赖。

解决 :将 pyproject.toml 改为 dynamic = ["dependencies"],让 pip 从 setup.py 读取依赖列表。

2. Neo4j 连接报错 apoc.meta.data not found

原因Neo4jGraph(enhanced_schema=True) 需要 APOC 插件,本地 Neo4j 默认未安装。

解决:安装 APOC 插件(见上文"安装 Neo4j APOC 插件"章节)。

3. FileNotFoundError: Path ./models/bge-base-zh-v1.5 not found

原因 :代码中使用相对路径 ./models/bge-base-zh-v1.5,工作目录不一致时找不到模型。

解决 :在 .env 中配置绝对路径:

复制代码
EMBEDDING_MODEL=D:\ycUpdate\guigu\llm_customer_service\ecs_demo\models\bge-base-zh-v1.5

4. No index with name xxx found / HybridRetriever 初始化失败

原因:Neo4j dump 仅导入图数据(节点和关系),未创建向量索引和全文索引。

解决 :运行 create_indexing.py 构建索引(见上文"构建向量索引和全文索引"章节)。

5. WebSocket 超时无回复

原因:GraphRAG 内部连续调用 4-5 次 LLM(路由 → 检索 → Cypher 生成 → 验证 → 校正),总耗时 10-15 秒,前端 WebSocket 等不及断开。

解决

  1. 确保 Neo4j 数据已导入且索引已构建
  2. 确保 DashScope API 网络通畅
  3. 如仍有超时,可在前端增加 WebSocket 超时时间

6. 嵌入向量计算耗时较长

原因 :初代 create_indexing.py 需要为所有节点(~1271 个)计算 768 维 embedding 向量,纯 CPU 运算。

注意:索引只需构建一次,后续重启服务无需重建。

相关推荐
Shockang7 小时前
AI 智能体安全沙盒实战
人工智能
yuhulkjv3358 小时前
Claude表格复制到word不再崩溃,AI导出鸭批量导出+格式无损一键搞定
人工智能·ai·c#·word·ai导出鸭
大明者省9 小时前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
抱抱宝9 小时前
Agent-study项目教程(03):手写 Mini-ReAct Agent(不依赖框架)
javascript·人工智能·gpt·react.js·prompt·agent
抱抱宝9 小时前
大模型应用开发教程08 | 构建完整 RAG 应用(Chroma/FAISS 实战)
人工智能·gpt·prompt·agent
美团技术团队10 小时前
KDD‘26 美团学术论文精选及KDD Cup‘26 DataAgents赛道冠军思路解读
人工智能
AKAMAI10 小时前
当AI模型超出存储增长时
人工智能·云计算
科技绘图10 小时前
快鲸GEO vs 传统AI搜索优化:全链路自动化与高效内容生产在转化闭环上的对比
数据库·人工智能·自动化
DS随心转小程序10 小时前
ChatGPT 文字怎么转为 word?解析各类转换方案,AI 导出鸭成为高效文档转换新选择
人工智能·chatgpt·word·豆包·deepseek·ai导出鸭
乌恩大侠11 小时前
【AI-RAN】硬件产品:DELL 前传交换机
人工智能·spark·aerial·o-ru·ai-ran