Appearance
DeepSeek 编程场景高缓存命中率提示词模板
根据搜索结果,我为你设计了一份专门用于编程场景的提示词模板,遵循"固定前缀 + 可变参数"的核心原则,能够显著提升缓存命中率。
通用编程助手模板
模板结构(推荐顺序)
python
# ===== 固定部分(缓存命中核心)=====
SYSTEM_PROMPT = """你是一名资深程序员,精通多种编程语言,严格遵循编码规范。
你的职责包括:
1. 编写简洁、高效、可维护的代码
2. 提供清晰的代码注释
3. 解释技术原理
4. 调试和优化现有代码
请用中文回答,代码使用正确的语法高亮格式。"""
# ===== 可变部分(放在最后)=====
USER_INPUT = "请根据以下需求编写代码:{具体需求}"完整调用示例
python
messages = [
{"role": "system", "content": "你是一名资深程序员,精通多种编程语言,严格遵循编码规范。你的职责包括:1. 编写简洁、高效、可维护的代码 2. 提供清晰的代码注释 3. 解释技术原理 4. 调试和优化现有代码。请用中文回答,代码使用正确的语法高亮格式。"},
{"role": "user", "content": "请根据以下需求编写代码:【在此处填写具体需求】"}
]关键点:前两条 message 构成稳定前缀,只要不改动 system prompt,第一条 user 内容保持"请根据以下需求编写代码:"这前半部分不变,仅替换【】中的具体需求,就能命中缓存。
常见编程子场景模板
代码生成模板
python
messages = [
{"role": "system", "content": "你是一名专业程序员,擅长编写高质量代码。请严格按照以下格式输出:\n\n## 功能说明\n## 代码实现\n## 使用示例\n## 注意事项"},
{"role": "user", "content": "请用【语言】编写一个函数,实现【功能描述】。具体要求:\n- 输入:【输入说明】\n- 输出:【输出说明】\n- 性能要求:【性能要求】"}
]缓存优化说明:system prompt 完全固定,user 消息中"请用"之前的部分固定,只有方括号内的具体参数变化。
代码调试模板
python
messages = [
{"role": "system", "content": "你是一名经验丰富的代码调试专家,擅长快速定位和修复Bug。分析时请按以下步骤:\n1. 问题复现\n2. 根因分析\n3. 修复方案\n4. 优化建议"},
{"role": "user", "content": "请帮我调试以下代码。错误描述:【错误信息】\n代码:\n```【语言】\n【代码内容】\n```"}
]注意:如果每次调试的代码完全不同,缓存命中率会降低。建议将系统提示词和指令格式固定为前缀,具体代码作为可变参数后置。
代码审查模板
python
messages = [
{"role": "system", "content": "你是一名代码审查专家,请从以下维度评估代码质量:\n- 代码规范\n- 性能效率\n- 安全性\n- 可维护性\n- 潜在Bug"},
{"role": "user", "content": "请审查以下【语言】代码:\n```【语言】\n【代码内容】\n```\n审查重点:【具体关注点】"}
]技术问答模板
python
messages = [
{"role": "system", "content": "你是一名技术专家,擅长用通俗易懂的方式解释复杂概念。回答时请:\n1. 先给出简洁结论\n2. 再展开详细原理\n3. 最后提供代码示例"},
{"role": "user", "content": "请问【技术问题】?\n上下文:【相关背景信息】"}
]缓存命中优化要点
必须遵守的原则
| 原则 | 说明 |
|---|---|
| 固定前缀前置 | 将 system prompt、工具定义、固定指令放在消息列表最前面 |
| 变量后置 | 所有动态内容(用户ID、时间戳、具体需求)放在末尾 |
| 严格一致 | 确保 system prompt 的标点、空格、换行完全一致,不要拼接动态内容 |
| 只追加不修改 | 多轮对话中,只追加新消息,不修改历史消息 |
| 避免随机内容 | 不要在提示词中加入时间戳、随机数、请求ID等动态信息 |
常见错误示例
python
# 错误:system prompt包含动态内容
SYSTEM_PROMPT = f"你是一名程序员,当前时间:{datetime.now()}"python
# 错误:动态内容前置
messages = [
{"role": "user", "content": f"用户ID:{user_id}, 请帮我写代码"},
{"role": "system", "content": "固定提示词"}
]python
# 错误:标点符号不一致
# 第一次: "请帮我写代码"
# 第二次: "请帮我写代码。" # 多了一个句号正确做法
python
# 正确:system prompt完全硬编码
SYSTEM_PROMPT = "你是一名资深程序员,擅长编写高质量代码。"python
# 正确:固定前缀 + 可变参数
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": f"请帮我用Python写一个函数,{具体需求}"}
]
# 其中"请帮我用Python写一个函数,"是固定前缀,可以命中缓存高级技巧:多轮对话缓存优化
对于编程场景中的多轮对话(如逐步调试),推荐使用累积历史消息的方式:
python
# 每次请求都包含完整历史(不截断、不修改)
messages = [
{"role": "system", "content": SYSTEM_PROMPT}, # 固定,始终命中缓存
{"role": "user", "content": "第一轮问题"},
{"role": "assistant", "content": "第一轮回答"},
{"role": "user", "content": "第二轮问题"},
{"role": "assistant", "content": "第二轮回答"},
{"role": "user", "content": "当前轮问题"}, # 只有最后一条会变化
]效果:前面的所有历史消息都能命中缓存,只有最后一条新消息需要计算。根据实测,这种方式的缓存命中率可达 90% 以上。
预期收益
按照 DeepSeek 的定价:
- 缓存命中:输入 Token 约 ¥0.1/百万
- 缓存未命中:输入 Token 约 ¥1-12/百万
优化后,缓存命中率可从不足 10% 提升至 85-98%,成本降低 90-98%,首 Token 延迟从 13 秒降至约 500 毫秒。
希望这份模板能帮助你大幅降低 DeepSeek API 的调用成本!如果有特定的编程场景需要进一步定制模板,欢迎告诉我。