基于LinkAI和CoW项目, 手把手打造智能微信机器人

LinkAI简介

LinkAI 是极简未来科技旗下的企业级一站式 AI 智能体搭建与接入平台产品。聚合多模态大模型、知识库、Agent插件、工作流等能力,并基于丰富的应用接入和管理能力,为用户提供将 LLM 大语言模型落地应用的强大SaaS平台。可零代码搭建集私有知识和特定任务执行能力于一体的 Agent 智能体,并一键接入主流 IM 和办公协同平台实现对话式营销、智能客服与办公效率助手等业务场景。

ChatGPT-on-WeChat简介

chatgpt-on-wechat项目是基于大模型搭建的聊天机器人,同时支持 微信公众号、企业微信应用、飞书、钉钉 等接入,可选择GPT3.5/GPT-4o/GPT4.0/ Claude/文心一言/讯飞星火/通义千问/ Gemini/GLM-4/Claude/Kimi/LinkAI,能处理文本、语音和图片,访问操作系统和互联网,支持基于自有知识库进行定制企业智能客服。

前置准备

服务器

使用LinkAI的服务接入,国内服务器即可,国内云服务器厂商都有新人优惠,自己按需购买即可。此教程接入是基于腾讯云的服务器,点击腾讯云,注册购买,项目对服务器配置要求不高,1核1G即可,看自己的预算购买。

配置文件模板

服务器Python部署:config.json,Docker部署:docker-compose.yml

LinkAI平台相关概念

  1. 应用:image-20240714153848894
    • 应用简单来说就是你制作出的AI机器人,通过它可以配置这个机器人的性格人设、对话风格、数据来源(知识库)、各项技能(插件)。同时在LinkAI平台每个应用都有一个唯一的 app_code,任何应用集成和API接入都需要通过app_code来完成。
    • 应用分为知识库应用轻量应用,如果需要上传私有文档来让训练机器人,要选择知识库应用。
    • 关于应用的更多说明,可点击查看 应用配置说明
  2. 知识库:image-20240714154351859
    • 知识库是基于RAG架构,可上传 无结构文档、Q&A问答对格式、多列表格 的知识以及图片、视频等素材来训练智能体,增强解析支持将导入pdf、docx文档中的图片或表格一并提取进入知识库,让AI具备基于给定知识范围进行智能问答的能力。
    • 知识库需要和应用绑定使用,支持实时更新内容,并可设置知识库的检索策略,自定义召回深度和精度,可在线进行问答检索测试。详情可查看 知识库说明
  3. 工作流:img
    • 工作流(workflow) 是一种更为灵活的智能体搭建方式,可以自由组合应用、知识库、插件、意图识别、定时任务、渠道发送等能力,通过流程编排的方式来增强AI智能体对流程型复杂任务的理解和执行能力,并让整个工作过程白盒化。
    • 接入到微信中的方式,和接入应用一样,只需要把工作流的code填入linkai_app_code 参数中,更多工作流介绍、配置和使用可以点击 工作流说明查看。

环境搭建

系统安装

服务器购买过程中,服务器系统选择Ubuntu20.4,如果选错了或者想更换其他系统,按照下图重装即可,请记住设置的密码:

image-20240711154958084

image-20240711155042857

image-20240711155127586

安装完成后,可以看到上图的界面,新手建议直接使用腾讯云提供的一键登录功能登录,也可以使用ssh工具远程登录,如果忘记密码可以在这里重置!后续使用一键登录方式进入命令行窗口,执行指令。

到这里Ubuntu系统安装好了,如果没有Linux基础建议新手装一个宝塔面板,可以可视化修改配置文件。

宝塔安装

使用一键登录功能进入,选择免密登录,进入命令行窗口,然后输入下面的宝塔安装脚本(适用于Ubuntu),按回车,输入y,即可自动安装宝塔面板:

wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
image-20240711155154481

等待安装完毕,会如下图所示,请保存外网访问地址核用户名以及密码

image-20240711155317070

这里我们需要到腾讯云控制台放行图中提示的39605端口(端口是随机的,按照上图提示开放相应的端口),按下图操作:

image-20240711155353285

开放端口以后,我们复制外网访问面板地址到浏览器,同意用户协议 、绑定手机号,不需要安装推荐的软件。

部署方式选择

image-20240711155526536

部署方式建议云服务器直接部署和使用docker部署,不建议在本地railway部署,本地环境复杂且不能24小时运行,railway不再提供免费额度且插件配置较为麻烦。

这里介绍服务器直接部署的方式,docker部署可参考:

部署流程

(1) 下载源码

进入命令行窗口,使用 git 命令克隆项目到我们的服务器(因为是从GitHub下载,国内网络时好时坏,可以多次尝试,实在不行可以手动下载项目文件夹上传,后面插件有介绍该方式。),

并使用cd命令进入目录,然后使用cp命令复制模板配置文件并命名为config.json:

git clone https://github.com/zhayujie/chatgpt-on-wechat
git clone https://gitee.com/zhayujie/chatgpt-on-wechat  # 如果执行上边的指令下载不了,可以执行这条指令,能下载成功即可
cd chatgpt-on-wechat/
cp config-template.json config.json
image-20240711155557236

执行pwd命令,我们可以看到当前所在的目录为/home/lighthouse/chatgpt-on-wechat,我们到宝塔面板的文件选项卡可以一步步进入该目录(或者把刚刚的目录地址输入到宝塔地址栏回车):

image-20240711155658727

image-20240711155715327

上图就是我们的chatgpt on wechat项目文件夹,config.json就是我们上一步生成的配置文件,是项目的主配置文件。

下面我们先配置项目的运行环境,安装依赖:

(2) 安装依赖

我们安装的Ubuntu20.4,系统自带python3.8,所以python环境应该是没问题的,项目要求必须是3.7及以上,我们可以执行python3 -V来查看python版本,如下图所示:

image-20240711155755522

然后我们执行以下命令安装项目的依赖,-i https://pypi.tuna.tsinghua.edu.cn/simple代表的是使用国内的源,这样可以加快国内服务器依赖安装速度。

注意:此时我们应该处于chatgpt-on-wechat目录下执行下面的命令,如果不在,可以使用cd命令切换到该目录下。

pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple                
pip3 install -r requirements-optional.txt -i https://pypi.tuna.tsinghua.edu.cn/simple      
image-20240711155826275

image-20240711155859607

image-20240711155925429

依赖安装成功如上图所示,黄色warning可以不用管。

(3) 配置

第一步中我们已经使用cp config-template.json config.json命令来生成了配置文件。这里解释一下,文件名中一般带有template的都是模板配置文件,需要把这个文件复制一下并重名为config.json,这个文件才是最终生效的文件,后面讲到的各个插件目录下也都会有模板配置文件,需要复制重命名一下!

我们回到宝塔面板页面,双击第(1)步末尾截图所示的config.json文件,打开进行修改。

可以清空已有的内容,点击config.json下载适配LinkAI的配置文件模板,复制粘贴进去,如下图所示:

基本配置说明:

  • "use_linkai": true,true代表使用linkai的服务;
  • "linkai_api_key": "Link_MnW8oUvKHwGtYpfG10uKvTM",这里填入linkai 的key,点这里申请:https://chat.link-ai.tech/console/interfaceimage-20240711203055890
  • "linkai_app_code": "default",这里填入自己在linkai平台创建的应用code,可以先写成default,详细见本文前置准备章节中的介绍。image-20240711203137513
  • "model": "gpt-3.5-turbo",使用的模型,LinkAI目前支持gpt、文心、讯飞、千问、kimi、Claude、Gemini等模型,全部模型见模型列表,建议把model留空,更改应用的默认模型即可实时切换模型
  • "single_chat_prefix": ["bot"]该项代表触发机器人回复的前缀,这里设为bot,即以bot开头的内容会触发机器人回复,如果扫码登录后机器人不回复,可能是没有加这里的触发前缀,如果不想设置触发前缀,可以改为[""]即可(注意中括号内的引号不要去掉)。
  • "group_chat_prefix": ["orange"]同理,这里代表了在群内发消息如果以orange开头,会触发机器人回复,可按需自定义设置。
  • "group_name_white_list": ["手把手搭建群"],这是群聊白名单,决定了机器人在什么群可以 被触发,把需要触发机器人的群聊名称都写在这里,以逗号隔开。想所有群都可以触发,那这里就设为:["ALL_GROUP"]
  • "hot_reload": true,热重载这个参数设为true,这样我们每次重启项目后不用再次扫码!

其实前两项配置完,就可以启动项目,扫码登录使用了。其他项按需设置即可,详细的参数说明可以参考配置说明

项目所有可以配置的参数都在chatgpt-ob-wechat/config.py文件写明了,把相应的参数复制到config.json进行配置即可,使用中可以按需增添及修改。

(4) 运行

一切准备就绪,可以启动程序了,在项目目录(chatgpt-on-wechat)下执行下面的命令,使用nohup命令在后台运行程序,即使断开命令行窗口也能保持运行:

touch nohup.out                                   # 首次运行需要新建日志文件  
nohup python3 app.py & tail -f nohup.out          # 在后台运行程序并通过日志输出二维码
image-20240713225959987

image-20240713230036400

输出的二维码可能会乱码,可以复制二维码上边的链接在浏览器打开即可。扫码登录后,服务器log会输出Start auto replying字样日志,代表运行成功,可以对机器人进行提问,私聊的话记得加上前边设置的single_chat_prefix参数,

image-20231016153050286

如上,机器人私聊已经可以正常使用了,以及服务器同步输出的日志。如果有什么问题,这里的日志会显示错误信息

image-20240713230129238

群聊,只要该群名称在group_name_white_list配置项内,就可以直接艾特机器人提问,或者使用group_chat_prefix设置的前缀(orange)进行提问!

注意:修改配置常见的一个问题就是使用了中文标点符号和多/少逗号,这些都会提示是json文件有问题,如下图所示,宝塔文件页面会提示,服务器log也会提示,有JSONDecodeErro字样,在log日志界面我们可以按下CTRL+C来回到执行命令界面:

image-20240713230222191

image-20240713230251050

至此,基本的对话功能已经设置完毕,可以正常使用机器人了。

我们如果想修改config.json里面的配置项,可以在宝塔内直接修改,然后运行下面的命令关掉正在运行的项目,再重新运行项目即可生效!(同样需要在项目根目录运行)

ps -ef | grep app.py | grep -v grep    # 可以查看当前进程的 pid:
kill xxx                               # xxx是上一条命令运行后显示的进程pid
nohup python3 app.py & tail -f nohup.out     # 运行项目
image-20240713230311798

进阶配置

语音

image-20240713233450991

image-20240713234059729

LinkAI目前支持openai的语音识别和生成,前面下载的模板配置文件已经设置好(如上),音色可以在LinkAI平台的应用里选择和切换。

私聊发语音即可回复语音,群聊的话需要先语音说出设置的群聊触发前缀(group_chat_prefix": ["@bot", "你好"])之一

注意:项目接入微信使用的是itchat协议,不支持发送语音条,机器人回复的是一个mp3文件。接入公众号和企微自建应用可以直接回复语音条

画图

得益于linkai平台增强能力,我们给机器人发送$mj open(如提示需要管理员权限,请看下面godcmd插件说明),即可打开mj作图的功能!

image-20240713230456097

详细的mj使用教程,可以参考MJ绘画功能

运行多个机器人

如果想一台服务器运行多个机器人,可以在宝塔面板把chatgpt-on-wechat这个项目文件夹整体复制一下,并改个名字方便识别!

image-20240713230914013

image-20240713230959172

在命令行,我们使用cd ..命令进入上一级目录,然后使用ls命令查看当前目录的所有文件(夹),然后cd chatgpt-on-wecha---2/切换到新复制的项目文件夹,在该目录下运行项目(nohup python3 app.py & tail -f nohup.out),即可用另外一个号扫码登录来做第二个机器人,修改该目录下的config.json文件即可配置第二个机器人相关的参数!

插件安装和使用

chatgpt-on-wechat项目支持自己开发插件接入,有代码能力的话可以根据自己的需求来编写插件。如果没有开发能力,可以使用项目内置插件。

此外,LinkAI平台在应用里提供了时间、联网搜索、计算器、网页速读等插件,开启即可使用,也支持无代码开发自定义插件。

godcmd插件

该插件是内置的管理员插件,可以提供很多管理员级别的操作,比如上边提到的mj作图的开关($mj open)。

image-20240713231105102

在宝塔面板进入plugins/godcmd文件夹,双击打开config.json文件,password内填入你要设置的管理员密码,比如:123456admin_users这个不填,因为itchat协议原因,每次重启用户id会变,所以这里写了没用。

image-20240713231127203

关闭项目并重启项目,然后给机器人发送#auth 123456进行管理员认证

image-20240713231133937

以下是常用管理员指令介绍:

  • 随时暂停/打开机器人的服务,给机器人发送#stop 暂停服务,发送#resume 恢复服务
  • 我们修改了根目录的config.json后,我们可以通过给机器人发送#reconf来重载项目配置,不用重启项目
  • 如果我们修改了各个插件的config.json后,我们可以给机器人发送#reloadp 插件名来重载插件的配置image-20240713231145441
  • 想看机器人当前装了什么插件,我们给机器人发送#plist即可查看当前插件列表
  • 我们可以通过指令安装插件,比如安装apilot插件,我们可以发送#installp https://github.com/6vision/Apilot.git (详见下一个插件介绍),因为是从GitHub下载,国内服务器网络可能有时候不好使,会报错,这样我们可以手动下载该插件压缩包到本地,然后在宝塔面板再上传到插件目录image-20240713231227478image-20240713231239818image-20240713231255643上传成功后,解压并重命名为Apilot,并复制模板配置文件,重名为config.json,在里面进行相关配置即可(参考下面godcmd插件介绍)
  • 插件安装配置好之后,我们给机器人发送#scanp来扫描新插件,然后使用#enablep 插件名来开启插件image-20240713231306502

apilot插件:

一个简单但实用的插件,调用api,直接格式化返回api响应,早报、快递查询、天气查询、热榜等,该插件不是项目内置插件,需要安装。管理员指令部分介绍了如何手动安装,该插件的说明文档也介绍很详细,以及docker部署时候如何配置,可以点击Apilot查看

https://github.com/6vision/Apilot

banwords插件

该插件是项目内置插件,不需要安装,进入banwords插件目录,按照插件说明配置即可:

https://github.com/zhayujie/chatgpt-on-wechat/tree/master/plugins/banwords
image-20240713231315331

config.json.template复制为config.json,将banwords.txt.template复制为banwords.txt,复制以下链接的内容粘贴到banwords.txt

https://github.com/6vision/sensitive_words/blob/main/banwords.txt
image-20240713231322785

image-20240713231327595

image-20240713231333229

LinkAI本地插件配置:

image-20240714001020316

该插件是项目的功能增强插件,目前已经支持了mj作图,知识库使用,群聊角色绑定,链接和文件的总结以及自动联网搜索等。

切换到./plugins/linkai目录,复制config.json.template文件,复制该文件并重命名为config.json

  1. 对话功能:
    • 支持为每个群聊绑定一个知识库应用,例如将"group_app_map"里参数的“测试群名称1”改为你的群聊名称,把“default”改为你的知识库应用code即可
    • 也可以在群聊发送指令绑定:image-20240714001114279
  2. MJ作图功能:
    • 可以通过指令 $mj open/close来开/关mj作图功能。image-20240714001123118
    • 一般1分钟左右就会出图,如果提示词触发了mj的政策,可能会一直收不到图片,这个任务会6分钟后自动结束并提示画图失败(服务器没有收到图片链接不会扣积分的哦)。可以适当调大"max_tasks_per_user"这个参数。
  3. 总结功能:
    • 可以通过指令$linkai sum open/close来开/关总结功能。
    • 打开以后,直接发送文件或者链接即可,会提示“正在为你加速生成摘要,请稍后”;
    • 查阅返回的总结后,如果有疑问或者需要进一步了解内容,发送“开启对话”即可详细了解;
    • 阅读结束,可以发送“退出对话”回到正常对话模型;
    • 目前支持微信公众号文章以及各种文件的总结
    • 文件目前 支持 txt, docx, pdf, md, csv格式,文件大小由 max_file_size 限制,最大不超过15M,文件字数最多可支持百万字的文件。建议不要发送过大的文件!较大文件可以上传知识库创建知识库应用。
    • 后续更新会支持微信外的链接以及视频总结等。

LinkAI平台插件:

  1. 内置插件:
image-20240714001733736

前面介绍的插件是CoW项目自带的插件,LinkAI平台还提供了一些内置插件,比如联网搜索、时间、图像识别、网页速读等。

这些插件能力在 应用 里面直接开启,实时生效,是基于意图识别自动调用,无需特定触发关键词,当然也可以设置关键词触发。

如果是知识库应用,可以把插件触发策略设为:知识库和插件同时执行,这样会把插件执行结果以及匹配到的知识库内容发给大模型做参考。

image-20240714003821042

2、自定义插件

平台除了内置插件,还可以无代码编写自定义插件。支持持通过意图识别、关建词匹配的触发条件,执行调用外部接口或服务。可对接业务系统、第三方接口、外部设备等。详见自定义插件介绍

快递

img

更多插件可以查看之前的文章:

常见问题

修改配置是否需要重启

1、修改项目主配置文件(即项目根目录的config.json),可以给机器人私聊发送#reconf进行重载,如果不生效就重启项目;修改插件项目本地插件,可以给机器人发送#reloadp 插件名进行重载,比如#reloadp godcmd

2、可以使用LinkAI的客户端管理功能,无需进入服务器,在线可视化修改配置,保存实时生效

image-20240714160950246

没有Linux基础,有方便的接入方式么?

LinkAI平台提供了一键接入服务,无需服务器部署,且各渠道功能相比开源项目更丰富,运行更加稳定,详细参考之前的文章:https://www.wangpc.cc/ai/linkai-to-all-platforms/

企业有稳定接入需求,可以联系LinkAI客服咨询:https://docs.link-ai.tech/contact

是否有风险?为什么会经常掉线?

该项目主要接入协同办公平台,推荐使用公众号、企微自建应用、钉钉、飞书等接入通道,其他通道为历史产物已不维护。(接入微信有一定风险,谨慎使用)

开源项目接入微信默认是使用itchat协议,由于比较老了且无人维护更新,掉线等不稳定问题无法解决,尽量保持手机端微信联网在线。

转载前请联系我,未经允许请勿转载:
作者:vision
标题:基于LinkAI和CoW项目, 手把手打造智能微信机器人
原文链接:https://www.wangpc.cc/ai/tutorial-wechatbot-with-linkai-cow/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇