AI提示工程(Prompt Engineering)

什么是提示工程

提示工程是一门经验科学,涉及迭代和测试提示以优化性能。提示工程周期中大部分的努力实际上并不在于编写提示。相反,提示工程时间的大部分花在开发一套强大的评估上,然后根据这些评估进行测试和迭代。请记住,提示工程是一个迭代过程。如果您最初的示例没有产生完美的结果,请不要气馁——通过一些调整和实验,您将能够释放 AI 的全部潜力,并为您的应用程序实现卓越的结果。

提示开发生命周期

建议采用原则性的、测试驱动的开发方法来确保最佳的提示性能。

定义任务和成功标准

第一步也是最关键的一步是清楚地定义你希望 AI 执行的具体任务。这可以是任何事情,从实体提取、问答或文本摘要到更复杂的任务,如代码生成或创意写作。一旦你有了明确定义的任务,就要建立指导评估和优化过程的成功标准。需要考虑的关键成功标准包括:

  • 性能和准确性:模型在任务上需要达到多好的性能?
  • 延迟:模型可接受的响应时间是多少?这将取决于你的应用程序的实时要求和用户期望。
  • 价格:你运行模型的预算是多少?考虑每次 API 调用的成本、模型的大小和使用频率等因素。 从一开始就有明确、可衡量的成功标准,将有助于你在整个采用过程中做出明智的决策,并确保你为正确的目标进行优化。

开发测试用例

在定义了任务和成功标准后,下一步是创建一组多样化的测试用例,涵盖应用程序的预期用例。这些应包括典型示例和边缘情况,以确保你的提示是稳健的。提前准备好定义明确的测试用例,将使你能够客观地衡量提示相对于成功标准的性能。

设计初步提示

接下来,制作一个初始提示,概述任务定义、良好响应的特征以及 AI 所需的任何必要上下文。理想情况下,你应该添加一些规范输入和输出的示例,供 AI 遵循。这个初步提示将作为改进的起点。

根据测试用例测试提示

使用初步提示将测试用例输入 AI。仔细评估模型的响应是否符合预期输出和成功标准。使用一致的评分标准,无论是人工评估、与答案对比,还是基于评分标准的 AI 的另一个实例的判断。关键是要有一个系统的方法来评估性能。

改进提示

根据第 4 步的结果,迭代改进提示,以提高测试用例的性能,更好地满足成功标准。这可能涉及添加澄清、示例或约束来指导 AI 的行为。要谨慎,不要过度优化狭窄的输入集,因为这可能导致过拟合和泛化能力差。

发布完善的提示

一旦你得到一个在测试用例中表现良好并满足成功标准的提示,就可以在应用程序中部署它了。监控模型在实际环境中的性能,并准备根据需要进行进一步的改进。可能会出现最初测试集中没有预料到的边缘情况。
在整个过程中,值得从最有能力的模型和不受约束的提示长度开始,以建立性能上限。一旦达到所需的输出质量,就可以尝试优化,如缩短提示或使用更小的模型,以根据需要减少延迟和成本。
通过遵循这种测试驱动的方法,并在前期仔细定义任务和成功标准,你将很好地利用 AI 的力量来满足你的特定用例。如果你投入时间设计稳健的测试用例和提示,你将在模型性能和可维护性方面获得回报。

提示工程技术

在整个提示开发周期中,有一些技术可以用来提高 AI 的性能,例如:

  • 清晰直接:提供清晰的指示和上下文来指导 AI 的响应
  • 使用示例:在提示中包含示例,以说明所需的输出格式或风格
  • 给 AI 一个角色:让 AI 扮演特定角色(如专家),以提高你的用例的性能
  • 使用 XML 标签:结合 XML 标签来构建提示和响应,以获得更大的清晰度
  • 链式提示:将复杂的任务分解为更小、更易管理的步骤,以获得更好的结果
  • 让 AI 思考:鼓励逐步思考,以提高 AI 输出的质量
  • 预填 AI 的响应:用几个词开始 AI 的响应,以引导其输出朝所需方向发展
  • 控制输出格式:指定所需的输出格式,以确保一致性和可读性
  • 要求 AI 重写:根据评分标准请求修改,让 AI 迭代并改进其输出
  • 长上下文窗口提示:优化利用 AI 更长上下文窗口的提示

故障排除

LLMs 的常见问题和缓解策略

幻觉

  • 幻觉:LLMs 有时可能会生成事实上不正确、不一致或与给定上下文无关的文本。这被称为幻觉,可能发生在模型试图填补其知识空白或输入不明确时。
  • 最小化幻觉:允许 AI 说”我不知道”、要求 AI 提供直接引用。

越狱和提示注入

  • 越狱和提示注入:用户可能会尝试通过精心设计利用模型训练漏洞的特定提示来绕过模型的保护措施和道德准则。这可能导致模型生成不适当或有害的内容。
  • 缓解越狱和提示注入:无害性筛选、输入验证、提示工程、持续监控。

提示泄露

  • 提示泄露:用户可能会尝试让模型在其生成的输出中透露输入提示的部分内容。在处理敏感信息或提示包含不应披露的详细信息时,这可能是一个问题。
  • 减少提示泄露:将上下文与查询分开、对模型的输出应用后处理、提示模型专注于手头的任务、监控和审查模型的输出。

不符合角色的响应

  • 不符合角色的响应:在使用 LLMs 进行角色扮演场景或模拟特定人物时,模型有时可能会偏离预期的角色特征,导致不一致或不现实的响应,尤其是在长对话中。
  • 保持 AI 的角色:使用系统提示、预填 AI 的回应、提供清晰的角色描述、提供在各种场景中如何行动的指导、使用情境设置提示。

非确定性输出

  • 非确定性输出:由于 LLMs 的概率性质,即使给定相同的输入,生成的输出也可能有所不同。在需要一致和可重复结果的场景中,这可能会有问题。
  • 减少随机性:虽然 LLMs 不能完全确定,但您可以将 temperature 设置为 0.0 以尽可能减少随机性。

需要掌握的技能

  • 了解 AI、ML 和 NLP:理解并掌握人工智能(artificial intelligence)、机器学习(machine learning)和自然语言处理(natural language processing)运作方式。
  • 明确定义问题陈述并指定详细查询:从根本上说,这种技能是一种清晰沟通的能力。提示工程是关于如何告诉 AI 你需要什么,要做到这一点,你需要弄清楚你想从互动中得到什么。一个清晰的提示并不一定意味着它是简短的。有时候,较长的提示可以得到更准确、更相关的答案。原则:创建清晰提示,并确保你能够在不假定 AI 已经理解问题的情况下进行沟通。
  • 要有创意,提高对话技巧:提示工程更像是一种协作对话,而不是编程练习。AI经常以一种类似于你与同事或下属的沟通方式与人进行交流。
  • 学习写作和艺术风格,并建立领域专业知识:不仅能够为你答疑解惑,而且通常还会按照你要求的方式来回答。比如:用 ChatGPT 以莎士比亚、C3PO 和哈利波特的风格重新撰写文本。除了理解写作和美术风格,掌握或能够接触到你所设置提示所在领域的专业知识也很重要。你必须对人工智能领域足够熟悉,以便能够理解它们的回答是正确的还是错误的。
  • 开发脚本和编程技能
  • 培养耐心和幽默感:所以从事提示工程师这份工作非常需要耐心,因为 AI 会误解你的意思。他们会在你即将取得突破的时候开始答非所问,甚至可能会胡说八道。如果你对此不能一笑而过,那么你注定会被它气到。耐心不仅仅是一种美德,它更是一种超级力量。

问题

何时使用角色提示

虽然角色提示并不总是必要的,但在以下情况下它可能非常有用:

  • 高度技术性任务
  • 特定的沟通风格(如:向不同受众解释概念)
  • 提高基线性能

如何知道何时使用系统提示而不是用户提示

可以将系统提示视为提供有关与 AI 整体交互的指导的空间,而 user 轮次则是交互本身的一部分,或者当您只有一次性任务要完成时。

使用系统提示的好处

  • 系统提示是一种在向 AI 提出问题或任务之前,为其提供上下文、指令和指南的方式。通过使用系统提示,您可以为对话设置舞台,指定 AI 的角色、个性、语气或任何其他相关信息,这将有助于它更好地理解和响应用户的输入。
  • 系统提示可以包括:
    • 任务说明和目标
    • 个性特征、角色和语气指南
    • 用户输入的上下文信息
    • 创意约束和风格指导
    • 外部知识、数据或参考资料
    • 规则、指南和护栏
    • 输出验证标准和要求
  • 主要好处包括:
    • 改进角色扮演和角色一致性
    • 增强对规则和指令的遵守
    • 增强上下文理解
    • 自定义输出格式

参考

posted @ 2024-06-14 11:53  Freelancy  阅读(11)  评论(0编辑  收藏  举报