GPT应用_chatgpt-on-wechat
1 用后感
简单地说,chatgpt-on-wechat 是把 ChatGPT 做成一个微信的机器人好友。项目主要是 Python 编写的,所以上手很快;一键部署也很简单,半个小时以内就能搞定。
项目地址:https://github.com/zhayujie/chatgpt-on-wechat
2 功能
2.1 整体功能,核心是想解决什么问题
核心功能是把大模型做成了微信中的聊天机器人。从底层看,它支持多个大模型:GPT-3.5, GPT-4, claude, 文心一言, 讯飞星火等;从上层看,它支持多种终端,如个人微信、微信公众号、企业微信、飞书等。
2.2 当前解决了什么问题,哪些问题解决不了
我觉得它解决了 LLM 接入微信 90% 以上的问题,作为独立软件的完整性很好;同时可作为二创的完美 baseline。
2.3 提供哪些功能点,其中哪些是刚需
整体代码和功能分为两部分:接入模型和接入终端。得用终端的接入,我们可以通过微信提供很多服务,不仅限于大模型。接模型这块做得也比较全,包含了图像和语音的支持,而且支持不同公司模型和对工具的调用。
尽管可选模型很多,终端支持也不少;但估计绝大多数人都是把 ChatGPT 作为模型,个人微信作为终端。放在群里给大家用,或者是作为自己的机器人好友。
2.4 用户使用难度,操作逻辑是否过于复杂
开箱即用,部署使用难度为 0。
3 技术栈
3.1 技术栈是什么
- 这是一个独立的项目,不需要与其它工具配合使用,它利用微信作为前端。
3.2 现有底层工具消化了哪些常用功能
- 微信相关工具使用 itchat,并且嵌入在项目之中
- 没有调 langchain 这些工具,相对独立
3.3 代码主要集中在哪部分
- 源码 6M 多,docker image 1.5G;具体占比请见代码分析
3.4 代码量和难度(使用 cloc 工具统计)
- 代码以 Python 为主,11000+ 行
- 源码非常清晰,一看名字便知其功能;代码整体设计很有章法
4 商业模式
LinkAI 是其收费的兄弟产品,可将 LinkAI 作为此项目的知识库扩展,还实现了联网搜索、数学计算、网页访问等功能。此项目接入了 LinkAI。
看起来收益有两种走向,一种是通过给 LinkAI 充值,由他来提供相应的包装服务以及附加功能的服务,比如进一步实现 AI 智能客服,智能助理等。另外,做了一个应用广场,如果把自己应用放在应用广场,也可以取得收益,可能作者团队也希望能建立一种生态。
详见:https://docs.link-ai.tech/ 价格说明。
5 用法
5.1 安装&运行
1 | $ wget https://open-1317903499.cos.ap-guangzhou.myqcloud.com/docker-compose.yml |
此时它启在后台,用 docker ps 可以看到;查看 log,然后扫码登录。
1 | docker logs -f chatgpt-on-wechat |
6 修改代码后运行
1 | docker run --rm -v /exports/:/opt/xieyan/ -name chatgpt-on-wechat -d zhayujie/chatgpt-on-wechat |
6.1 使用注意事项
部署的版本默认支持绘画,就是有点小贵。
7 代码分析
7.1 主要代码
当前版本全部代码:11400 行,核心代码目录如下:
1 | bot:调用各种大模型,12% |
7.2 调用关系
主循环:app.py->channel_factory.py->wechat_channel.py
大模型调用:bridge.py->bot_factory.py->chat_gpt_bot.py
事件走向:chat_channel.py: produce->consume->_handle->_generate_reply->build_reply_content->bridge->bot...
这里的消息使用先进先出队列 (produce 入队 consume 出队),以保持处理的顺序和等待延时。
7.3 插件
事件触发了从接收消息到调用模型再到回复的过程;在加入新功能时,并不需要修改上述主结构代码。
更好的方法是通过插件实现附加功能,使用插件,可以不修改代码主体,以免改乱了,或者无法合并主分支的新代码。
plugins 目录下放置了一些现有的插件,其中 hello 插件非常简单可作为 demo 参考,它的功能是在用户输入 “Hello” 时,回复用户的名字。代码不到 100 行,主要实现了消息处理的过程,以及一些插件描述信息。
如果插件有一次加载错误,就会在 chatgpt-on-wechat/plugins/plugins.json 自动置为 false,不再启动;需要打开改为 true
8 讨论
我真怀疑,是不是真有人把这个东西接在自己的帐号上,让他替自己回复吗?那这人心得多大呀?但从真实应用场景中看,对于某些场景(某些不重要的……),如果下载了之前所有历史对话并加以学习(进一步开发),让他在某种程度上替代自己也是有可能的。
相对来说,把他当作机器人助理比较正常一点。