项目周期#
- 2人团队,总计约5.5个月。
- 需求分析与技术选型2周
- 环境搭建与熟悉框架3周
- 基础任务流开发与集成4周
- 测试与部署2周
- GraphRAG流程开发1周
- 集成与调试2周
- LLM微调数据准备2周
- LLM微调与评估1周
- 模型部署与测试2周
- 更多任务流扩展4周
功能介绍#
基于Rasa Pro框架结合LLM和知识图谱构建的在线教育智能客服系统,主要有以下功能:
提供任务型对话,根据预设流程进行对话,通过多轮对话交互帮助用户完成特定任务,如订单、购物车、收藏夹相关业务流程等。
提供知识库问答对话,基于知识图谱和GraphRAG,支持课程咨询、知识点关系梳理等复杂问题和多跳推理。
支持意外对话修复和闲聊,接入LLM支持用户的非业务对话,并对回复内容做出严肃限制,避免涉及敏感内容的回复。
实现流程#
Q调用流程#
- 部署服务:Rasa Pro + LLM(vllm部署) + 知识图谱(neo4j)+ Embedding模型(fastapi+uvicorn)
- 后端服务:Rasa提供restful接口,供前端调用。
- 前端服务:公司自研web、app,调用后端服务。
Q实现流程#

用户query
=》Rasa对话理解(读取tracker store,调用LLM)
=》Rasa对话管理器(执行flow或者pattern)
-》匹配到flow,执行flow和对应的action,返回结果
-》未匹配到flow,执行pattern_search -> 执行企业搜索策略 -> 调用GraphRAG
-》标签路由:LLM识别问题涉及的节点类型和实体
-》节点检索:使用混合检索找到候选入口节点
-》Cypher生成:LLM根据入口节点和问题生成Cypher查询语句
-》语句验证:验证Cypher语句的正确性
-》语句校正:如有错误则进行校正
-》执行查询:在Neo4j中执行Cypher查询
-》返回结果:将查询结果返回
-》pattern_search无结果-》最终回退到pattern-chat闲聊
-》更新tracker store:添加新对话、更新slot等
=》Rasa NLG:将结果输入到LLM上下文,由LLM生成回复
技术细节#
QRasa Pro框架介绍#

CALM由三部分组成:对话理解、对话管理、响应生成#
对话理解:#
当用户发送消息时,LLM命令生成器从tracker store读取完整对话记录与已收集的信息,调用LLM,识别用户意图、提取槽位,并生成下一步的命令列表,发送给对话管理器。
这里prompt的内容包括:
① 任务描述
② 可用的Flows和Slots(开启流程检索,只放匹配度高的几个流程)
③ 可用操作:start flow、set slot、search and reply等
④ 通用指令:指令+描述
⑤ 决策规则表:满足xx条件,触发xx指令=》生成xx命令
⑥ 当前状态:活跃的flow、当前请求的slot和已填充的slots等
⑦ 对话历史
⑧ 要求生成最新命令序列
这里使用的SearchReadyLLMCommandGenerator,可以触发RAG。
对话管理:#
对话管理器接收命令序列,采取下一步操作:
启动、停止或回复流程
对话模式流程处理意外交互
执行企业搜索RAG
收集信息
触发action
响应生成:#
利用上下文响应重述器,生成自然的回复,提高对话的流程性和连贯性。
这里配置了LLM进行对执行结果的重述响应。
Rasa构建AI助手流程#
配置rasa:pipeline、policy、endpoint等#
根据业务设计和用户行为设计流程。#
编写流程中设计的槽位、响应、动作等。#
自定义动作通过继承Action类并重写run方法来实现,可以调用外部API,查询数据库或执行其他逻辑。
槽位和对话历史会自动存储在track store中。
训练并调试助手。在调试过程中将对话保存为端到端测试示例。#
微调小型语言模型用于执行命令生成任务。将其部署并集成到Rasa中。#
Q任务型对话#

在流程中定义一个业务操作的各个步骤。
通过槽位存储操作过程中所需的信息。
通过定义响应来引导LLM如何回复用户。
通过编写自定义动作来调用外部API,查询或操作业务数据库,来获取业务相关信息或执行用户操作。
Q信息型对话#
结合知识图谱与GraphRAG,支持复杂的课程咨询、知识点梳理等功能。
Q生成命令生成模型微调数据#

准备覆盖重要对话流程的端到端测试数据,执行rasa命令生成微调数据集。
Q命令生成模型微调与部署#
数据集#
由Rasa合成数据模块生成,覆盖高频步骤路径与边界场景(如模糊意图、多意图、口语化表达等)。
共计约1万条样本,按8:2划分训练集和验证集。
训练集:8000条左右。
验证集:2000条左右。
模型训练#

Q信息型对话(GraphRAG)#
LLM根据Prompt从用户输入中提取入口节点实体和其对应的类型。
获取入口节点实体和标签之后,使用混合检索从Neo4j中检索出若干候选入口节点。

LLM根据用户输入、候选入口节点、Neo4j的schema信息,生成Cypher查询语句。
将生成的Cypher语句交给LLM进行验证,返回Cypher中的存在的语法与逻辑错误。
LLM根据验证出的错误信息对Cypher进行修正,得到最终的Cypher语句。
执行查询语句,将查询结果返回LLM作为上下文参考。
LLM根据用户输入和上下文参考生成回复。

项目总结#
该项目实现了基于Rasa Pro框架的在线教育智能客服系统,集成了大语言模型、任务型对话流程管理、知识图谱和GraphRAG。
能够自动化处理课程咨询、订单管理、购物车管理、收藏夹管理、知识点查询等核心业务场景,提供高效的客户服务解决方案。
项目主要包含任务型对话部分和信息型对话部分,支持闲聊。
任务型对话针对结构化的目标导向任务,如查询订单或移除收藏,通过预定义流程管理输入输出。
信息型对话则集成RAG和GraphRAG,利用外部知识库响应用户问题,如课程搜索和推荐。
首先我们使用Rasa Pro框架构建AI助手,基于CALM(对话理解、管理、响应生成)设计流程。
在对话理解中,采用SearchReadyLLMCommandGenerator,根据prompt将用户消息转换为命令。多轮对话的对话历史、槽位信息由tracker store存储和更新。
prompt包括当前状态、对话历史、可用流程/槽位/动作、可用操作、决策规则等。
对话管理接收命令执行操作,如路由流程、收集信息、执行动作、或处理意外交互,通过对话模式(如修复、导航、外部支持)处理非线性对话。
响应生成利用上下文重述器生成自然回复。
构建流程时,在YAML文件中定义流程ID、描述和步骤,包括收集信息、执行动作、设置槽位等;编写槽位存储信息、响应引导回复、自定义动作调用外部API或数据库。
为优化命令生成并提高响应速度,我们准备了端到端测试数据,使用Rasa命令标注模块提取命令,合成数据生成模块创建重述版本,最终生成微调数据集。
数据集覆盖高频路径和边界场景,共计约1万条样本,训练集8000条、验证集2000条。
预训练模型选择Qwen3-8B,采用LoRA微调。训练时使用4bit量化、梯度检查点、bf16精度。每设备训练批次大小2,梯度累计步数8;使用Unsloth在V100单卡上训练。
之后使用vllm部署模型,最大序列长度4096。
对于信息型对话我们结合了知识图谱和GraphRAG。
LLM从用户输入提取入口节点实体和类型,使用混合检索从Neo4j中获取候选节点。
根据用户输入、候选节点和schema生成Cypher查询语句,之后LLM验证并修正语法逻辑错误。
得到修正后的Cypher语句后执行查询,将结果作为上下文参考生成回复。
结合任务型对话和信息型对话功能,最终实现了支持多场景的AI助手,可满足不同业务的需求。