最近有很多新手朋友来问我一些基础的入门问题,确实有点回复不过来了,我就想着做一个coze Ai机器人来帮我回复一些简单的问题。
同时,这两天我把Coze专业版开通了,大致功能和普通版是一样的,只是调用api的次数不再限制到100次,而是无限次调用。现在有1元资源包可以购买,够玩一年了。既然调用次数不受限制了,我就可以把coze机器人接入到微信群或者其他平台,不再限于飞书APP。
摸索了一波之后,终于做出了第一版的跨境电商领域的问答机器人Ai小星。这次,我会把所有的流程都梳理清楚,做出教程。有能力的朋友可以自行部署,想体验的朋友,可以在文章末尾找到二维码进群体验,目前暂时免费。如果不想看教程的朋友,请直接滑到文章最后。
Coze制作机器人
需求
我已经做过了几个agent机器人,深刻体会到了技术并不是最关键的,而是在于对行业、对业务的理解,不断的去完善整个流程,优化提示词。其中,最耗时间的是调试环节。所以,我对第一版跨境小星的要求是先具有基础功能,后续功能可以持续迭代。
第一版的需求是:
- 联网搜索回答用户问题
- 引用知识库
- 每天定时推送跨境热点新闻 目前,coze的知识库功能不是很好用,对于知识文档的识别分段能力相对弱一点。但是我先把功能做好,说不定后面有更新。联网搜索功能可以借助一些扣子官方的插件实现。每天推送新闻就是一个定时触发的功能。不同的能力通过不同的工作流来编排,减少响应时间。
创建
目前第一版是两个功能,联网搜索回答和新闻推送,分别用了两个工作流去实现。

工作流 qa_search_rag
联网搜索回复是类似于秘塔搜索或者Perplexity这种搜索引擎。工作流中我使用扣子官方的bing search插件去实现联网搜索。国内版本中用必应搜索引擎,效果已经够用了。
知识库共用的是之前做过的几个机器人的资料。说实话,知识库效果不好,应该说差的远。因为制作知识库是两个过程,一个是整理资料,一个是分段embedding。
资料收集本身就是一件很费时间的工作,而且有可能收效甚微,高质量的信息源很可贵,文件的格式也是五花八门的。而文件的分段对纯文本资料比较友好,图片,pdf类型的效果不好。所以就需要一些专门做知识库RAG的平台,如fastGPT,MaxKB等。
还是先埋下一颗种子,等到技术成熟,或者我掌握了更多技能再去测试。在这里,你需要知道的是,目前这版机器人的知识库能力很弱。


工作流 get_news
第二个工作流是利用字节的微头条产品,获取跨境电商相关的新闻。普通类的新闻不用太纠结媒体渠道,对于热点新闻,各大媒体都会有所报道。

测试
由于专业版目前只能选择豆包pro的大模型,所以我在工作流内和外层的bot中都使用了doubao-pro-32k/functioncall版本。图中看到已经可以正常调用两个工作流,回复问题和新闻推送。
调试是个体力活,要不断的根据输出结果去调整提示词或者功能,慢慢靠近自己想要的效果。我觉得不断去迭代这个机器人才会在长期的工作中帮得上忙。如果做完一次就不更新了,那其实用处并不大。因为大模型在变,agent的能力在变,业务环境逻辑都在变,但机器人不变,能用就奇怪了。
所以说调试或制作agent,技术并不是最关键的。**关键的是足够深的业务理解和恰到好处的技术能力,再加上一些灵光乍现的创意。**不深耕业务的话,提示词很难优化到生产级别,因为你不知道什么样的输出是一个好的效果。

发布
发布需要勾选扣子商店(可选)、飞书和Bot as API。

发布到飞书需要先在飞书创建一个团队,授权扣子,用管理员权限,然后去通过这个APP。

用API发布需要创建一个token,这个是接入微信或者其他平台用的。先保存token,暂时不用,接着往下进行。

同时在这里获取机器人的bot id,也是先保存,等下再用。

Coze部署飞书
由于是字节自家产品,部署飞书比较方便。可以在应用管理界面打开免审权限,这样不用每次审核。应用权限可以根据实际情况去开关。

部署飞书会比微信有一个额外的好处,就是可以不限制的私聊。微信机器人私聊需要加好友,而好友加的多了就会触发风控。但是飞书可以直接私聊,完全不用担心风控。下图演示的就是私聊的界面。

微信Ai机器人
购买服务器
Coze机器人部署微信需要在云服务器上运行,也可以在本地电脑运行。如果有nas的话,也可以部署在docker。我实际测试了云服务器和nas docker的部署。
大多数朋友应该还是会部署在云服务器上。阿里云和腾讯云或者其他什么云都可以,选最低配置就行。这里以腾讯云为例,购买第一年服务器只需99元。

在腾讯云优惠界面选择云服务器,地址可以选择离自己的实际位置较近的地方。系统选择Linux Ubuntu带docker版本。购买完成会发送ip地址,账号密码。

登录服务器
可以直接在腾讯云后台登录,也可以在本地电脑用系统自带的功能或者第三方软件实现登录,方法略有差异。我是MacOS系统,加上颜值党在线,就选择了Termius第三方登录。这是Termius和腾讯云的登录界面,大家根据自己的情况来选择。


登录服务器后用命令检查下系统是否配置了Python,如果返回了python版本的号就是正常的。
python3 --version

云服务器部署COW
部署微信Ai机器人用到的githup代码库是chatgpt-on-wechat,简称COW,下面放的代码都是来自于原作者。
源码:https://github.com/zhayujie/chatgpt-on-wechat
1 下载源码
首先从githup下载代码。由于云服务器ip选择的是国内的,代码经常下载不下来,需要多试几次。实在下载不来,可以提前在自己电脑存一份,上传到云服务器。
git clone https://github.com/zhayujie/chatgpt-on-wechat
cd chatgpt-on-wechat/
2 安装依赖
安装依赖还是会用到网速,下载不下来,继续多下载几次,至少确保必选依赖全部安装成功。
pip3 install -r requirements.txt # 必选依赖
pip3 install -r requirements-optional.txt # 可选依赖,语音、tool插件等功能需要

3 配置
复制config template模板文件,需要自定义大模型api的可以参考config.py文件里的配置,把需要用到的api和地址更换到config.json即可。
cp config-template.json config.json

4 运行程序
先创建nohup.out的日志,再执行程序。nohup命令可以让程序持续运行。
touch nohup.out # 首次运行需要新建日志文件
nohup python3 app.py & tail -f nohup.out # 在后台运行程序并通过日志输出二维码
5 停止程序
如果需要停止程序,先找到pid,再kill掉。
ps -ef | grep app.py | grep -v grep # 查看当前进程的pid
kill -9 <pid> # 关闭程序
如果你只需要让微信Ai机器人接入大模型,原作者的教程到这里就结束了。实际使用中会有一个问题,重复部署不会关闭之前扫码登录过的微信小号,这样会导致占用进程,耗费服务器资源,拖慢机器人回复的速度。所以有技术大佬多写了几行代码解决了这个问题,由于教程没有公开,我就不放代码了,相信原作者也会在后面优化的。
Docker部署COW
互联网时代,中年油腻的三大特征,路由器,充电头和nas。我竟然都集齐了。。。好吧,既然都有nas了,还要什么云服务器,有道理,说干就干。

我入的是极空间的Z4Pro,买的时候就想到了自己肯定会折腾docker,就买了16g内存版本。Nas中拉取COW镜像还是挺方便的,拉取完成后直接启动,安装依赖,简直就是一气呵成。安装代码和上文列出的一致,有nas的朋友可以自行测试。

因为nas的docker相当原生,我又安装了nano编辑器。主打一个缺什么,装什么。安装完成后,实测跑微信机器人还是挺丝滑的。

Coze部署微信
好了,现在进入重头戏。Coze部署微信的原理是改动几个核心的配置,在代码中添加coze的模型和api。教程来自于WaytoAGI梦飞的飞书公开文档,下面我按自己的理解说明。
原教程:https://waytoagi.feishu.cn/wiki/NB3nwtUC0iDLYxkIkSYc0WRznGg
修改代码
1.在chatgpt-on-wechat根目录中,修改config.py,在available setting字典末尾增加coze api接口地址。
# Coze
"model": "coze",
"coze_api_base": "https://api.coze.cn/open_api/v2",
"coze_api_key": "",
"coze_bot_id": "",
2.在chatgpt-on-wechat/bot目录中,创建文件夹,命名为“bytedance”。然后在文件夹中上传bytedance_coze_bot.py文件。
3.在chatgpt-on-wechat/bot目录中,修改bot_factory.py,在create_bot函数末尾引用coze机器人程序。
elif bot_type == const.COZE:
from bot.bytedance.bytedance_coze_bot import ByteDanceCozeBot
return ByteDanceCozeBot()
4.在chatgpt-on-wechat/common目录中,修改const.py,在bot_type末尾添加bot。
COZE = "coze"
5.在chatgpt-on-wechat/bridge目录中,修改bridge.py,在model_type中添加模型。
if model_type in [const.COZE]:
self.btype["chat"] = const.COZE
修改配置
最后在config.json中填写coze api的接口地址和自制机器人的bot id。还记得刚刚在发布飞书机器人时候保存的bot id和token吗,这里派上了用场。
"model": "coze",
"coze_api_base": "https://api.coze.cn/open_api/v2",
"coze_api_key": "填写coze token",
"coze_bot_id": "填写bot id",
好了,微信机器人的步骤到此结束。我们运行代码,看下实际效果。
大家想体验的可以进入微信群,或者飞书群。微信小号怕麻烦,就取消了私聊。如果你想私聊机器人,可以进飞书团队,找到机器人私聊。想在微信群体验,就扫微信二维码。想进飞书私聊,就扫飞书二维码。

未来计划
抛开Agent的制作过程和部署微信的繁琐,我希望给机器人加上更多可以实现业务需求的功能,做一款跨境Ai版的瑞士军刀。在不重复造轮子的前提下,实现用Ai重塑实际工作中的SOP。
也许今天你玩了一下,说这不就是个垃圾吗。但我希望在不断的优化下,让他能够成为一个真正可以达到生产级别的Ai机器人,真正的用Ai提升工作效率,不只是拿来当玩具。这是我目前发布的几款机器人,都深度结合了工作,不只是给个提示词那么简单。
国内扣子:https://www.coze.cn/user/3283617400501600
国外coze:https://www.coze.com/user/7329456968954135553
未来我会从这些方面优化:
- 小功能的增加:对待玩具,我的思路是先广再精。如果一开始我不断的优化一个功能,那肯定是出不来了。我计划增加一些实用的小功能,增加可玩性,如第一版的新闻功能。
- 主要能力的增加:新鲜感很快会过去,冷静下来,我们会思考这个机器人会给我们带来什么帮助。我计划增加一些主力的功能,让机器人能够往生产级别靠近。
- 知识库的完善:该啃的骨头还是要啃的。我会着重对文档分段做进一步的了解。我知道一些可以更好分段的工具,但是没有时间去尝试。
- 平台迁移:考虑到coze知识库功能不够完善,有可能迁移到FastGPT、MaxKB这类知识库更强的平台。也会考虑用dify进行私有化部署尝试,根据实际工作需求定制。 扣子这类的Ai Agent平台给了我们这些非程序员实现自己想法的一个途径。Ai时代的来临已经是大势所趋,Ai并不会取代人的工作,取代的是不会用Ai的人。
参考资料
梦飞教程:https://waytoagi.feishu.cn/wiki/NB3nwtUC0iDLYxkIkSYc0WRznGg