rasa搭建多轮对话系统(一)


关于rasa的原理信息请参考 rasa指南也是本文参考内容主要来源,只是有些小问题做了改进,本文主要带初学者搭建系统入门,想在实际项目中使用,请关注后续内容。

来源:https://terrifyzhao.github.io/2018/09/17/Rasa使用指南01.html

rasa配置文件通俗理解

story文件定义了聊天流程模板,多轮对话按照模板进行对话,story中有意图和行为,意图决定了返回什么行为。
domain则是定义了意图有哪些,行为有哪些,行为的具体内容是什么。
story、domain、nlu文件之间的关系如下:
在这里插入图片描述有了slot之后呢?

在这里插入图片描述

安装rasa:

1、安装rasa_core

pip install rasa_core

执行上面的命令这时可能会出现C++环境问题如下在这里插入图片描述
这里提供了C++的文件在windows中双击安装即可。
网盘地址:https://pan.baidu.com/s/1kQvBw1dg8qzF-e7DvH8TWw
提取码:ef5y

2、安装rasa_nlp

pip install rasa_nlu[tensorflow]

配置文件

stories文件

首先配置stories文件,注意编码格式utf-8,在编辑内容保存的时候检查文件保存格式。文件名是stories.md,文件的具体内容如下:

## story_happy 
* greet
 - utter_greet 
* mood_happy
 - utter_happy 
## story_unhappy 
* greet2
 - utter_greet 
* mood_unhappy
 - utter_unhappy
  • ##表示story的标题
  • *表示意图
  • 表示行为

domain文件

接下来配置domain文件,文件名是domain.yml,注意编码格式utf-8,在编辑内容保存的时候检查文件保存格式。文件的具体内容如下:

intents:
  - greet
  - mood_happy
  - mood_unhappy

actions:
- utter_greet
- utter_happy
- utter_unhappy

templates:
  utter_greet:
  - text: "你好,你今天过的怎么样"

  utter_happy:
  - text: "那很棒棒哦"

  utter_unhappy:
  - text: "咋了,可以告诉我吗"

domain.yml中的内容要与stories.md中的内容对应上

  • intents表示意图
  • actions表示行为
  • templates模板

注意文件的编码格式,不然会报错如下:
在这里插入图片描述

模型训练命令

以上的文件存放在同一目录下,在当前目录中执行下面的命令:

python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue

-o表示模型存放的位置
训练过程:
在这里插入图片描述

开启对话服务:

执行下面的命令,开启对话服务:

python -m rasa_core.run -d models/dialogue

输入内容就可以对话了。

添加Rasa NLU

nlu文件配置

配置nlu文件,文件名nlu.md,文件内容如下:

## intent:greet
- 你好
- 上午好
- 下午好
- 早上好
- 晚上好

## intent:mood_happy
- 很好
- 我很好

## intent:mood_unhappy
- 我很难受
- 我心情很差

配置nlu_config

配置nlu_config文件,文件名nlu_config.yml,文件内容如下:

language: zh
pipeline: tensorflow_embedding

NLU训练命令:

在同级目录下,执行下面的命令:

python -m rasa_nlu.train -c nlu_config.yml --data nlu.md -o models --fixed_model_name nlu --project current --verbose

开启对话服务

同级目录下执行下列命令,开启对话

python -m rasa_core.run -d models/dialogue -u models/current/nlu

添加slot

添加slot配置

在domain.yml中定义slot,内容如下:

entities:
  - city
slots:
  city:
    type: text

action配置:

rasa_core_sdk安装

action依赖rasa_core_sdk的,需要安装

pip install rasa_core_sdk

endpoints

action是以服务的形式调用的。所以需要配置endpoints文件,文件名endpoints.yml,文件内容如下:

action_endpoint:
  url: "http://localhost:5055/webhook"

action代码

文件名自定义,这里定义的test.py,文件内容如下:

from rasa_core_sdk import Action
from rasa_core_sdk.events import SlotSet


class ActionAskWeather(Action):
    def name(self):
        return 'action_ask_weather'

    def run(self, dispatcher, tracker, domain):
        dispatcher.utter_message(f'您问的天气地点是哪里呢')
        return [SlotSet('city', '深圳')]

其他配置

stories文件

stroies.md中添加关于天气的场景、意图、行为,内容如下:

## story_ask_weather
* ask_weather
  - action_ask_weather
* weather_city
  - utter_weather_good

domain文件

配置domain.yml文件,在意图、实体、行为中都进行添加,具体内容如下:

intents:
  - greet
  - mood_happy
  - mood_unhappy
  - ask_weather
  - weather_city

entities:
  - city

slots:
  city:
    type: text

actions:
  - utter_greet
  - utter_happy
  - utter_unhappy
  - action_ask_weather
  - utter_weather_good


templates:
  utter_greet:
  - text: "你好,你今天过的怎么样"

  utter_happy:
  - text: "那很棒棒哦"

  utter_unhappy:
  - text: "咋了,可以告诉我吗"

  utter_weather_good:
    - text: "{city}天气很好呢"

执行命令

1、rasa_core

python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue -c policy_config.yml

2、rasa_nlu

python -m rasa_nlu.train -c nlu_config.yml --data nlu.md -o models --fixed_model_name nlu --project current --verbose

3、action

python -m rasa_core_sdk.endpoint --actions test

4、开启服务

python -m rasa_core.run -d models/dialogue -u models/current/nlu --endpoints endpoints.yml

接下来可以进行对话测试了。
以上内容理解可以参考Rasa使用指南
项目中的代码可以参考:项目源码
如果你只是了解学习rasa,截至目前为止,就可以了。如果想在公司的项目中应用rasa,那需要继续关注后续内容。

<think>我们正在讨论如何搭建AI多轮对话机器人,使用Dify或其他框架。根据引用内容,Dify是个适合的选择,因为它支持智能客服机器人的私有化部署[^1],并且能帮助开发者快速构建基于大模型的AI应用,包括多轮对话场景。用户明确提到“使用Dify或其他框架”,因此我们需要提供两种路径:1.使用Dify的详细步骤(因为引用中多次提到Dify,且它适合快速搭建)2.简要介绍其他可选框架(供用户比较选择)###核心步骤分解根据引用[1][3],Dify搭建智能客服机器人的关键步骤包括:-部署Dify(支持私有化部署)-配置知识库(RAG功能)-设计对话流程(工作流/Agent)-集成到实际环境(如网站)###其他框架的考虑如果用户不想用Dify,可以介绍:-LangChain:更灵活的Python框架,但需要更多编码-Rasa:传统对话机器人框架,适合任务型对话###结构化回答我们将分三部分:1.Dify方案(详细步骤)2.其他框架方案(概要)3.对比建议###注意引用标记在涉及引用内容的地方自然添加[^1][^3]###流程图用mermaid展示Dify搭建流程,增强可读性###相关问题生成围绕搭建过程中的关键点生成问题</think>基于您的需求,我将分步说明如何使用 Dify 搭建 AI 多轮对话机器人,同时提供替代框架方案: ### 、Dify 搭建方案(推荐) ```mermaid graph TD A[部署Dify] --> B[配置知识库] B --> C[设计对话流程] C --> D[集成到应用] D --> E[上线监控] ``` #### 步骤详解: 1. **私有化部署** - 通过 Docker 键部署(支持本地/云服务器)[^1] ```bash docker run -d -p 80:3000 dify/dify:latest ``` - 访问 `http://localhost` 进入控制台 2. **配置核心功能** - **知识库**:上传企业文档(PDF/Word),启用 RAG 增强问答准确性[^3] - **对话引擎**: - 选择模型(GPT-4/Claude/本地LLaMA) - 设计多轮对话流程: ```python # 示例:医疗问诊流程 用户症状 --> 追问病史 --> 调用医学知识库 --> 生成建议 ``` 3. **智能体开发** - 使用可视化编排器定义对话逻辑: - 添加**条件分支**(例如:“用户询问价格” → 跳转产品模块) - 集成**工具调用**(如:订单查询API、日历预约功能)[^2] - 优化提示词模板: ```markdown 你是名客服助手,需遵守: 1. 每次回答不超过3句话 2. 当用户问及产品时,引用知识库ID:prod_2024 ``` 4. **集成与部署** - 生成 API 端点接入网站/APP - 通过 LLMOps 面板监控对话质量与 Token 消耗 --- ### 二、替代框架方案 | 框架 | 特点 | 适用场景 | |------------|-------------------------------|------------------------| | **LangChain** | Python 代码驱动,灵活性高 | 需要复杂逻辑集成的项目 | | **Rasa** | 专注任务型对话,支持 NLU 训练 | 订票/查询等流程化场景 | | **FastChat** | 轻量级,适合快速测试模型 | 学术研究/原型验证 | --- ### 三、关键优化建议 1. **多轮对话核心** - 启用 `对话状态跟踪(DST)` 记录上下文 - 设置 **3轮对话超时重置** 避免资源浪费 2. **效果提升技巧** - 在知识库中添加 **FAQ 问答对** 覆盖高频问题[^1] - 对模糊问题启用 **澄清反问**(例:“您是指产品A还是B?”) > 案例:某电商使用 Dify 搭建客服机器人后,问题解决率提升 40%,人工客服负载下降 60%[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值