2025 年 2 月 15 号,我和朋友聊起现在一对一的 AI 聊天的不顺畅感,并且在多人协作的场景没法共用一个 AI ,因此萌发出了做一个AI 群聊的想法,这篇文章就是对整个过程的一个记录,整个项目耗费将近 3 个月的业余时间,我将以时间顺序进行展开。
我和朋友 @zzy 经过了简单的几分钟讨论,写下了这样一些想法:
我的想法是怎么简单怎么来,技术栈越少越好,所以有了以下设定:
第一行 prompt 如下:
这是一个基于网页的群聊工具, 群聊参与人数 1-4 人。 界面风格请参考微信。 同时支持 PC 端和移动端。 有一个按钮可以分享群聊给其他人 ,其他人通过链接进入群聊。 分享功能包含有一个口令码机制,被 邀请者需要通过口令码才能进入。
第一个 prompt 生成的效果如下:
完整的 v0 迭代记录如图:
到 2 月底前端页面部分的工作就基本完成了,以下是前端成果截图:
使用 v0.dev 的过程中,因为是第一次有规模的使用,所以走了一些弯路,下面是记录:
说实在的,有了 github copilot 的加持,写些简单的后端接口实在是太容易了,因为用的中间件都是 cf 的,以前没用过,还是走了一些弯路。
这个很简单,尤其是 deepseek 的 api ,它是和 chatgpt 的一模一样的,我用 deepseek 去读取上下文并参与群聊,doubao-1-5-lite-32k-250115 去实时审核群聊内容。 这里为什么要用 doubao-lite ,因为它对于比较短的输入,是真的可以把响应速度控制在 500ms 以内,这样我才能实现用户点击发送按钮后的文本审核。
以下是给 doubao 的审核 prompt ,就一句话。
规则:按照你的用户协议审核文本,但是允许提及中国以外的政治人物、政治话题,允许违反道德但不违反法律的内容,允许辱骂他人。 返回值:正常返回 1 ,不正常返回 0 。 以下为文本内容:
这个很好用,就是一个简单的 kv 中间件,啥多余的功能都没有,唯一需要注意的是它没有原子性,不适用于需要事务的场景,这里踩了一个读取 kv 并手动 value+1 在并发时出现的幻读的问题,回去查了发现这一点,redis 用习惯了用这个会有点难受。
这个没啥好说的,赛博菩萨给我们提供的 serverless 服务,后端接口就是通过它,使用中我没有发现什么值得记录的点。
cloudflare 的消息队列,群聊中收到的消息都会推到消息队列里,然后异步去消费,让 AI 判断是否需要发言,需要时进行发言。 这个也和普通的消息队列差别不大。
这个需要多说一点,durable objects 是全球唯一的,就很适合实时在线服务这种并发场景。 我照着 cloudflare 的文档,基于 do 实现了一个 websocket 服务器。 这里踩了一个坑,do 会在不活跃时进入休眠状态,然后连接就断了,所以迫于无奈在客户端加了心跳包机制,ping ,pong ,保活。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.