最权威的提示语工程Prompt合集【一】 - 知乎

自去年7月开始,我们已经做过了超10场与Prompt提示工程相关的公益沙龙。内容迭代多次,此次应邀学员们需求,做一个完整汇总。

本次课程文章共有7篇,参考资料均来自于github上优质项目中的提示话术,课程会不断完善

  1. [提示工程:揭秘与初探]
  2. [提示工程:基础技巧与实践]
  3. [提示工程:高级策略与应用]
  4. [提示工程:实战应用与案例分析]
  5. [提示工程:对抗性策略与防御]
  6. [提示工程:可靠性保障与优化]
  7. [提示工程:前沿探索与未来展望]

提示工程(Prompt Engineering)是一个相对较新的领域,专注于开发和优化提示,以便有效地使用语言模型(LMs)来处理各种应用和研究主题。提示工程技能有助于更好地理解大型语言模型(LLMs)的能力和局限性。研究人员使用提示工程来提高LLMs在广泛常见和复杂任务(如问答和算术推理)上的能力。开发者使用提示工程来设计与LLMs和其他工具接口的稳健且有效的提示技术。本指南涵盖了标准提示的基础知识,以提供如何使用提示与大型语言模型(LLMs)进行交互和指导的基本概念。去年我们主要教程案例是基于ChatGPT 3.5版本来实操,今年国内厂商的免费版本服务也已基本达到3.5版本效果,并且对中文等本土化优化体验更佳,所以我们也会同步在国内模型上做实操。国内模型我们使用比较多的有:通义千问kimideepseektigerbot讯飞星火等。

第一课:揭秘与初探

基本提示

大语言模型最厉害的地方在于实现了通用自然语言处理的丝滑性,我们可以使用提示实现很多功能,但结果的质量取决于您提供给它的信息量。提示可以包含信息,如您传递给模型的指令问题,并包括其他详细信息,如输入示例。以下是一个基本提示的简单示例:_提示_

The sky is

输出:

blue

The sky is blue on a clearday. On a cloudy day, thesky may be gray or white.

正如您所见,语言模型输出了与上下文“The sky is”相符的字符串的延续。输出可能与我们所期望的任务相去甚远。这个基本示例也强调了提供更多上下文或指令的必要性,以明确我们具体想要实现的目标。让我们尝试改进一下:_提示:_

Complete the sentence: 

The sky is

输出:

 so  beautiful today.

这样更好吗?我们告诉模型完成句子,所以结果看起来好多了,因为它完全按照我们告诉它做的去做(“完成句子”)。这种设计最佳提示以指导模型执行任务的方法就是所谓的提示工程。上面的例子只是今天大型语言模型(LLMs)可能实现的基本示例。今天的LLMs可以执行各种高级任务,从文本摘要到数学推理到代码生成。

    • *

关于LLM设置的说明

在处理提示时,您将通过API或直接与LLM进行交互。您可以配置几个参数来为您的提示获得不同的结果。温度(Temperature)- 简而言之,温度越低,结果越确定,因为总是选择概率最高的下一个令牌。增加温度可能会导致更多的随机性,鼓励更多样化或创造性的输出。我们实际上是在增加其他可能令牌的权重。就应用而言,对于事实性的QA,我们可能希望使用较低的温度来鼓励更事实性和简洁的响应。对于诗歌生成或其他创意任务,提高温度可能是有益的。Top_p- 同样,使用温度采样技术称为核采样(nucleus sampling),您可以控制模型在生成响应时的确定性。如果您正在寻找确切和事实性的答案,请保持较低的值。如果您正在寻找更多样化的响应,请增加到更高的值。一般建议是更改一个,而不是两个。在开始一些基本示例之前,请记住,使用LLM的版本不同,结果可能会有所不同。

    • *

标准提示

我们尝试了一个非常简单的提示。标准提示的格式如下:

<Question>?

这可以格式化为QA格式,这在很多QA数据集中很常见,如下所示:

Q: <Question>?
A:

根据上述标准格式,一种流行的有效提示技术称为少样本提示(few-shot prompting),其中我们提供示例。少样本提示可以格式化为如下:

<Question>?
<Answer>

<Question>?
<Answer>

<Question>?
<Answer>

<Question>?

您可以猜到,其QA格式版本如下所示:

Q: <Question>?
A: <Answer>

Q: <Question>?
A: <Answer>

Q: <Question>?
A: <Answer>

Q: <Question>?
A:

请记住,不一定非要使用QA格式。格式的选择取决于任务本身。例如,您可以执行一个简单的分类任务,并提供示例来演示任务,如下所示:_提示:_

This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! //Positive
What a horrible show! //

输出:

Negative

少样本提示允许模型在仅提供几个示例的情况下进行学习,即上下文学习。我们将在后续的指南中看到更多这方面的内容。

    • *

提示的组成部分

随着我们介绍更多可能的提示工程示例和应用,您会发现构成提示的某些元素。提示可以包含以下任何组件:Instruction指令- 您希望模型执行的特定任务或指令Context上下文- 可以涉及外部信息或其他上下文,这些信息可以引导模型给出更好的响应Input Data输入数据- 是我们感兴趣的输入或问题,我们希望找到响应Output Indicator输出指示器- 指示输出类型或格式并非所有组件都是提示所必需的,格式取决于任务本身。我们将在后续的指南中介绍更多具体的例子。

    • *

设计提示语的一些通用技巧

从简单的提示开始

在设计提示时,请记住,这是一个需要大量实验才能获得最佳结果的迭代过程。使用OpenAI的或Cohere的简单游乐场是一个很好的起点。您可以从简单的提示开始,并随着您追求更好的结果而添加更多元素和上下文。在此过程中对提示进行版本控制至关重要。正如您在阅读本指南时所见,通常,具体性、简洁性和简洁性会为您带来更好的结果。当您有一个涉及许多不同子任务的大任务时,您可以尝试将任务分解为更简单的子任务,并随着您获得更好的结果而逐步构建。这样可以避免在提示设计过程中一开始就增加太多复杂性。

指令

您可以使用命令来指示模型您想要实现的目标,从而为各种简单任务设计有效的提示,例如“Write”、“Classify”、“Summarize”、“Translate”、“Order”

等。

请记住,您还需要进行大量实验以查看什么效果最好。尝试使用不同的指令、不同的关键词、上下文和数据,看看什么最适合您的特定用例和任务。通常,上下文与您尝试执行的任务越相关,效果就越好。我们将在后续的指南中讨论采样和添加更多上下文的重要性。其他人建议将指令放在提示的开头。还建议使用一些明显的分隔符(如“###”)来分隔指令和上下文。例如:_提示:_

### 指令 ###
将下面的文本翻译成西班牙语:

文本:“hello!”

输出:

Hola!

具体性

关于您希望模型执行的指令和任务,请务必非常具体。提示越详细、描述性越强,结果就越好。当您寻求特定的输出结果或生成风格时,这一点尤为重要。没有特定的令牌或关键词可以带来更好的结果。更重要的是要有良好的格式和描述性提示。在提示中提供示例对于获得特定格式的期望输出非常有效。在设计提示时,您还应考虑提示的长度,因为在这方面存在限制。考虑您应该有多具体和详细是您需要考虑的问题。不必要的细节过多并不一定是一个好方法。细节应该是相关的,并有助于当前的任务。您需要进行大量实验。我们鼓励您进行大量实验和迭代,以优化提示以满足您的应用需求。例如,让我们尝试一个简单的提示,从一段文本中提取特定信息。_Prompt:_

Extract the name of places inthe following text. 

Desired format:
Place: <comma_separated_list_of_places>

Input: "Although thesedevelopments are encouragingto researchers, much is stilla mystery. “We often have ablack box between the brainand the effect we see in theperiphery,” says HenriqueVeiga-Fernandes, aneuroimmunologist at theChampalimaud Centre for theUnknown in Lisbon. “If we wantto use it in the therapeuticcontext, we need to understandthe mechanism."

Output:

Place: Champalimaud Centrefor the Unknown, Lisbon

避免模糊性

考虑到上述关于详细性和改善格式的提示,很容易陷入想要在提示上过于聪明的陷阱,并可能创建不精确的描述。通常最好具体和直接。这里的类比与有效沟通非常相似——越直接,信息传达得越有效。例如,您可能对了解提示工程的概念感兴趣。您可能会尝试以下方法:

解释提示工程的概念。请简短解释,只用几句话,不要过于详细。

从上面的提示不清楚应该使用多少句子以及应该采用什么风格。您仍然可能使用上述提示得到相当好的响应,但更好的提示应该是非常具体、简洁和切中要点的。例如:

用2-3句话向高中生解释提示工程的概念.

应该做还是不应该做?

在设计提示时,另一个常见提示是避免说不要做什么,而是说应该做什么。这鼓励了更多的具体性和专注于导致模型产生良好响应的细节。以下是一个电影推荐聊天机器人失败的例子,因为我写的指令——专注于不应该做什么。_提示:_

以下是一个向客户推荐电影的代理。不要询问兴趣。不要询问个人信息。

客户:请根据我的兴趣推荐一部电影。
代理:

输出:

当然,我可以根据您的兴趣推荐一部电影。您想看哪种类型的电影?您喜欢动作片、喜剧片、爱情片还是其他类型的?

以下是更好的提示:_提示:_

以下是一个向客户推荐电影的代理。代理负责从全球最受欢迎的电影中推荐一部电影。它应该避免询问用户的偏好,避免询问个人信息。如果代理没有电影推荐,它应该回答“对不起,今天找不到电影推荐。”。

客户:请根据我的兴趣推荐一部电影。
代理:

输出:

对不起,我没有您的兴趣信息。不过,以下是目前全球最受欢迎的电影列表:[电影列表]。希望您能找到喜欢的电影!

下面是一段更好的提示语:_Prompt:_

以下是一个向客户推荐电影的代理。该代理负责从全球最受欢迎的电影中推荐一部电影。它应该避免询问用户的偏好,并避免询问个人信息。如果代理没有电影推荐,它应该回答“对不起,今天找不到电影推荐。”
customer:请根据我的兴趣推荐一部电影。
agent:

Output:

对不起,我没有关于您兴趣的信息。不过,以下是目前全球最受欢迎的电影列表:[电影列表]。希望您能找到喜欢的电影!


原网址: 访问
创建于: 2025-10-26 10:39:44
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论