• 基于chatgpt-on-wechat搭建个人知识库微信群聊机器人


    前言

    啊,最近在别人微信群里看到一个聊天机器人,感觉挺好玩的。之前GPT刚出来的时候就知道有人把聊天机器人接入到微信或者QQ中来增加互动,但是当时没想那个想法。

    很久没关注这块了,发现现在可以使用大模型+知识库的方式来打造自己的专属机器人。我突然眼前一亮,我现在特别需要这个机器人。

    因为现在我的群里有以下几个问题:

    1. 会有很多新加入的群友,需要发送一些群规和欢迎语。
    2. 大家有时会问很多基础的重复性的问题。

    我希望的

    1. 自动发送群规和欢迎语这个普通的群聊机器人都具备,这个不是刚需。
    2. 这个是我最希望解决的,因为很多小白问的问题都是一样的,那我有时候看消息不及时,来不及回复,或者一个答案重复发好几次。所以我希望能够将一些通用的问题规整到知识库里,再由群聊机器人来帮我从知识库中提取答案去回复。

    于是迫不及待问下那个老哥,他说用的是chatgpt-on-wechat这个项目部署的。

    OK开整,我开始在我的一个快要荒废的阿里云服务器上部署这个项目。

    部署准备

    • 需要一台云服务器(或者你自己的电脑本地也可以,但是本篇只讲云服务器上部署的流程)
    • 服务器上安装宝塔面板

    开始部署

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

    这里有两种方式:

    • docker部署的方式
    • python部署的方式

    以上两种方式我都尝试了,最开始尝试的是docker,很不幸的是我docker没部署成功,应该是docker pull的问题,一直拉不下来镜像,无论是修改镜像加速还是修改docker pull加速都没成功。

    无奈,只能用python的方式去部署。

    拉取源码

    将项目下载下来,压缩包传到宝塔上面

    我直接上传到/www/wwwroot目录下

    配置config文件

    然后双击解压,解压完成后进入项目根目录找到config-template.json

    这是一个配置模版,用来配置机器人的各项参数。我们需要复制这个文件,并命名为config.json

    编辑配置文件,默认的是openai的配置,由于使用openai需要做个代理服务器,太麻烦,成本高(需要一台国外服务器)

    于是先试试用LinkAI配置下

    1. {
    2. "channel_type": "wx",
    3. "model": "moonshot-v1-8k",
    4. "moonshot_api_key": "sk-XXXX",
    5. "proxy": "",
    6. "hot_reload": false,
    7. "single_chat_prefix": [
    8. "bot",
    9. "@bot"
    10. ],
    11. "group_welcome_msg": "欢迎加入本群,欢迎语!!",
    12. "single_chat_reply_prefix": "[bot] ",
    13. "group_chat_prefix": [
    14. "@bot"
    15. ],
    16. "group_name_white_list": [
    17. "俺们俩的小群"
    18. ],
    19. "image_create_prefix": [
    20. "画"
    21. ],
    22. "speech_recognition": false,
    23. "group_speech_recognition": false,
    24. "voice_reply_voice": false,
    25. "conversation_max_tokens": 2500,
    26. "expires_in_seconds": 3600,
    27. "character_desc": "你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。",
    28. "subscribe_msg": "感谢您的关注!\n这里是AI智能助手,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。",
    29. "use_linkai": true,
    30. "linkai_api_key": "Link_XXXXX",
    31. "linkai_app_code": "EsurXXX"
    32. }

    其实想快速上手只用配置这几个参数即可,后面再慢慢开放其他额外的功能

    model对话大模型(这里我填的是moonshot-v1-8k,就是月之暗面的大模型,如果想填别的,就填对应的大模型名称,比如:gpt-3.5-turbo)

    moonshot_api_key大模型对话api_key,每个大模型的apikey格式不一样,比如月之暗面的是moonshot_api_key、gpt的是open_ai_api_key

    group_name_white_list配置群名白名单,就是说你的机器人要在哪个群里使用,就填写那个群的群名。

    use_linkai填写true

    linkai_api_key填写你在linkAI上申请的apikey

    linkai_app_code填写你在linkAI上的app code

    具体配置说明参考

    配置说明 | LinkAI - 一站式AI智能体平台 - 极简未来

    注册LinkAI账号

    然后需要去LinkAI注册账号

    LinkAI - 一站式AI智能体平台 - 极简未来

    创建一个应用

    选择知识库应用,并且创建对应的知识库。

    然后上传一些资料到知识库上

    问答文档的格式是csv,下载csv模版

    模版内容是一问一答的形式。

    我增加了一些测试数据

    然后来到你创建的应用这里检查绑定知识库

    知识库设置,未命中策略我修改为了固定文案,防止AI自行推理出错误的信息。

    宝塔创建项目

    配置完成后,回到宝塔界面新建python项目

    项目路径:填写你压缩包解压后的根目录

    运行文件:app.py

    项目端口:8080(记得去你服务器上安全组查看下是否开放8080端口)

    python版本:3.9.7(建议3.9.x都可以,3.10.x可能会有问题)

    框架:python

    运行方式:python

    安装依赖包:解压包根目录下的requirements.txt文件

    然后点击提交,等待项目创建完毕。

    创建好后可能是未启动或者启动的状态,这个时候将项目修改为未启动状态。因为还有些依赖没安装完毕。

    然后点击终端

    输入下面命令安装可选依赖

    pip3 install -r requirements-optional.txt       # 可选依赖,语音、tool插件等功能需要

    依赖安装完毕后启动会报错缺少tiktoken模块,输入下面命令安装下

    pip install tiktoken

    启动项目

    然后输入下面命令

    首次运行需要新建日志文件

    touch nohup.out 

    运行程序并通过日志输出二维码

    nohup python3 app.py & tail -f nohup.out  

    执行成功后可以看到二维码打印出来,拿你想要当机器人的微信号扫码登录就可以

    扫码登录完成后,可以关闭终端界面,程序会在后台执行。

    你会发现服务装填是未启动,这个不影响,程序已经执行了。

    输出的日志在项目根目录的run.log文件内

    如果你调试过程中需要关闭或者重启项目

    输入查询命令

    ps -ef | grep app.py | grep -v grep

    关掉对应PID程序

    kill -9 15230

    比如这里程序的pid是20945,输入kill -9 20945关掉程序。

    测试截图

    可以看到回复我的信息是调取了知识库的。

    一些问题

    测试爽了,但是发现一些问题,LinkAI确实挺好用的,就是小贵!

    这可不行,我又尝试了coze、FastGPT等其他几个类似的平台之后,找到了一个相对便宜点的,智谱AI.

    智谱AI开放平台

    因为一上来会送你3000万的tokens,美滋滋

    同样的,智谱AI也是需要去申请APIkey和知识库的。

    适配知识库

    但是chatgpt-on-wechat项目目前不支持质谱AI的知识库

    在github上找到了修改方法

    新增支持 GLM-4 知识库检索功能 by xiexin12138 · Pull Request #1758 · zhayujie/chatgpt-on-wechat · GitHub

    修改bot/zhipuai/zhipuai_bot.py

    和config.py

    修改完成后重启项目,扫码登录,成功运行。

    模板参考

    下面是我部署过程中尝试的一些config模板

    月之暗面

    1. {
    2. "channel_type": "wx",
    3. "model": "moonshot-v1-8k",
    4. "moonshot_api_key": "sk-XXXX",
    5. "proxy": "",
    6. "hot_reload": false,
    7. "single_chat_prefix": [
    8. "bot",
    9. "@bot"
    10. ],
    11. "group_welcome_msg": "欢迎加入本群,欢迎语!!",
    12. "single_chat_reply_prefix": "[bot] ",
    13. "group_chat_prefix": [
    14. "@bot"
    15. ],
    16. "group_name_white_list": [
    17. "俺们俩的小群"
    18. ],
    19. "image_create_prefix": [
    20. "画"
    21. ],
    22. "speech_recognition": false,
    23. "group_speech_recognition": false,
    24. "voice_reply_voice": false,
    25. "conversation_max_tokens": 2500,
    26. "expires_in_seconds": 3600,
    27. "character_desc": "你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。",
    28. "subscribe_msg": "感谢您的关注!\n这里是AI智能助手,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。",
    29. "use_linkai": true,
    30. "linkai_api_key": "Link_XXXXX",
    31. "linkai_app_code": "EsurXXX"
    32. }

    1. {
    2. "channel_type": "wx",
    3. "model": "glm-4",
    4. "zhipu_ai_api_key": "",
    5. "zhipu_ai_api_base": "https://open.bigmodel.cn/api/paas/v4",
    6. "zhipu_ai_knowledge_id": "",
    7. "proxy": "",
    8. "hot_reload": false,
    9. "single_chat_prefix": [
    10. "bot",
    11. "@bot"
    12. ],
    13. "group_welcome_msg": "欢迎加入本群,欢迎语!!",
    14. "single_chat_reply_prefix": "[bot] ",
    15. "group_chat_prefix": [
    16. "@bot"
    17. ],
    18. "group_name_white_list": [
    19. "俺们俩的小群"
    20. ],
    21. "image_create_prefix": [
    22. "画"
    23. ],
    24. "speech_recognition": false,
    25. "group_speech_recognition": false,
    26. "voice_reply_voice": false,
    27. "conversation_max_tokens": 2500,
    28. "expires_in_seconds": 3600,
    29. "character_desc": "你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。",
    30. "subscribe_msg": "感谢您的关注!\n这里是AI智能助手,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。",
    31. "use_linkai": false,
    32. "linkai_api_key": "Link_XXXXXX",
    33. "linkai_app_code": "XXXXXX"
    34. }

    总结下就是,部署了这个项目后确实能给我省不少精力,后续我只需要将一些常见问题汇总,构建成知识库的形式,方便群友去查询。

    关于平台,LinkAI挺方便的,可以直接选择GPT4、Kimi等主流大模型,就是有点贵。个人感觉GLM4的知识库回答没有LinkAI的那么灵活,可能是我还没调好。

    官方文档参考

    快速开始 | LinkAI - 一站式AI智能体平台 - 极简未来

  • 相关阅读:
    数据可视化系列教程之组件构成
    【已解决】Pyecharts折线图,只有坐标轴没有折线数据
    vue3+uniapp onLoad传参获取值
    asyncawait和promise的区别
    moco接口框架介绍
    React useContext
    计算机毕业设计Java鲜花订购网微服务(源码+系统+mysql数据库+Lw文档)
    播放视频出现错误代码0xc00d36c4如何修复?
    快手、抖音、视频号交战内容付费
    js异步编程面试题你能答上来几道
  • 原文地址:https://blog.csdn.net/weixin_43935971/article/details/139878074