本文主要讲解通过源码部署xiaozhi-esp32-server
和py-xiaozhi
方式来对接Dify
工作流。简单理解,xiaozhi-esp32-server
是小智后端服务,py-xiaozhi
是小智的PC客户端(即不需要ESP32
硬件测试小智AI)。
一.xiaozhi-esp32-server(服务端)
小智AI有个官方的网站https://xiaozhi.me/
,如下所示:

而xiaozhi-esp32-server
实现类似的功能,它是一个专为基于ESP32
的智能硬件提供支持的综合性后端系统。项目结构,如下所示:
xiaozhi-esp32-server
├─ xiaozhi-server 8000 端口 Python语言开发 负责与esp32通信
├─ manager-web 8001 端口 Node.js+Vue开发 负责提供控制台的web界面
├─ manager-api 8002 端口 Java语言开发 负责提供控制台的api

1.manager-web
安装依赖包和启动服务,如下所示:
npm install
npm run serve

打开http://172.16.21.54:8001/#/home
,如下所示:

2.manager-api
项目介绍:manager-api
该项目基于SpringBoot
框架开发。开发使用代码编辑器,导入项目时,选择manager-api
文件夹作为项目目录
开发环境:JDK 21 Maven 3.8+ MySQL 8.0+ Redis 5.0+ Vue 3.x
接口文档:启动后打开http://localhost:8002/xiaozhi/doc.html


打开链接http://localhost:8002/xiaozhi/doc.html#/home
,如下所示:

3.xiaozhi-server
因为要从manager-api
获取配置,主要涉及.config.yaml
配置文件,而config.yaml
配置文件并不生效。
(1).config.yaml
文件位置:xiaozhi-esp32-server\main\xiaozhi-server\data\.config.yaml

(2)config.yaml
(不生效)
文件位置:xiaozhi-esp32-server\main\xiaozhi-server\config.yaml

(3)启动项目


二.智控台配置相关参数
首次登录智控台需要注册一个管理员账号。
1.基础参数
(1)角色配置
特别说明,如果使用DifyLLM
,配置文件里prompt
(提示词)是无效的,需要在dify
中设置提示词。

(2)参数管理
其中,server.secret
用来配置xiaozhi-esp32-server\main\xiaozhi-server\data\.config.yaml
中的manager-api.secret
。

2.VAD
语音活动检测模块,默认使用SileroVAD
模型。

3.ASR
语音识别模块,默认使用FunASR
本地模型。特别说明,需要下载模型文件到xiaozhi-server/models/SenseVoiceSmall
目录。模型链接:https://www.modelscope.cn/models/iic/SenseVoiceSmall/files

4.TTS
默认使用EdgeTTS
。

5.LLM
LLM
使用Dify
,需要配置实际的基础URL和API秘钥。

使用Dify官网搭建了一个极简的Chatflow应用示例。如下所示:

三.py-xiaozhi
(客户端)
1.修改相关配置
文件位置:py-xiaozhi\src\utils\config_manager.py
因为py-xiaozhi
(客户端)默认打开的是小智AI官方的页面,需要修改为xiaozhi-esp32-server
页面。

2.启动项目


3.绑定设备
根据启动项目时设备播报的6位数验证码,新增和绑定设备。如下所示:

4.小智AI客户端


参考文献
[0] 小智AI对接Dify工作流:https://z0yrmerhgi8.feishu.cn/wiki/MwkRwBgvGiutZnkHdoHcSDJPnSd
[1] 智控台:https://github.com/xinnan-tech/xiaozhi-esp32-server
[2] 小智AI客户端:https://github.com/huangjunsen0406/py-xiaozhi
知识星球服务内容:Dify源码剖析及答疑,Dify对话系统源码,NLP电子书籍报告下载,公众号所有付费资料。加微信buxingtianxia21进NLP工程化资料群。
(文:NLP工程化)