Introducing Endless Chat BETA

为满足大家对无限上下文对话的需求,我们推出了无尽模式。下面分别对这个项目的原理、局限性、参与内测条件进行一个简要说明。

如何申请抢先使用 Endless Chat

由于无限制上下文不可避免地导致流量增大、token 消耗增加、计算量增大等问题,如果你加入了免费内测,我们希望你:

体验地址是 endless.chat.bnu120.space,就是比 Free Chat 的网址多了个 endless 前缀。网页暂时有密码保护,只是为了限制人数,在一段时间内先算算成本。扫码加入内测群,在群公告中可以看到最新的密码:

qr_code

局限性

你可以想象 Endless Chat 为一个记忆力有限的人,它虽然能不停地跟你对话,它只能记住你的一部分信息,所以以下几种你不愿意发生的事情是有可能发生的(其中部分会在我们未来的更新中逐渐解决):

我们在实现前面原理中谈到的第 3~4 点后情况会大有好转,但这需要时间,请大家给我耐心!谢谢大家!

原理

众所周知,openai 对 ChatGPT 处理文本的长度进行了限制,具体来说就是,上下文+本次生成的内容总长度小于4096个token,所以无限长度上下文的对话本质上是不可能的,但正如大家在官方的 Web APP 中看到的那样,不限长度的对话是可能的 —— 建立在抛弃相关性较小的上下文片段的前提下。Endless Chat 致力于打造这种体验。

因为传给 ChatGPT 的上下文不能太长,所以我们必须缩减上下文,不可能全部对话记录都传过去。目前的方案是:

相关部分的实现代码如下:

目前从大家反馈来看效果还不错(大家继续反馈关于上下文的问题哈),未来可能的改进方向有:

  1. 将先前的对话“总结”,发送总结和最近的数条聊天记录

  2. 为先前的对话建立 embedding 索引,在用户下一条消息出现时进行语义搜索,发送搜索结果和用户最近的两三条消息记录

总的来说,无非是用两种思路减短上下文:

目前只实现了简单的筛选。如果你有好的想法实现,欢迎告诉我 ~