
類型:人工智能
簡(jiǎn)介:一款基于深度學(xué)習(xí)和自然語(yǔ)言處理技術(shù)的產(chǎn)品,人氣趕超ChatGPT。
DeepSeek API上下文硬盤緩存技術(shù)是默認(rèn)開啟的,用戶無(wú)需額外修改代碼即可直接使用。每次請(qǐng)求都會(huì)觸發(fā)硬盤緩存的構(gòu)建。如果后續(xù)請(qǐng)求與之前的請(qǐng)求存在相同的前綴部分,那么重復(fù)的內(nèi)容會(huì)直接從緩存中提取,這部分會(huì)被計(jì)入“緩存命中”。
注意:只有兩個(gè)請(qǐng)求之間存在重復(fù)的前綴部分,才會(huì)觸發(fā)“緩存命中”。以下通過(guò)幾個(gè)實(shí)例來(lái)幫助理解。
一、DeepSeek長(zhǎng)文本問(wèn)答
1、第一次請(qǐng)求
messages: [ {"role": "system", "content": "你是一位資深的財(cái)報(bào)分析師..."} {"role": "user", "content": "<財(cái)報(bào)內(nèi)容>\n\n請(qǐng)總結(jié)一下這份財(cái)報(bào)的關(guān)鍵信息。"} ]
2、第二次請(qǐng)求
messages: [ {"role": "system", "content": "你是一位資深的財(cái)報(bào)分析師..."} {"role": "user", "content": "<財(cái)報(bào)內(nèi)容>\n\n請(qǐng)分析一下這份財(cái)報(bào)的盈利情況。"} ]
在這個(gè)例子中,兩次請(qǐng)求的前綴部分相同:system 消息和 user 消息中的 <財(cái)報(bào)內(nèi)容>。因此,在第二次請(qǐng)求時(shí),這部分前綴將被緩存命中。
二、DeepSeek多輪對(duì)話
1、第一次請(qǐng)求
messages: [ {"role": "system", "content": "你是一位樂(lè)于助人的助手"}, {"role": "user", "content": "中國(guó)的首都是哪里?"} ]
2、第二次請(qǐng)求
messages: [ {"role": "system", "content": "你是一位樂(lè)于助人的助手"}, {"role": "user", "content": "中國(guó)的首都是哪里?"}, {"role": "assistant", "content": "中國(guó)的首都是北京。"}, {"role": "user", "content": "美國(guó)的首都是哪里?"} ]
在此例中,第二次請(qǐng)求中前兩部分(system 消息和第一次 user 消息)與第一次請(qǐng)求相同,因此這些內(nèi)容將被緩存命中。
三、Few-shot學(xué)習(xí)
Few-shot 學(xué)習(xí)通常會(huì)提供一些示例,以幫助模型理解特定的模式,從而提升輸出效果。由于這些示例通常具有相同的上下文前綴,因此借助硬盤緩存技術(shù),F(xiàn)ew-shot 的費(fèi)用也會(huì)大幅降低。
1、第一次請(qǐng)求
messages: [ {"role": "system", "content": "你是一位歷史學(xué)專家,用戶將提供一系列問(wèn)題,你的回答應(yīng)當(dāng)簡(jiǎn)明扼要,并以`Answer:`開頭"}, {"role": "user", "content": "請(qǐng)問(wèn)秦始皇統(tǒng)一六國(guó)是在哪一年?"}, {"role": "assistant", "content": "Answer:公元前221年"}, {"role": "user", "content": "請(qǐng)問(wèn)漢朝的建立者是誰(shuí)?"}, {"role": "assistant", "content": "Answer:劉邦"}, {"role": "user", "content": "請(qǐng)問(wèn)唐朝最后一任皇帝是誰(shuí)"}, {"role": "assistant", "content": "Answer:李柷"}, {"role": "user", "content": "請(qǐng)問(wèn)明朝的開國(guó)皇帝是誰(shuí)?"}, {"role": "assistant", "content": "Answer:朱元璋"}, {"role": "user", "content": "請(qǐng)問(wèn)清朝的開國(guó)皇帝是誰(shuí)?"} ]
2、第二次請(qǐng)求
messages: [ {"role": "system", "content": "你是一位歷史學(xué)專家,用戶將提供一系列問(wèn)題,你的回答應(yīng)當(dāng)簡(jiǎn)明扼要,并以`Answer:`開頭"}, {"role": "user", "content": "請(qǐng)問(wèn)秦始皇統(tǒng)一六國(guó)是在哪一年?"}, {"role": "assistant", "content": "Answer:公元前221年"}, {"role": "user", "content": "請(qǐng)問(wèn)漢朝的建立者是誰(shuí)?"}, {"role": "assistant", "content": "Answer:劉邦"}, {"role": "user", "content": "請(qǐng)問(wèn)唐朝最后一任皇帝是誰(shuí)"}, {"role": "assistant", "content": "Answer:李柷"}, {"role": "user", "content": "請(qǐng)問(wèn)明朝的開國(guó)皇帝是誰(shuí)?"}, {"role": "assistant", "content": "Answer:朱元璋"}, {"role": "user", "content": "請(qǐng)問(wèn)商朝是什么時(shí)候滅亡的"} ]
在這個(gè)例子中,第二次請(qǐng)求與第一次請(qǐng)求大部分內(nèi)容重復(fù),只有最后一個(gè)問(wèn)題不同。因此,第二次請(qǐng)求可以復(fù)用第一次請(qǐng)求中的前 4 輪對(duì)話,這部分將被緩存命中。
四、查看緩存命中情況
在 DeepSeek API 的返回中,usage 字段會(huì)增加兩個(gè)額外的字段,用于反映緩存命中的情況:
p1、rompt_cache_hit_tokens:本次請(qǐng)求中,緩存命中的 tokens 數(shù)量(0.1 元 / 百萬(wàn) tokens)。
2、prompt_cache_miss_tokens:本次請(qǐng)求中,緩存未命中的 tokens 數(shù)量(1 元 / 百萬(wàn) tokens)。
五、硬盤緩存與輸出的隨機(jī)性
硬盤緩存僅匹配用戶輸入的前綴部分,而輸出仍然通過(guò)計(jì)算推理得出,因此輸出結(jié)果仍然會(huì)受到 temperature 等參數(shù)的影響,保持一定的隨機(jī)性。使用硬盤緩存的輸出效果與不使用緩存時(shí)是一樣的。
六、其他說(shuō)明
1、緩存系統(tǒng)以 64 tokens 為一個(gè)存儲(chǔ)單元,少于 64 tokens 的內(nèi)容不會(huì)被緩存。
2、緩存系統(tǒng)是“盡力而為”,不能保證每次都100%命中緩存。
3、緩存構(gòu)建時(shí)間一般為秒級(jí),且會(huì)在緩存不再使用后自動(dòng)清空,清空的時(shí)間通常為幾個(gè)小時(shí)到幾天不等。