2025通用AI Prompt指南

Updated on

前言

我从未妄想构思出一个适用面大而全的prompt框架,只希望对针对特定境况下的有一个能够供我作为全局参考的模板——但结果如你所见:是的,我放弃了。

提示输出会因模型、采样设置甚至同一模型的不同版本而异。即便是对同一模型用同一提示,输出语句的格式和措辞也可能存在微妙差异。找到合适的指令需要反复试验。正是在反复实验的过程中,我悟了:模型的最终归宿就是能够灵活应对用户各式各样的输入,让用户想方设法优化产品使用体验本身就倒反天罡,且是在时代、技术局限下勒出的不潮不土操作,终将被历史抛弃,成为站在巨人肩膀上那些后生的一例时代笑话。但此番折腾并非毫无价值。Almighty LLM的出现虽然只是时间问题,但它不会穿越时间去应对当前的需求。针对当前境况,我参考各路教程与实践,沉淀出了Prompt通用思路:

在了解模型基本原理、术语、通用提示原则的技术上,看情况在零样本与少量样本prompt先后反复横跳,并将一路遇到的优秀回答融进特定方向的模板

概念

如果想最大程度上优化既有模型的输出质量,且能够接触Cherry Studio这种可自定义程度相对高的AI客户端,至少需要了解如下基础概念。

采样控制

大型语言模型(LLM)并不是直接预测每个单独的词。相反,它们会计算每个可能词在给定上下文中的出现概率,然后根据这些概率进行采样,以决定下一个要生成的词。常用的调节参数包括温度(Temperature)、Top-K 和 Top-P,它们会影响模型在选择下一个词时如何利用预测的概率,从而影响输出的内容和多样性。

Temperature

调节语言模型生成词的随机程度,温度越高,输出越多样和随机,越低则越保守和确定。

  • Temperature为0时,模型只预测可能性最高的词(不用考虑其他词),从而与 top-K 和 top-P 设置无关。

  • Temperature值极高时(比如10以上),模型会随机从所有可能的词中选择下一个词(完全随机),此时 top-K 和 top-P 也变得没用。

Top-K

采样从模型的预测分布中选择前 K 个最可能的 token。top-K 越高,模型的输出就越有创造性和多样性;top-K 越低,模型的输出就越受限制和基于事实。Top-K 为 1 相当于贪婪解码。

  • 如果把 top-K 设置为1(只允许最可能的词),那么temperature和 top-P 设置就没作用了,模型只选择这个词。

  • 如果把 top-K 设置得很大(比如词表大小),所有可能的词都可以被考虑,top-K 不会限制任何词。

Top-P

采样选择累积概率不超过某个值 (P) 的 top token。P 的值范围从 0(贪婪解码)到 1(LLM 词汇表中的所有 token)。

  • 如果把 top-P 设置为0(只考虑最可能的词),模型就只考虑最可能的一个词,temperature和 top-K 都没用。

  • 如果把 top-P 设置为1,模型会考虑所有非零概率的词,没有限制。

输出长度

减少 LLM 的输出长度不会导致 LLM 在其创建的输出中在文体或文本上更加简洁,而只会导致 LLM 在达到限制后停止预测更多 token。 如果你需要较短的输出长度,可能还需要调整提示以适应。

对于某些 LLM 提示技术(如 ReAct)来说,限制输出长度尤为重要,因为 LLM 会在你想要的响应之后继续发出无用的 token。

指令层级

我感觉实际上没什么严肃指令层级之分。与其说是层级,不如说是先后。管理员预先设定的一个总体指令就相当于每个对话的上文,所有对话都受这个上文影响,此为系统指令。而后用户往往在不知道系统指令的情况下给出自己的指令,得出的结果有时跟理想有偏差。这可能就是受系统指令的影响——管理员当然会仔细斟酌系统指令的编写,但显然没有东西能使所有人满意。

系统指令:管理员为模型定义模型的基本能力和总体目标。

用户指令:用户针对具体任务给出的指令。

实践

保持指令简洁明晰

指令尽可能保持简单明了,善用文字排版(Markdown、XML 标签、章节标题)以确保结构清晰,让模型知道不同部分的信息和用途。

明确目标与约束条件

明确、直接表达你的具体需求,而非使用“不要……避免……”等约束条件;注意避免X-Y问题。一开始就明确指出你的最终目的,避免和为实现最终目的的次要条件混淆。

先尝试零样本提示(zero-shot),再考虑少样本提示(few-shot)

有时模型在零样本提示下的输出会比你提供的样本更为优质。不过有时间考虑各种零样本提示激发模型潜能,不如等更新型的模型发布。如果你选择少样本提示,需要注意确保示例与指令相符,否则模型会分不清。你也不想成为天天被员工偷偷骂不说人话的老板吧?

避免“逐步思考”的提示

推理模型会在内部自主推理,不必显式告诉它们“请一步步解释你的推理过程”,不然有时还会降低它们的表现。

根据不同模型训练方式设定输出类型

例如通过提示 JSON 格式,可以强制模型创建结构并限制幻觉。

指令策略

实际上这部分没什么意思,我写这个就是想总结一下常见思路。

角色指令

冠定模型输出时自我认定的角色,往往会设定输出格式与风格。

上下文指令

提供即时的、针对特定任务的信息以指导响应,高度特定于当前任务或输入。

渐进提示(Progressive Prompting)

在原始提示基础上,逐步加入更多的背景信息或上下文,帮助模型更好地理解任务,生成更符合预期的内容。

  • 先给出简洁的任务要求:只告诉模型“写一个第一人称射击游戏关卡的剧情”;
  • 然后逐步加入背景信息或限制条件:比如提供一份关卡主题列表,或加上上下文描述;
  • 最终在包含丰富上下文的情况下,让模型输出更具体、更符合期待的内容。

通病

重复循环错误

模型陷入循环,重复生成相同的(填充)词、短语或句子结构,往往因为温度和采样参数的设置问题。

  • 低温(Low temperature)下,模型太过确定,总是重复选择最高概率的词,可能循环回之前的内容。

  • 高温(High temperature)下,模型太随机,随机生成的词又容易让它回到之前的状态,导致不断重复,模型卡住,输出单调又没用。

参考

如下两个都是中文机翻版。

Use Case

了解工作流

在学习XXX时,我理解XXX,但依然难以建立具体的工作流映射。请你通过具体例子让我明白在实际工作流中XXX是如何工作的。