文章目录前言大模型我记住你了不我没有上下文模型的金鱼脑疗法Messages数组的变形记Tokenize模型的切菜功夫提示词缓存模型的抄作业神器多轮对话俄罗斯套娃式缓存总结一下P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01前言你有没有遇到过这种人你刚跟他说完我分手了他转头问你“你对象是谁啊”恭喜你你遇到了一个和大模型同款记忆的朋友。大模型我记住你了不我没有大模型这玩意儿表面上看起来学富五车、上知天文下知地理实际上就是个高级版的文字接龙玩家。你给它一段字它就开始猜下一个字该说啥跟小学生填空题一个水平唯一的区别是它猜得比你快。但问题来了它猜字的时候根本不认识你发的那些JSON数组。你辛辛苦苦构造的messages在它眼里就跟天书一样比高数课本还陌生。上下文模型的金鱼脑疗法首先咱们得明白大模型是个彻头彻尾的金鱼脑。每次你发消息对它来说都是全新的开始它不会记得三分钟前你们聊过啥就像你那个每次见面都要重新自我介绍的朋友。你以为是谈恋爱其实对方是海王同时跟八万人聊天根本记不住你是谁。它对你的温柔回应不过是概率计算的结果比算命先生还虚无。所以你必须把之前的聊天记录一股脑儿塞给它这叫上下文。有人说“不对啊我用的ChatGPT明明记得我之前说过的话”朋友那不是它记得是程序员哥哥把你们之前的对话复制粘贴进去了。模型本身就像一块黑板每次写完就擦擦完就忘比你的健忘症还彻底。你要是不带历史记录直接问帮我把刚才那段代码改成降序模型内心OS是刚才什么刚才我们认识吗“然后给你重新写一段完美诠释什么叫已读乱回”。Messages数组的变形记好现在你知道了每次对话都要带历史记录。那这个messages数组传到模型手里到底经历了什么人间疾苦第一步模型拿到你的JSON内心OS是——这是啥能吃吗它根本不认识什么role、content它只认识一串数字。在它眼里你的精心构造的messages数组跟乱码没什么区别。所以后台得先把你的JSON压扁变成一长串带特殊标记的文本。就像你把一摞简历塞进碎纸机再按颜色重新拼起来听着就挺魔幻的。举个例子你传的messages看起来是这样的[{role:system,content:你是专业程序员},{role:user,content:解释一下KV缓存}]模型后台会把它压扁成带标签的长文本|system| 你是专业程序员 |user| 解释一下KV缓存 |assistant|那些|system|、|user|、|assistant|都是特殊占位符就像化装舞会上的身份牌不然模型这个社交恐惧症根本分不清谁是谁搞不好把系统指令当成用户吐槽当场给你表演一个自我否定。最后停在|assistant|后面意思是该你说话了请开始你的表演。Tokenize模型的切菜功夫拼好之后下一步就是切词专业术语叫tokenize。常见词比如缓存模型一看哦老熟人了一个token搞定。“但你要是写个饕餮或者魑魅魍魉”模型当场就懵了“这啥拆开全都拆开”英文更惨一个单词可能拆成好几个token。所以别怪模型有时候不懂你的缩写它可能把GPT拆成了G-P-T三个字母然后一脸懵逼地问“这是啥牌子的汉堡为啥这么贵”最后所有东西都被切成数字ID。模型不认识你好它只认识[12345,67890]这种数字串。这就好比你给外星人写信先翻译成摩斯密码再转成二进制绕了八百个弯最后外星人回了一句“在吗”然后这串数字被送进模型的预填充阶段算完KV缓存再一个字一个字往外蹦。整个过程就像你做饭先切菜tokenize再炒菜Prefill最后装盘Decode一步都不能少。只不过模型这个厨师有个怪癖每次你点同样的菜它都要重新切一遍菜哪怕你刚才才点过。你说气人不气人提示词缓存模型的抄作业神器说到这你可能要问了每次都把整段历史重新切一遍、算一遍不累吗累当然累模型算得GPU都冒烟了你的钱包也哭得稀里哗啦比看演唱会还烧钱。于是聪明的工程师想出了一个骚操作——提示词缓存英文叫Prompt Caching。这玩意儿的原理特别像抄作业还是那种高科技抄作业。你第一次抄全本手都抄断了。第二次发现前面几题跟同桌一模一样直接复制粘贴只抄后面不一样的部分。模型也是这么干的它把之前算过的KV缓存存起来下次如果前缀一样直接拿来用。但注意啊这个一样是严格到变态级别的。你多一个空格、多一个标点缓存当场失效。就像你复制银行卡密码前面多了一个空格直接支付失败。缓存系统比你的女朋友还敏感说翻脸就翻脸。而且缓存还有保质期一般5到10分钟不用就过期了。比你家冰箱里的酸奶还娇贵得时不时拿出来用一下不然就废了。多轮对话俄罗斯套娃式缓存那多轮对话怎么缓存呢我给你打个比方。第一轮你说你好模型回你好。这一整段被存进缓存像存了个游戏存档点。第二轮你说你好今天天气怎样模型一比对前面你好这段我算过啊直接复用只算后面新增的今天天气怎样。这就像你点外卖第一次填地址填到手抽筋第二次直接勾选使用上次地址爽得飞起。第三轮你说你好今天天气怎样适合约会吗模型又发现前面你好今天天气怎样都算过了继续复用只补算适合约会吗。但你要是搬家了哪怕门牌号从101改成102缓存就废了得重新填比快递小哥还较真。所以工程师们总结出一个黄金法则把不变的东西系统指令、角色设定放前面把变的东西用户输入放后面。总结一下所以你看大模型处理messages的过程本质上就是压扁JSON、贴上标签、切成token、转成数字、算KV缓存、然后一个字一个字往外蹦。跟工厂流水线似的一环扣一环。而提示词缓存就是让你少算一点、少花一点、响应快一点。同样的前缀只算一次模型轻松你省钱双赢。记住跟大模型聊天千万别觉得它记得你。它就是个没有感情的文字接龙机器每次都在重新认识你比渣男还绝情比金鱼还健忘。你能做的就是把聊天记录复制粘贴全发过去顺便祈祷你的钱包还撑得住。毕竟token计费可是按字数算的话多的人费钱啊比你女朋友的购物车还可怕。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01