真正提升LLM输出的5种提示优化策略

💡 原文英文,约2300词,阅读约需9分钟。
📝

内容提要

提示工程是从零设计提示,提示优化则改进已有提示。文章以一份混乱的会议记录为例,介绍五种经实证有效的优化方法:指定结构化输出(如JSON模式)、赋予角色人设、精选多样化少样本示例、对模糊情况使用思维链推理,以及用真实测试用例自动迭代搜索最优提示片段。核心是停止凭感觉猜测,改为针对真实案例测试可验证的具体改动。

🔎

延伸解读

结构化输出:从可读到可解析

文章将结构化输出列为最可衡量的优化手段。当提示要求“列出行动项”时,模型可能返回流畅但无法被代码解析的文本;而指定JSON模式后,输出能直接通过Pydantic等工具验证。在自动化流程中,不可解析的输出意味着硬失败,而非小瑕疵。因此,若下游系统需要消费LLM结果,应优先采用结构化输出,避免人工转录。

角色人设:低成本激活特定行为

赋予模型具体角色(如“细致的行政助理”)能引导其关注任务中的关键细节,例如对话中的任务转派或未确认的负责人。文章指出,这种改变成本极低,但能显著影响模型对模糊信息的处理方式。对于会议记录等杂乱输入,角色提示可提前“预热”模型对歧义的警觉,减少遗漏。

少样本示例:多样性比数量更重要

文章强调,少样本示例的选择策略可能比指令措辞影响更大。若示例高度相似,模型学不到新模式。通过算法选择彼此差异最大的示例,能覆盖不同情况,如已确认负责人、未解决负责人、任务合并等。这提醒我们,构建示例集时应刻意追求多样性,而非简单堆砌。

自动化优化:用真实案例搜索最小有效修改

文章演示了基于真实测试用例的自动化提示优化:通过爬山搜索,从候选片段中找出能提升评分的组合。在会议记录案例中,搜索仅添加了三个必要片段,就将复合得分从51.6%提升至1.000,而无需使用全部五个候选。这表明,针对具体失败模式进行测量和搜索,比凭直觉添加所有“听起来有用”的指令更高效。

Q&A

提示工程和提示优化有什么区别?

提示工程是从零开始设计一个提示,而提示优化是对已有的提示进行改进,通过增加具体性、结构和迭代来提升效果,不涉及修改模型本身。

如何让LLM输出结构化的JSON数据?

在提示中明确指定输出模式,例如要求模型按照给定的JSON schema返回结果。这样模型会生成可被代码直接解析的结构化数据,而不是纯文本。

给LLM分配角色人设真的能提升输出质量吗?

是的。分配具体角色可以激活模型训练中相关的部分,使其产出更结构化、更符合上下文的输出。例如,让模型扮演“细致的行政助理”会使其更注意会议记录中的模糊点和重新分配的任务。

少样本示例应该怎么选才能提升LLM效果?

应选择多样化、彼此差异大的示例,而不是多个相似案例。可以使用基于TF-IDF和余弦相似度的贪心算法来挑选最不相似的k个示例,确保覆盖不同模式。

思维链提示现在还值得用吗?

对于前沿模型,它们已能内部推理,显式要求逐步思考的收益不如以前。但在处理真正模糊的情况时,思维链仍然有效,可以引导模型追踪整个对话中的任务分配变化,避免被首次提及误导。

如何自动优化提示词而不是手动猜测?

可以针对真实测试用例对候选提示进行评分,并使用搜索算法(如爬山法)迭代添加有效的指令片段。评分应综合考虑召回率、所有者准确率,并对虚构项进行惩罚,从而找到最小有效修复。

🏷️

标签

➡️

继续阅读