提示工程(Prompt Engineering),本质上是一门关于如何向大语言模型下达精准指令,从而获得理想输出的技术。它并非简单的随机提问,而是融合了“艺术”与“科学”的实践——既要理解模型的内在运作逻辑,又要善于设计提示词,引导模型在海量信息中精确锁定用户所需的答案。掌握好这门技艺,能让模型从“生手”蜕变为“行业专家”。
一、理解提示与提示工程
(一)提示的本质
我们输入给大语言模型的信息片段,就是提示。其形式极为灵活:可以是一个问题、一段描述、一条指令,甚至图文混合。例如,当你询问“汉武帝在哪一年即位?”,这句话本身就是提示。提示的质量直接决定了模型回应的水平——一个优质的提示能够唤醒模型在训练阶段积累的深层知识,给出令人眼前一亮的答案。
(二)提示工程的定义
提示工程是指设计、优化提示的系统化方法。它不仅仅是文字的堆砌,更需要深入理解模型的行为机制,权衡各种影响因素,并通过反复实验与调整,最终找到最适合特定任务的提示方案。这是一个迭代的过程——你几乎不可能一次就写出完美提示,必须不断打磨。

二、控制大语言模型输出:配置是关键
(一)输出长度
输出长度决定了模型最多能够生成的token数量(token是文本的基本单元,可为单词、标点等)。若需要详尽回答,可将长度调长,但代价是消耗更多计算资源、增加能耗、降低响应速度并提升成本。例如,生成一篇长文章时,较长的长度意味着更高的开销。反之,若仅需查询简单事实,限制长度则可节省时间和费用。
(二)温度
温度参数控制输出的随机性。低温(如0.1)会使模型趋于保守,倾向于选择概率最高的token,从而输出稳定可靠的结果——适用于公式、定义等对准确性要求极高的场景。高温(如0.9)则会引入随机性,让模型勇于探索更多可能性,输出更具创意——在小说创作、头脑风暴时尤为有效。
(三)Top-K 采样
Top-K将模型的选择范围限制在概率最高的K个候选token中。当K=5时,模型每次仅从排名前五的候选中随机挑选。这平衡了确定性与多样性:K值过小会局限输出,过大则容易偏离主题。具体任务需通过实验找到合适的K值。
(四)Top-P 采样(核采样)
Top-P不固定候选数量,而是设定一个概率阈值P。模型从概率最高的token开始累加,直到累积概率达到或超过P。例如,P=0.9时,若前三个token的累积概率为0.92,则选取这三个token。这种方法更为灵活,能动态适应概率分布,在复杂任务中表现更佳——尤其在概率分布较分散时,Top-P可有效抓住关键信息。
(五)配置示例
若想获得既连贯又具创造性的结果,可从温度0.2、Top-P 0.95、Top-K 30开始尝试。但这并非固定规则。针对知识问答应用,可能需要更低的温度;而创意写作则可适当放宽参数限制,以激发更大创造力。关键在于根据具体任务和模型表现进行动态调整。
三、提示技术
(一)零样本提示
这是最基础的方式:仅提供任务描述和输入文本,不给出任何示例,完全依赖模型自身的知识储备。例如,直接提问“太阳系有哪些行星?”——模型凭训练数据作答。其局限性在于:面对复杂或冷门任务,模型可能产生理解偏差,导致输出不理想。
(二)单样本和少样本提示
在提示中嵌入一个或几个示例,让模型模仿学习。这些示例如同“学习模板”,明确告知模型预期的回答格式。在代码生成任务中,给出代码示例及功能描述,模型能更好地生成类似代码。在翻译任务中,提供若干句子及其对应译文,模型会遵循既有的翻译模式。这种技术效果显著,因为它降低了模型理解任务的难度。
Parse a customer's pizza order into valid JSON:
EXAMPLE:
I want a small pizza with cheese, tomato sauce, and pepperoni
JSON Response:
("size": "small", "type": "normal", "ingredients": [l"cheese", "tomaato sauce","peperoni"]]
Now, I would like a large pizza, with the first half cheeseand mozzarella. And the
other tomato sauce, ham and pineapple.
JSON Response:
(三)系统提示
系统提示为模型设定整体上下文和目的——例如明确告知“你是一个翻译工具”或“你是评论分类器”。还可指定返回格式,如JSON或全大写。通过系统提示,我们将模型行为框定在特定任务框架内。比如,在构建电商客服机器人时,系统提示可以说明:“你的核心任务是解答产品疑问、处理订单问题,输出格式为清晰易懂的文本段落。”
(四)上下文提示
上下文提示提供当前对话或任务的具体细节和背景信息。这有助于模型理解问题的细微差别,输出更精准的回应。在持续对话中,若之前已讨论过某个话题,通过上下文提示将相关信息传递给模型,模型就能基于这些背景知识给出连贯的答复。例如,讨论电影时先提及导演风格,再询问某情节的深意,模型便能结合导演风格给出更深入的分析。
(五)角色提示
让模型扮演特定角色,从而影响输出的语气和风格。赋予它“医生”、“律师”、“诗人”等角色,模型会根据角色特点调整回答方式。若需诗意描述,可让它扮演诗人;若寻求法律建议,则让它担任律师。这种技术能为输出增添情感色彩和专业氛围,使回答更贴合场景。
I want you to act as a tra vel guide. I will write to you about my location and you will
suggest 3 places to visit near me. In some cases, I will alsogive you the type of places
I will visit.
My suggestion: "I am in Amsterdam and I want to visit only Imuseums.
Tra vel Suggestions:
(六)回退提示
回退提示鼓励模型进行更深度的批判性思考。具体做法是:先让模型思考一个与手头任务相关的普遍性问题,然后将该普遍性问题的答案作为后续特定任务的输入。这种“退一步”的方法能激活模型的背景知识,从而产出更具见地的回答。例如,在解决复杂数学问题时,先让模型思考此类问题的一般解法,再将思路应用到具体题目上。
(七)思维链提示(Chain of Thought, CoT)
思维链提示明确要求模型生成中间推理步骤,显著提升其推理能力。推理过程透明,不仅提高了准确性,尤其适用于逻辑推理和问题求解。例如,在解逻辑谜题时,模型可逐步展示:“首先根据条件A推出X;再结合条件B推出Y……”,最终得出答案。这让用户能够看到思考路径,增加信任感,同时也有助于模型自身找到更准确的解法。
When I was 3 years old, my partner was 3 times my age. Nlow, I am 20 years old. How
old is my partner? Let's think step by step.
(八)自一致性提示
自一致性提示通过利用多个推理路径来提高准确性。操作方法:多次发送相同的思维链提示,并设置较高温度,鼓励模型产生多样化的推理。然后从这些不同结果中选出出现频率最高的答案。这有点类似于“群体智慧”——让模型从多个角度思考,减少单一推理路径可能产生的错误。对于存在模糊性或多种可能解决方案的问题,自一致性提示能有效提升可靠性。
(九)思维树提示
思维树提示是思维链的扩展版,让模型同时探索多个推理路径——如同树的分支。与思维链的单一线程不同,思维树能更全面地考虑各种可能性,在需要探索多种选择才能得出解决方案的复杂任务中表现尤为突出。例如,在制定项目计划时,模型可同时考虑不同的任务安排和资源分配方案,逐步评估筛选,最终确定最优计划。可以通过手动设计提示来引导多路径探索,也可借助Python脚本或LangChain等库实现自动化。
(十)ReAct 提示
ReAct 提示使模型能够与外部工具和API交互,极大拓展了其能力。基本流程:模型先分析提示,制定行动计划(可能涉及使用外部工具收集信息);接着利用内部知识和外部信息进行推理,将问题分解为小步骤;然后与外部工具(如搜索引擎、API、数据库等)交互执行计划;最后观察结果,将新信息纳入推理,通过反馈循环不断调整,直至找到解决方案。例如,查询某个城市的实时天气时,ReAct 提示可让模型调用天气预报API获取最新数据。这种技术突破了纯文本输入的限制,使模型能够处理更实际、更复杂的问题。
四、自动提示工程
(一)核心思想
自动提示工程(APE)的核心在于利用大语言模型自身生成多种提示候选,然后根据选定的评估指标进行评估,选出表现最佳的提示。该过程可以迭代重复,以进一步优化。自动化提示生成与评估能够节省人工设计时间,同时提升提示的质量和适应性。
(二)实现步骤
提示生成:向大语言模型提供一个初始提示,指示它生成具有相同语义但表述不同的多个变体。例如,为旅游网站训练聊天机器人时,初始提示可要求模型生成游客询问景点门票价格的不同表达方式。
提示评估:采用合适的评估指标(如BLEU、ROUGE等)对每个候选提示进行打分,从流畅性、连贯性、语义相似度等维度进行评估。
提示选择:选取评估得分最高的候选作为最终使用的提示。如有必要,还可进一步微调并再次评估,以确保达到最佳效果。
(三)示例
以在线书店聊天机器人为例,初始提示:“我们有一个在线书店,为了训练聊天机器人,我们需要各种顾客询问某本畅销书价格的方式。生成10个变体,保持语义相同。”大语言模型会生成一系列不同表述,比如“某本畅销书多少钱?”“我想知道某本畅销书的售价是多少?”等。随后,采用评估指标筛选出最适合训练聊天机器人的提示。
五、有效提示工程的最佳实践
(一)提供示例
只要条件允许,尽量使用单样本或少样本学习,向模型展示期望的输出结构或模式。示例是模型最高效的学习工具,能直观传达需求,帮助模型快速理解任务并生成符合要求的回答。
(二)设计简洁
保持提示简洁、清晰、易懂。避免使用复杂语言和冗余信息,以免混淆模型。应使用明确描述期望动作的动词,例如“总结”、“解释”、“生成”。简洁的提示能降低模型的理解难度,提高准确性和效率。
(三)明确输出要求
切勿给出模糊指令。清晰说明期望的回答格式、风格、长度和内容。明确的输出要求能让模型更精准地把握你的期望。例如,若需要简短摘要,可指定“生成不超过100字的摘要”;若需要正式商务风格,也应在提示中提前说明。
(四)优先指令而非限制
重点告诉模型要做什么,而不是不要做什么。仅在安全、清晰或特定要求下才使用限制条件。正面指令能引导模型朝正确方向生成,过多的限制反而会束缚模型的创造力和灵活性。例如,让模型写文章时,说“围绕XX主题创作一篇逻辑性和趣味性兼具的文章”,比“别写得太枯燥,别偏离主题”更有效。
(五)控制最大令牌长度
可以在配置或提示中设置长度限制,以管理输出和成本。合理控制既能满足需求,又能避免资源浪费。查询简单事实时设置短长度以确保回答简洁;生成较长文本时则根据实际需要适当调整。
(六)使用变量
在提示中引入变量可以提高可重用性和灵活性。通过改变变量值,同一提示可适应不同输入。这在构建与大语言模型交互的应用中特别有用,例如旅游推荐系统的提示包含“目的地”变量,可根据用户输入生成相应建议。
(七)实验与迭代
提示工程的成功关键在于不断实验。尝试不同的输入格式、写作风格、模型配置,甚至与其他提示工程师合作比较不同方法,以找到最适合特定任务的方式。大语言模型复杂多样,没有通用的最佳方法,只能通过不断试错来优化。例如,在优化问答系统提示时,可尝试不同问题表述、增减示例、调整温度,观察回答变化,逐步找到最佳组合。
(八)适应模型更新
大语言模型在不断进化,新版本可能带来架构、训练数据或能力的改进。应及时了解这些更新,重新审视并优化提示,充分利用新特性。例如,若模型对某种语言结构的理解能力提升了,就调整提示以更好利用这一点,从而提高回答质量。
(九)探索输出格式
对于涉及数据提取、组织或分析的任务,可考虑请求结构化输出格式,例如JSON。结构化输出便于后续处理,减少手动格式化的工作量,提高数据处理效率。例如,从新闻中提取关键信息时,可要求模型以JSON格式输出标题、主要内容、涉及人物等,方便存储和分析。
(十)记录实验过程
详细记录每次提示尝试、模型配置、输出结果以及观察到的现象。这有助于跟踪进度、发现模式,并不断完善提示策略。通过记录和分析,可以总结经验教训,避免重复犯错,同时更好地理解模型行为,为进一步优化提供依据。
