提示工程是指为生成式人工智能系统,尤其是大语言模型,设计、测试和改进输入,以获得符合指定要求的输出。提示可以包含指令、问题、示例、参考资料和对话历史。这项实践并非仅仅选择更有说服力的措辞,而是涉及定义任务、组织信息、明确输出约束以及评估结果。其效果取决于模型、任务和具体应用环境。(developers.openai.com)
技术基础
语言模型以输入为条件生成文本。提示工程改变的是这一条件,通常并不改变模型已学习的参数。这使其区别于微调,后者使用针对特定任务的数据来更新参数。因此,提示可以让预训练模型适应不同任务,而不必为每种应用单独进行训练,不过,通过提示实现的适应并不保证模型表现可靠。(arxiv.org)
在基于文本的系统中,分词与词元化将输入转换为模型处理的单元。上下文窗口限制了单次生成请求中可供模型使用的材料总量。指令、示例、参考文档和对话历史共同占用这一容量。窗口更大,并不一定意味着模型能同样有效地利用其中的每个细节:研究发现,在较长的输入中,相关信息出现的位置会影响模型表现。(developers.openai.com)
聊天界面可以按角色区分消息,将应用层指令与用户请求及其他内容分开。提示设计可以利用这些区别,但角色的含义和指令的优先级取决于具体实现。标题或带标签的分节等结构化边界,有助于标明哪些文本属于指令、示例或源材料。(developers.openai.com)
发展与研究背景
2020 年的论文《语言模型是少样本学习者》(Language Models are Few-Shot Learners)是一个重要里程碑。该论文展示了 GPT-3 能够根据输入中提供的指令和示例,完成多种自然语言处理任务,而无须针对特定任务进行梯度更新。实验涵盖机器翻译、问答和其他语言任务。这推动了上下文学习成为使用预训练模型的一种重要方法。(arxiv.org)
此后,研究开始探索更复杂的提示策略。2022 年的一项研究提出了思维链提示,其示例不仅给出最终答案,还包含中间推理步骤。研究报告称,对于规模足够大的模型,这种方法能够提升其在算术、常识和符号推理基准测试中的表现。这些发现针对的是特定实验条件,并不意味着解释越长,结果就一定越好。(arxiv.org)
一种相关但不同的方法是提示调优。这种方法并非人工编写普通文本,而是在保持基础模型参数不变的情况下,学习连续的提示表示。它属于参数高效微调,涉及训练过程中的优化,与普通文本提示的修改不同。(arxiv.org)
提示结构与技巧
面向任务的提示通常会明确预期操作、相关背景、约束条件和期望的回复格式。指令可以指定受众、所需的详细程度、分类标签,或处理缺失信息的规则。明确的要求可以减少歧义,分隔符则用于将指令与待分析的材料区分开。指定角色可以确立某种视角或风格,但并不能赋予模型专业能力,也不能独立验证输出。(docs.anthropic.com)
零样本提示只给出任务,不提供示例。少样本提示则包含输入示例及其期望输出,让模型能够推断标签含义、格式或转换规则等模式。这些示例在当前上下文中引导模型行为,而不会成为模型训练数据的永久组成部分。(arxiv.org)
对于多步骤任务,提示可以将证据提取、分析和最终呈现分开。提示链将这些操作分配到多次调用中,把一个阶段的输出传递给另一个阶段。此类工作流程使中间结果可以接受检查,但设计时必须考虑错误从一个阶段传递到下一个阶段的问题。明确推理指令的作用因模型而异;面向推理型系统的提示指导,可能不同于面向其他模型的指导。(docs.anthropic.com)
外部信息与应用集成
检索增强生成将生成过程与从外部资料集合中检索到的信息相结合。检索出的段落成为模型可用的证据,为需要用户当前请求之外知识的任务提供支持。提示工程决定如何呈现这些证据,以及如何指示模型使用它们;检索本身则是一个独立组件。(arxiv.org)
在使用知识库或工具的应用中,提示设计还会规定工作流程的条件:需要哪些信息、何时适合执行外部操作,以及如何将操作结果纳入回复。因此,提示只是系统设计的一部分,不能代替高质量的检索、工具实现或输出检查。(docs.anthropic.com)
评估与可复现性
提示质量依据特定任务的标准进行评估,例如答案是否正确、是否符合格式要求、是否完整,或是否成功执行。评估既要包含有代表性的示例,也要包含困难和意外情形。人工判断与自动化检查各有用途,而由模型进行的评分本身也需要接受可靠性审查。(developers.openai.com)
反复根据同一批示例修改提示,可能导致对评估集的过拟合。将开发示例与留出的测试集分开,可以更有力地检验泛化(机器学习)能力。由于输出可能变化,模型更新也可能改变其行为,要进行可复现的比较,就需要记录提示版本、模型版本以及相关的生成设置。当这些组成部分发生变化时,应重新开展评估。(developers.openai.com)
局限性与安全
提示无法消除人工智能幻觉,提供参考资料也不能保证模型会正确使用这些资料。长上下文实验表明,证据的放置位置可能影响模型表现。因此,流畅的回复仍不等同于经过核实的答案。(arxiv.org)
提示注入是一种网络安全问题:嵌入待处理内容中的恶意指令试图改变系统的行为方向。外部网页、文档和工具返回结果都可能携带此类指令。提示边界虽有帮助,但防御还涉及模型训练、内容检测、应用层安全措施和测试;仅靠提示措辞无法使智能体免受攻击。(anthropic.com)