1. 为什么我们需要Prompt缓存?
大型语言模型(LLM)API调用成本主要由三个因素决定:输入Token数、输出Token数和调用次数。以一个典型的企业级AI应用为例,假设每天处理100万次请求,每次请求平均消耗1000个输入Token和500个输出Token(基于GPT-4定价模型),单日成本就可能高达数千美元。
在实际业务场景中,我们经常遇到以下情况:
- 客服机器人中重复的FAQ问答
- 开发者文档的自动生成
- 标准化报告的输出
- 系统自动生成的日志分析
这些场景的共同特点是:大量高度相似甚至完全相同的Prompt被反复发送,而期望得到的响应内容基本一致。如果不采用缓存策略,每次调用都会产生不必要的费用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础缓存策略实现
2.1 精确匹配缓存
这是最直接也最容易实现的方案。核心思路是为每个Prompt字符串创建唯一哈希键,建立键值对存储。
javascript复制const crypto = require('crypto');
const cache = new Map();
function hashPrompt(prompt) {
return crypto.createHash('sha256').update(prompt).digest('hex');
}
async function getCachedResponse(prompt) {
const cacheKey = hashPrompt(prompt);
if (cache.has(cacheKey)) {
console.log('Cache hit for:', prompt.substring(0, 30)+'...');
return cache.get(cacheKey);
}
const response = await callLLMAPI(prompt);
cache.set(cacheKey, response);
return response;
}
注意事项:内存缓存虽然高效,但在分布式系统中需要额外考虑同步问题。生产环境建议配合Redis等分布式缓存使用。
2.2 规范化处理优化
精确匹配的一个明显缺陷是对格式变化过于敏感。以
