为什么你的Cursor总是记不住上下文
为什么你的Cursor总是记不住上下文
在使用Cursor等AI工具时,你是否遇到过AI忘记之前对话内容的情况?本文将从技术原理出发,为你详细解析这一现象,并提供实用的解决方案。
AI大模型的工作原理
不管是ChatGPT还是Claude,这种AI大模型,本质上是在做一个文字接龙的游戏,就是会根据输入的内容,按照一定的规则选择下一个词应该是什么,并且每次都添加一个词。
这里的规则,就是我们可以控制的地方,有的人会认为应该选择概率最高的词,有的人会认为应该在概率排名靠前的TopK个中随机选一个效果会更好。这就是需要我们根据实际情况进行选择。这种随机性的引入,使得大模型能够生成更有创造力的文章,但同时就导致了就算我们使用相同的提示词,每次的输出也都可能得到不同的内容。
上下文长度限制
在我们每一次和Claude对话的时候,Cursor都会将之前的上下文信息携带上,输入给Claude,这样就导致了历史信息越多,输入的上下文就越多,而输出响应的时间就会变长。这也就是为何,我们一直在一个对话中不停的聊天,会导致这个页面出现卡顿的原因。
然而,由于算力以及响应时间等问题,上下文的长度是不可能无限扩展的,都是有一个上限值。在这里,我们一般用Token数进行衡量,Token就是大语言模型处理文本的时候,对文本进行切分的最小单位,可以是一个字,也可以是一个词组,这取决于大语言模型使用的编码策略。这个我们后面会给大家展示,现在稍作了解就可以。
在Cursor中,究竟支持多长的上下文呢。在Cursor官方文档中,我们可以找到答案。文档中很明显的可以看到,在chat中支持2w的tokens,而在cmd-k中支持1w的tokens。因此,当我们聊天的上下文过长的时候,Cursor会删减一部分上下文记录以及相关代码,以便满足这个长度。
那么问题来了,1w的token大概是多少单词或者汉字呢。这里,我们可以简单的记忆,1000个token通常代表750个英文单词或500个汉字。这个方法还需要我们自己去简单估算下上下文的长度,雨飞这里给大家找了一个网站可以比较方便的显示token数。
网址:https://tokencounter.org/claude_counter
下面是展示截图,目前这个网站只能统计Claude模型所占的token数。
如果想统计GPT模型所占用的token数,可以使用下面这个网站。
网址:https://platform.openai.com/tokenizer
为此,我们可以非常清晰的知道自己输入了大概多少的内容,是否超出了模型上限。
解决方案
如果非要添加上下文信息的话,可以先让AI把之前的聊天记录进行总结,写到文件中,然后引用这个文件再进行后面的提问。这样相当于把复杂的聊天记录进行了压缩,更节省token数,而且指令还更清晰。