本地Deepseek+Dify知识库对接钉钉机器人

in 默认分类 with 0 comment

2025-02-11T01:23:45.png

此方案可使用本地deepseek加Dify知识库对接钉钉机器人制作智能客服,在使用此方案时需在钉钉开发者后台付费 API 调用量及API 请求并发量问题。

全文参考

将 Dify 应用与钉钉机器人集成
打字机效果流式 AI 卡片
添加接口调用权限

前提条件

1)本地化部署Deepseek+Dify知识库,可参考前文:Deepseek+Dify+Chatbox应用
2)钉钉开发者后台;
3)MAC OS(此处可使用centos 或其他系统)

Dify创建应用


1.在Dify中创建chatbot应用,可以选择agent或工作流模式,但此处选择chatbot应用(后续配置回复机器人模式时需使用到,请按照需求选择);
2025-02-11T02:44:42.png

2.在此机器人中点击【访问API】,记录API服务器地址(可私网)及生成API密钥(后续在配置回复机器人时需使用);
2025-02-11T02:53:15.png
2025-02-11T02:54:55.png

钉钉开发者后台中添加机器人


此处将使用原文截图,步骤一致。
1.登录进入 钉钉开发平台,选择合适的组织,进入企业内部应用开发页面,创建一个企业内部应用(权限范围选择【全部员工】);
2025-02-11T03:13:19.png
2.在弹出窗口里填好 应用名称、应用描述,上传应用图标点击保存。然后自动进入应用开发配置界面,通过 添加应用能力 添加机器人能力;
2025-02-11T03:13:30.png
3.打开机器人配置开关,在下方出现的表单中按你的实际情况填入各必要信息,在消息接收模式上选择 【Stream模式】 ;
2025-02-11T03:13:38.png
4.点击发布后,再去到左边栏的【应用发布】 -> 【版本管理与发布】 -> 【创建新版本】,给应用建立一个新版本进行发布。
2025-02-11T03:13:46.png
5.最后回到 凭证与基础信息,此时左上角应用的状态应该 【已发布】,到此完成钉钉机器人的配置。此处的【Client ID】及【Client Secret】在后续配置文件中需使用,需进行记录;
2025-02-11T03:13:55.png

钉钉 AI 卡片配置


由于原文将部分内容简略或遗留,除原文截图外,也将必须配置的截图加入。
为了让钉钉机器人的回复也实现打字机一样的流式输出效果,需要用到钉钉近来针对 AI 功能开放的 AI 卡片。

1.进入钉钉开发者后台,【顶部菜单】 -> 【开放能力】 ->【卡片平台】 ->【新建模版】 ,来新建一个 【AI 卡片模板】,填入你喜欢的模版名称,卡片类型选择【消息卡片】 ,卡片模板场景选择 【AI 卡片】,并 关联刚才创建的应用;
2025-02-11T03:19:27.png
2.点击【创建】后进入卡片编辑页面,这里基本不需要任何改动,如果希望机器人在出错时把具体错误信息也输出出来,可以把 启用失败状态 打开,卡片摘要选择cnetent,配置完毕后点击【保存】,最后点击【发布】(不点击发布则会报错);
2025-02-11T03:21:25.png

3.最后点击保存,发布,显示 “模版发布成功”,然后返回到刚才的模版列表页面,复制 模版 ID,保存下来一会儿会用到。
2025-02-11T05:27:20.png

4.AI卡片绑定钉钉应用后需打开权限,点击所创建应用,点击左侧【权限管理】->【卡片】,将下面两个关于卡片的【Card.Instance.Write】权限及【Card.Streaming.Write】打开。(此步为重中之重,不开通权限在IMAC中的日志中将会报错,钉钉机器人回复时无法返回AI 卡片则会报错)
2025-02-11T03:24:21.png

在IMac上部署 Dify-on-Dingtalk


原文中使用Centos,下面使用MAC OS经行部署。(此处可根据实际需求进行选择)

  1. 安装 Docker Desktop
    MAC OS 不能使用 docker-ce,必须安装 Docker Desktop:下载 Docker Desktop
    安装后 启动 Docker Desktop,确保 docker 命令可用:
docker --version

启用 Docker Compose Plugin:

docker compose version

PS:如果报错,可能需要启用 Docker CLI Plugins,在 Preferences > CLI Plugins 中启用。

  1. 下载 Dify-on-Dingtalk 代码,在 mac OS 终端执行:
yorickbao@yorickbaodeMac-mini ~ %git clone https://github.com/zfanswer/dify-on-dingtalk.git
yorickbao@yorickbaodeMac-mini ~ %cd dify-on-dingtalk

PS:如果 GitHub 访问慢,可以改用 Gitee:

yorickbao@yorickbaodeMac-mini ~ %git clone https://gitee.com/zfanswer/dify-on-dingtalk.git
yorickbao@yorickbaodeMac-mini ~ %cd dify-on-dingtalk
  1. 配置环境变量
    进入 docker 目录:
yorickbao@yorickbaodeMac-mini dify-on-dingtalk %cd docker
yorickbao@yorickbaodeMac-mini docker % cp ../.env.example .env
yorickbao@yorickbaodeMac-mini docker % cp ../.bots.yaml.example .bots.yaml

然后使用 vi 或 nano 修改 .env 和 .bots.yaml,填入你的 Dify API 信息 和 钉钉机器人凭证:

yorickbao@yorickbaodeMac-mini docker % vi .env 

OPEN_API_URL为上述的API服务器地址,DINGTALK_AI_CARD_TEMPLATE_ID为上述的模板ID
2025-02-11T02:59:18.png

yorickbao@yorickbaodeMac-mini docker % vi .bots.yaml

dingtalk_app_client_id为上述的Client ID,dify_app_api_key为上述的API密钥
2025-02-11T02:59:43.png
⚠️ 确保 DIFY_OPEN_API_URL、DINGTALK_AI_CARD_TEMPLATE_ID、dingtalk_app_client_id 等变量正确填写!

  1. 启动 Docker 容器,确保你当前在 docker 目录下,然后运行:
yorickbao@yorickbaodeMac-mini docker % docker compose up -d

如果 docker compose 不是可用命令,试试:

yorickbao@yorickbaodeMac-mini docker % docker-compose up -d
  1. 检查运行状态查看容器是否成功运行:
yorickbao@yorickbaodeMac-mini docker % docker ps

查看日志:

yorickbao@yorickbaodeMac-mini docker % docker logs -f <容器 ID>

如果日志中出现类似:

INFO | __main__:run:33 - 启动机器人数量:1
INFO | dingtalk_stream.stream:start:72 - endpoint is % s

最终效果

MAC OS中的docker最终显示如下:
2025-02-11T02:58:34.png

测试如下:
2025-02-11T03:40:21.png

Responses