弃坑 Coze,我把 Dify 接入了个人微信,AI小助理太强了

之前免费出圈的 Coze 开始收费了,总结来看:
-
API 只有 100 次免费额度; -
除了在 coze 主页使用,其他外部平台如:微信公众号/抖音,只有 100 次免费额度 -
不能使用火山引擎的方舟大模型中的免费额度;

有没有类似 Coze 的开源项目?
目前有两个 Coze 的开源平替,同样支持智能体搭建:FastGPT 和 Dify。
就目前的体验来看,二者各有优劣:
-
FastGPT:在知识库召回上更优; -
Dify:支持的大模型更丰富,插件生态更完善。
关于 FastGPT,可以看之前的教程:0基础搭建本地私有知识库,给 GPT 插上翅膀
今日分享,将手把手带大家私有化部署体验 Dify,并把它接入个人微信。
1. Dify 简介
❝
在线体验:https://dify.ai/
开源地址:https://github.com/langgenius/dify
官方文档:https://docs.dify.ai/v/zh-hans
Dify 是 Do it for you (为你而做)的简称。
和 Coze 非常类似,Dify 也内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,以及一套易用的界面和 API。
如果你用过 Coze 搭建智能体,那么迁移到 Dify 会非常丝滑。
如果你没用过 Coze,那么可以前往上面的在线体验地址,先去点点看~
如果不想自己部署,官方地址也提供了一定的免费额度,不过只支持上传 50 个文档,且支持 RAG 的向量空间也只有 5 MB。
如果不想付费,且对自己的私有数据安全有更高要求,那么强烈建议你本地私有化部署,参考下面步骤,相信你也能搞定!
2. Dify 私有化部署
❝
参考文档:https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted/docker-compose
首先,克隆 Dify 源代码至本地,然后进入 docker 目录,复制一份环境变量,采用默认端口,一键启动:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
启动成功后,你会发现共有 9 个容器:包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox。

内存占用共计 1690 M,所以至少确保有一台 2G 内存的机器。

因为项目中启动了一个容器 nginx 将 web 服务转发到 80 端口,所以在浏览器中,直接输入公网 IP 即可,设置一下管理员的账号密码,进入应用主界面。

3. 接入大模型
整个界面非常简单,先不管能干啥,我们先把大模型接入进来。
怎么接入?
不得不说,Dify 把这么重要的需求设置的实在太隐秘了,着实折腾了一段时间才找到👇

在设置
里找到模型供应商
,这里已经支持了上百款模型,我这里主要先接入了三款有免费额度的。

其中:
-
SiliconFlow 提供了大量免费的 LLM API,即便是需要付费的模型,新注册用户也有 2000W Token 的体验额度。可前往领取:https://cloud.siliconflow.cn?referrer=clxv36914000l6xncevco3u1y -
火山引擎的方舟大模型也提供了一定的免费额度,怎么接入?
在火山方舟控制台找到:在线推理-创建推理接入点,就可以拿到接入点名称。

如果你打算采用本地部署的大模型,Dify 也提供了对 Ollama 的支持:

不了解 Ollama 的小伙伴,可以回看教程:本地部署大模型?看这篇就够了,Ollama 部署和实战
如果你有用过 OneAPI 管理过各种大模型,Dify 也提供了对 OpenAI-API-compatible 的支持:

不了解 OneAPI 的小伙伴,可以回看教程:一键封装成OpenAI协议,强推的一款神器!
4. 创建工作流
回到主页,点击创建空白应用
,这里的聊天助手和文本生成应用,是功能最为单一的 LLM 应用,都不支持工具和知识库的接入。
Agent 和 工作流有什么区别?
-
Agent:智能体,基于大语言模型的推理能力,可以自主选择工具来完成任务,相对简单。 -
工作流:以工作流的形式编排 LLM 应用,提供更多的定制化能力,适合有经验的用户。

通常,我们需要 Agent 和 工作流配合使用,Agent 负责对话理解,Workflow 处理具体的定制功能。
今天,我们就把上一篇在 coze 做的微信消息转发插件迁移过来,给大家展示一下工作流的搭建方式。看看 Dify 能否完成同样的功能。
先创建一个工作流,进来后,在开始
中添加后面添加添加两个参数:好友昵称 和 消息内容:

然后在开始
后面添加一个 Http 请求:

在 Http 请求中填入相关信息:url 就是上篇中搭建的机器人的发送消息的API
,body 内容参考请求体参数填写,如下图所示。

注意,上述填写 json 结构体时,一定要将变量加双引号,否则后面测试不通。
最后,创建一个结束流程,把 http 请求接口的结果进行返回。

创建成功后,点击运行
测试一下:

运行
测试没问题后,你需要将它发布为一个工具(类似 coze 中的插件),才能供后面的 Agent 调用。

注意:这里的工具调用名称,是后续给大模型调用的,工具描述需要写清楚。

5. 创建 Agent 应用
工具发布以后,回到首页,在工具 tab 页的工作流中可以看到:

接下来,我们来创建一个 Agent 应用,来调用该工具:

可以先设置一下角色提示词:
你作为一个聊天机器人,能够深刻理解对话内容背后的意图。可以使用wechat_msg工具,给对方的微信号发送答复。
然后,在下方的工具处,把我们刚发布的工具添加进来:

最后,如果指令任务执行的不够好,右上角选择切换一个大模型:

在右侧的预览与调试
区域,测试一下吧~
测试案例一:
让它给我的大号
微信讲一句土味情话,可以看到成功调用了刚刚添加的工具!

还能干点啥?
测试案例二:
比如查询天气,那就添加天气相关的工具,Dify 中内置了两款插件。
OpenWeather
这个工具申请 API Key 后需要等大约 1h 后才能生效。这里选择高德的天气插件,给大家演示。

首先采用的是豆包大模型,需要调用两个工具的任务,居然就掉链子了,得再次强调一次任务才能发送成功!

所以,指令遵循是否完美,和选用的大模型有很大关系,Doubao-pro-128k
就需要发两次消息,换用gpt-4
后就一次搞定了!

来微信看看,成功发送!👇

完美实现类似昨天 coze 的功能!
写在最后
作为 Coze 的开源平替,Dify 也是一个非常强大的智能体开发和搭建平台,
今天通过搭建一个简单的工作流和 Agent 的具体实操,带着大家熟悉了 Dify 的本地部署体验,成功实现了微信 AI 消息转发。
关于 Dify,还有诸如知识库
、API 调用
等更丰富的功能,后续再跟大家分享~