本文由 资源共享网 – ziyuan 发布,转载请注明出处,如有问题请联系我们![免费]零基础开发AI系统指南
收藏我将以目前最成熟、最适合自主开发的开源对话AI框架 Rasa 为核心,为你规划一个清晰的、分阶段的实现路径。我们的目标是:让你能跑通一个最简单的、由你的帮助文件驱动的问答机器人,并理解其每一步的原理。
第一阶段:基础认知与环境搭建 (第1-2天)
在写代码之前,必须先理解基本概念和准备好“工作台”。
核心概念速览
NLU:自然语言理解。负责读懂用户的话,比如识别出用户想问“怎么重置密码”这个意图,并提取出“密码”这个实体。
Dialogue Management:对话管理。负责决定机器人下一步该做什么,比如该回答一个具体问题,还是反问用户需要哪个产品的密码。
Rasa:一个开源框架,它包含了 Rasa NLU 和 Rasa Core 两个主要部分,分别处理上述两项任务。
搭建开发环境
安装Python:访问 python.org,下载并安装最新版的 Python 3.8 至 3.11 版本。安装时务必勾选“Add Python to PATH”。
验证安装:打开命令行(Windows:Cmd 或 PowerShell;Mac/Linux:Terminal),输入
python --version和pip --version,应显示版本号。创建虚拟环境(重要,用于隔离项目依赖):
bash # 在你想存放项目的目录下,例如 D:\projects\ python -m venv rasa-venv # 创建一个名为 rasa-venv 的虚拟环境 # 激活环境 # Windows: rasa-venv\Scripts\activate # Mac/Linux: source rasa-venv/bin/activate # 激活后,命令行提示符前会出现 (rasa-venv) 字样安装Rasa:
bash pip install rasa -i https://pypi.tuna.tsinghua.edu.cn/simple验证Rasa安装:
rasa --version。
第二阶段:创建第一个机器人并理解项目结构 (第3-5天)
现在,我们从“Hello World”开始,感受Rasa的工作流程。
初始化项目在激活的虚拟环境中,运行:
rasa init --no-prompt
这个命令会自动创建一个全新的Rasa项目(包含示例文件),并为你训练一个最简单的对话模型。
理解核心文件结构进入生成的目录(例如
my_rasa_bot),你会看到以下关键文件,这是你未来工作的核心:my_rasa_bot/ ├── data/ # 训练数据目录 │ ├── nlu.yml # NLU训练数据:意图和例句 │ └── stories.yml # 对话流程训练数据:用户故事流 ├── config.yml # 模型配置文件:定义管道、策略 ├── domain.yml # 领域文件:定义对话宇宙(意图、回应、实体等) ├── tests/ # 测试文件目录 ├── credentials.yml # 连接通道配置(如后续连接网页) └── endpoints.yml # 服务端点配置(如后续连接数据库)
与你的第一个机器人对话在项目目录下,运行:
bash rasa shell命令行会加载你刚刚训练的模型,并进入交互模式。尝试输入Hello或I am sad,看看它的回复。输入/stop退出。
第三阶段:将你的帮助文件“喂”给机器人 (最关键的一步,第6-10天)
这是从示例到实用的转折点。你需要将公司的帮助文档,转换成Rasa能理解的“语言”。
数据转换实战:以一个“重置密码”场景为例假设你的帮助文件里有一句话:“用户可以通过点击登录页面的‘忘记密码’链接来重置密码。” 你需要将其拆解、重组,填充到以下三个文件中:
编辑
data/nlu.yml:定义用户可能怎么问(意图),以及从问句中提取什么关键信息(实体)。version: "3.1" nlu: - intent: ask_password_reset # 定义一个意图,名称自定义 examples: | # 为这个意图提供多样化的用户问法例句 - 我忘记密码了怎么办? - 如何重置密码? - 密码找不回来了,能帮我吗? - 登录密码忘了,怎么操作? - [忘记密码](method)的流程是什么? # 标注实体:将“忘记密码”标注为 method 实体 - intent: greet # 已有的问候意图示例 examples: | - 你好 - 嗨
编辑
domain.yml:定义机器人知道什么(意图、实体、回应)。version: "3.1" intents: # 声明机器人需要识别的所有意图 - greet - ask_password_reset # 必须在此处声明上面定义的意图 entities: # 声明所有实体 - method responses: # 定义机器人如何回应 utter_greet: - text: "你好!我是客服助手,有什么可以帮您?" utter_help_password_reset: # 为密码重置定义回应 - text: "您可以通过点击登录页面的‘忘记密码’链接来重置密码。" - text: "重置密码的步骤是:访问登录页,点击‘忘记密码’,按照邮件提示操作即可。" # 可以准备多个回应,随机选择 utter_default: - text: "抱歉,我还没学会回答这个问题。您可以联系人工客服获取帮助。"
编辑
data/stories.yml:定义对话的流程和逻辑。version: "3.1" stories: - story: happy path for password reset # 一个完整的对话故事 steps: - intent: greet # 用户说:你好 - action: utter_greet # 机器人应:回复问候 - intent: ask_password_reset # 用户说:怎么重置密码? - action: utter_help_password_reset # 机器人应:给出重置密码的指引 - story: user directly asks for password reset # 另一个可能的对话路径 steps: - intent: ask_password_reset - action: utter_help_password_reset
处理复杂的帮助文件
批量操作:如果你的帮助文档是结构化的(如Word、Markdown),可以尝试用Python脚本将其批量转换为
nlu.yml和stories.yml的格式。这是你作为开发者可以优化的地方。分门别类:将不同主题(如账户、支付、售后)的帮助内容,分别定义为不同的意图(如
ask_payment_method,ask_return_policy),并编写对应的回应和故事。
第四阶段:训练、测试与部署 (第11-15天)
训练模型每次修改完数据或配置后,都需要重新训练模型。在项目目录下运行:
rasa train
这会生成一个新的模型文件在
models/目录下。更丰富的测试
交互测试:再次运行
rasa shell,用你自己的问题测试。验证NLU:
rasa shell nlu,可以单独测试NLU部分的理解结果,看意图和实体识别是否准确。可视化故事:
rasa visualize会生成一个.png图片,展示你定义的对话流程,检查逻辑是否合理。部署为本地服务(让同事可以访问)最简单的部署方式是启动一个带有简易网页的API服务:
bash # 在一个命令行窗口启动Rasa服务 rasa run --enable-api --cors "*" # 在另一个命令行窗口启动简易网页 rasa run actions & # 如果需要自定义动作(如查数据库)然后,你可以使用任何前端(如一个简单的HTML页面)通过http://localhost:5005的API与你的机器人对话。更正式的部署可以考虑使用Docker容器化。
后续进阶方向
当你能成功运行一个基础的问答机器人后,可以按需探索以下方向,让系统变得更强大、更智能:
| 进阶方向 | 核心目标 | 关键工具/技术 |
| :--- | :--- | :--- |
| 连接外部知识库 | 让机器人能基于大量帮助文档(非简单QA对)进行智能检索并生成回答,处理未知问题。 | Rasa + 检索增强生成框架:在 actions.py 中集成如 LangChain、LlamaIndex 等框架,连接你的PDF、TXT帮助文件库。 |
| 集成业务系统 | 让机器人不仅能回答,还能“做事”,如查询订单状态。 | 自定义动作:编写 actions.py 中的Python函数,调用公司内部API或数据库。 |
| 优化对话体验 | 让人机对话更自然、流畅,处理多轮复杂问答。 | Rasa Forms:用于高效收集多个信息(如预订时需要时间、地点、人数)。
对话策略优化:在 config.yml 中调整或试验不同的策略(如Transformer-based的 TEDPolicy)。 |
| 企业级部署 | 实现高可用、可扩展的线上服务。 | Docker容器化:将Rasa服务打包。
部署平台:部署到云服务器(如AWS ECS, 阿里云ACK)或使用Kubernetes。 |

