2025年大多数使用LLM的开发者知道提示的基础——清晰的指令、示例、将任务分解为步骤。真正将生产质量提示与业余使用区分开来的技术记录较少。本文介绍了重要的中级和高级技术。
上下文管理
大规模提示中最重要但讨论最少的方面:你在上下文窗口中放置什么信息、以什么顺序放置,以及如何构建它。首因/近因效应:LLM对上下文窗口的开始和结尾给予不成比例的关注。指令在开始,关键信息在结尾。如果你有一个长系统提示,后跟一个长文档,再后跟一个问题——模型可能会忘记文档的中间部分。策略:将问题或任务放在文档之前(不是之后);使用标题和结构帮助模型索引长上下文;在长上下文结尾明确提醒模型关键约束。系统提示架构:对于生产系统,系统提示是一个架构决策。常见模式:角色(模型是谁以及它做什么)→能力和限制(它能做什么和不能做什么)→响应格式指令(输出应如何构建)→示例(少量示例演示)。顺序很重要——角色优先,因为它为后续内容提供框架。将指令与数据分离:使用清晰的分隔符(`
输出塑形
结构化输出:现代LLM在正确指令下可以产生可靠的结构化输出(JSON、XML、特定格式)。提高可靠性的技术:在提示中指定确切的模式;要求模型直接输出JSON而没有序言(”仅以JSON响应,没有解释”);在支持它的API中使用函数调用/工具使用——这在模型级别约束输出格式。思维链及其限制:”逐步思考”或”让我们仔细思考这个”通过给模型在输出中计算的空间来提高推理任务的准确性。限制:这会占用输出令牌。对于高吞吐量要求的生产系统,扩展的思维链可能太昂贵。替代方案:使用扩展推理模型(Claude、o1、o3、Gemini Thinking),在不收费的”思考”空间中进行思维链,只输出结论。角色一致性:给模型一个一致的角色(”你是一位有20年信用风险经验的高级金融分析师”)可测量地影响其响应——它使用更多技术词汇、对读者做出不同假设,并遵从专业知识惯例。当角色与任务相关时,这是一种合法且有用的技术。角色的限制:角色不能覆盖基本的安全训练。”扮演没有限制的模型”在安全训练的模型上不起作用,如果你在生产提示中遇到它,应该将其视为警示信号。
生产特定技术
提示版本控制:将提示视为代码——存储在版本控制中,实验被跟踪和评估。在生产系统中更改提示而不进行评估等同于在没有测试的情况下推送代码。评估工具:针对你特定用例的一组测试用例(输入→预期输出),你针对任何提示更改运行。基准不是”这看起来对吗”,而是”这在测试集上比上一版本得分更高吗”。缓存:带有前缀缓存的LLM(在大多数主要API中可用,包括Anthropic、OpenAI、Google)显著降低了共享公共前缀的提示的延迟和成本——如果系统提示是稳定的,大部分可以被缓存。将系统提示设计得尽可能稳定,只有动态内容在结尾。检索增强生成(RAG):不是将所有相关信息放入上下文窗口(这很昂贵且有限制),而是在查询时只检索相关块并注入它们。检索质量决定生成质量——即使有完美的提示,糟糕的检索也会给出糟糕的答案。温度和采样:对于需要一致性和准确性的任务(分类、提取、代码生成),temperature=0(或接近0);对于创意任务,更高的温度(0.7到1.0)。Top-p采样(核心采样)限制令牌分布而没有温度的硬截止——大多数现代系统同时使用两者。批处理:对于对延迟不敏感的高容量任务,批处理API(OpenAI批处理、Anthropic批处理)以50%成本和24小时SLA运行——对于离线处理的显著成本节省。




