,," /> " />

目 录CONTENT

文章目录

Prompt提示工程基础

Administrator
2024-05-21 / 0 评论 / 0 点赞 / 7 阅读 / 15105 字

https://microsoft.github.io/generative-ai-for-beginners/#/04-prompt-engineering-fundamentals/translations/cn/README?wt.mc_id=academic-105485-koreyst

如何撰写 LLM 的提示很重要,精心设计的提示可以比不精心设计的提示取得更好的结果。 但这些概念到底是什么,提示、提示工程以及我如何改进我发送给 LLMs 的内容? 诸如此类的问题正是本章和下一章想要解答的。

生成式人工智能能够根据用户请求创建新内容(例如文本、图像、音频、代码等)。 它使用 LLMs 来实现这一目标,例如 OpenAI 的 GPT 模型系列,这些模型通过使用自然语言和代码进行训练。

用户现在可以使用熟悉的语言(如聊天)与这些模型进行交互,而无需任何技术专业知识或培训。 这些模型是基于提示的——用户发送文本输入(提示)并获取人工智能响应(完成)。 然后,他们可以在多轮对话中迭代地“与人工智能聊天”,完善他们的提示,直到响应符合他们的预期。

“提示”现在成为生成式人工智能应用程序的主要编程界面告诉模型要做什么并影响返回响应的质量。 “提示工程”是一个快速发展的研究领域,专注于提示的“设计和优化”,以大规模提供一致且高质量的响应。

目标

  1. 解释什么是提示工程及其重要性。

  2. 描述提示的组成部分及其使用方法。

  3. 学习提示工程的最佳实践和技术。

  4. 结合 OpenAI 将学到的技术应用于实际示例。

什么是提示工程

提示工程定义为设计和优化文本输入(提示) 的过程,以便为指定的应用程序目标和模型提供一致且高质量的响应(完成) 。 我们可以将其视为一个两步过程:

1、设计指定模型和目标的初始提示

2、通过迭代的方式提炼提示语以提高响应质量

三个概念

  • Tokenization = 模型如何“看到”提示

  • Base LLMs = 基础模型如何“处理”提示

  • Instruction-Tuned LLM = 模型现在如何查看“任务”

Tokenization

LLM 将提示视为标记序列,其中不同的模型(或模型的版本)可以以不同的方式对同一提示进行标记。 由于 LLM 是根据标记(而不是原始文本)进行训练的,因此提示标记化的方式对生成的响应的质量有直接影响。

要直观地了解标记化的工作原理,请尝试使用如下所示的 OpenAI Tokenizer 等工具。 复制您的提示 - 并查看如何将其转换为标记,注意空白字符和标点符号的处理方式。 请注意,此例子显示的是较旧的 LLM (GPT-3) - 因此使用较新的模型尝试此操作可能会产生不同的结果。

Base LLMs

一旦提示被标记化,“Base LLM”的主要功能 (或基础模型)是预测该序列中的标记。 由于 LLMs 接受过大量文本数据集的训练,因此他们对标记之间的统计关系有很好的理解,并且可以自信地做出预测。 并不是说他们不理解提示或标记中单词的含义,他们只是看到了一个可以通过下一个预测“完成”的模式。 他们可以继续预测序列,直到被用户干预或某些预先设定的条件终止。

想了解基于提示补全是如何工作的吗? 使用默认设置将上述提示输入到 Azure OpenAI Studio Chat Playground。 系统配置会将提示视为信息请求 - 因此您应该看到满足此上下文的补全。

但是,如果用户想要查看满足某些标准或任务目标的特定内容怎么办? 这就是通过 LLMs 进行指令调整发挥作用的地方。

LLMs中的指令调整

LLMs 中的指令调整 从基础模型开始,并使用以下参数对其进行微调 可以包含明确指令的示例或输入/输出对(例如多轮“消息”),以及人工智能尝试遵循该指令的响应。

它使用诸如人类反馈强化学习 (RLHF) 之类的技术,可以训练模型“遵循指令”并“从反馈中学习”,从而产生更适合实际应用且与用户目标更相关的响应。

让我们尝试一下 - 重新访问上面的提示,但现在更改系统消息,提供以下指令作为上下文:

Summarize content you are provided with for a second-grade student. Keep the result to one paragraph with 3-5 bullet points.

为什么需要提示工程

  1. 模型响应是随机的。相同的提示可能会针对不同的模型或模型版本产生不同的响应。 甚至可能在不同时间使用相同模型产生不同的结果。 提示工程技术可以通过提供更好帮助我们最大限度地减少这些变化所带来的影响。

  2. 模型可以产生幻觉响应。模型是使用大型但有限数据集进行预训练的,这意味着它们缺乏有关训练范围之外的概念的知识。 因此,它们可能会产生不准确、虚构或与已知事实直接矛盾的完成结果。 提示工程技术可以帮助用户识别和减轻幻觉,例如通过向人工智能询问出处或推理过程。

  3. 模型功能会有所不同。 较新的模型或模型迭代将具有更丰富的功能,但也会带来独特的怪癖以及成本和复杂性方面的平衡。 提示工程可以帮助我们开发最佳实践和工作流程,以可扩展和无缝的方式消除差异并适应特定于模型的要求。

案例学习

按顺序阅读帖子,了解GitHub Copilot的成长过程

提示方法

基础提示

发送到模型的文本输入,没有其他上下文。 这是一个例子 - 当我们将美国国歌的前几个单词发送到 OpenAI Completion API 时,它会立即完成下一个单词的响应 几行,说明了基本的预测行为。

Prompt (Input)

Completion (Output)

Oh say can you see

It sounds like you're starting the lyrics to "The Star-Spangled Banner," the national anthem of the United States. The full lyrics are ...

复杂提示

response = openai.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

指令式的提示

指令提示,我们可以使用该文本更详细地指定任务,从而为人工智能提供更好的指导

主要内容

输入文本非为2部分:

通过多种方式使用来驱动更有效的指令:

  • 示例 - 不要用明确的指令告诉模型要做什么,而是给它提供要做什么的示例,并让它进行推断。

  • 暗示 - 遵循带有“暗示”的说明,引导完成,引导模型做出更相关的响应。

  • 模板 - 这些是带有占位符(变量)提示的可重复“配方”,可以使用特定用例的数据进行自定义。

用例方式

零样本提示、单样本提示、少样本提示

提示三部分组成:任务描述、所需输出的一些示例、新示例的开始,隐式任务描述

暗示提示

使用主要内容的另一种技术是提供暗示而不是示例

提示模板

提示模板是预定义的提示配方,可以根据需要进行存储和重用,以大规模推动更一致的用户体验。 最简单的形式是,它只是一组提示示例的集合,例如 OpenAI 中的这个例子,它提供了交互式提示组件(用户和系统消息)和 AP 驱动请求格式来支持重用。

在它更复杂的形式中,比如LangChain 的这个例子,它包含占位符,可以替换为来自各种来源的数据(用户 输入、系统上下文、外部数据源等)来动态生成提示。 这使我们能够创建一个可重用的提示库,可用于大规模地以编程方式驱动一致的用户体验。

最后,模板的真正价值在于能够为垂直应用程序领域创建和发布提示库 - 其中提示模板现在已优化以反映特定于应用程序的上下文或示例,使响应对于目标用户受众更加相关和准确Prompts For Edu repo 是这种方法的一个很好的例子,它为教育领域策划了一个提示库,重点关注课程计划等关键目标, 课程设计、学生辅导等

工程思维

  1. 领域理解很重要。 响应准确性和相关性是应用程序或用户操作的与特定领域相关的函数。 运用您的直觉和领域专业知识进一步定制技术。 例如,在系统提示中定义特定于某个领域的个性化,或在用户提示中使用特定于某领域的模板。 提供反映特定领域上下文的辅助内容,或使用特定领域的提示和示例来指导模型走向熟悉的使用模式。

  2. 模型理解很重要。 我们知道模型产生的结果本质上是随机的。 但模型实现也可能因它们使用的训练数据集(预先训练的知识)、它们提供的功能(例如,通过 API 或 SDK)以及它们优化的内容类型(例如,代码与图像与文本)。 了解您正在使用的模型的优点和局限性,并利用这些知识来确定任务的优先级或构建针对模型功能进行优化的自定义模板

  3. 迭代和验证很重要。 模型正在迅速发展,提示工程技术也在迅速发展。 作为领域专家,您可能有其他特定应用程序的背景或标准,这些背景或标准可能不适用于更广泛的社区。 使用提示工程工具和技术“快速启动”提示构建,然后使用您自己的直觉和领域专业知识迭代和验证结果。 记录您的见解并创建一个知识库(例如提示库),其他人可以将其用作新的基线,以便将来更快地迭代。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区