date
Apr 28, 2026
summary
提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。
status
Published
tags
AI Agent
热门文章
必看精选
slug
prompt-engineering-1
icon
category
AI
type
Post
一 提示工程介绍
提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。
掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。
- 研究人员可利用提示工程来提升大语言模型处理复杂任务场景的能力,如问答和算术推理能力。
- 开发人员可通过提示工程设计、研发强大的工程技术,实现和大语言模型或其他生态工具的高效接轨。
提示工程不仅仅是关于设计和研发提示词。
它包含了与大语言模型交互和研发的各种技能和技术。
- 提示工程在实现和大语言模型交互、对接,以及理解大语言模型能力方面都起着重要作用。
- 用户可以通过提示工程来提高大语言模型的安全性,也可以赋能大语言模型,比如借助专业领域知识和外部工具来增强大语言模型能力。
二 大模型设置基本概念
使用提示词时,您通常会通过 API 或直接与大语言模型进行交互。
你可以通过配置一些参数以获得不同的提示结果。
调整这些设置对于提高响应的可靠性非常重要,你可能需要进行一些实验才能找出适合您的用例的正确设置。
以下是使用不同LLM提供程序时会遇到的常见设置:
Temperature
- 简单来说,
temperature的参数值越小,模型就会返回越确定的一个结果。
- 如果调高该参数值,大语言模型可能会返回更随机的结果,也就是说这可能会带来更多样化或更具创造性的产出。
- (调小
temperature)实质上,你是在增加其他可能的 token 的权重。
- 在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的
temperature值,以促使模型基于事实返回更真实和简洁的结果。
- 对于诗歌生成或其他创造性任务,适度地调高
temperature参数值可能会更好。
Top_p
- 同样,使用
top_p(与temperature一起称为核采样(nucleus sampling)的技术),可以用来控制模型返回结果的确定性。
- 如果你需要准确和事实的答案,就把参数值调低。
- 如果你在寻找更多样化的响应,可以将其值调高点。
- 使用Top P意味着只有词元集合(tokens)中包含
top_p概率质量的才会被考虑用于响应,因此较低的top_p值会选择最有信心的响应。
- 这意味着较高的
top_p值将使模型考虑更多可能的词语,包括不太可能的词语,从而导致更多样化的输出。
- 一般建议是改变 Temperature 和 Top P 其中一个参数就行,不用两个都调整。
Max Length
- 您可以通过调整
max length来控制大模型生成的 token 数。
- 指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。
Stop Sequences
stop sequence是一个字符串,可以阻止模型生成 token。
- 指定
stop sequences是控制大模型响应长度和结构的另一种方法。
- 例如,您可以通过添加 “11” 作为
stop sequence来告诉模型生成不超过 10 个项的列表。
Frequency Penalty
frequency penalty是对下一个生成的 token 进行惩罚,这个惩罚和 token 在响应和提示中已出现的次数成比例。
frequency penalty越高,某个词再次出现的可能性就越小。
- 这个设置通过给 重复数量多的 Token 设置更高的惩罚来减少响应中单词的重复。
Presence Penalty
presence penalty也是对重复的 token 施加惩罚。
- 但与
frequency penalty不同的是,惩罚对于所有重复 token 都是相同的。
- 出现两次的 token 和出现 10 次的 token 会受到相同的惩罚。
- 此设置可防止模型在响应中过于频繁地生成重复的词。
- 如果您希望模型生成多样化或创造性的文本,您可以设置更高的
presence penalty。
- 如果您希望模型生成更专注的内容,您可以设置更低的
presence penalty。
- 与
temperature和top_p一样,一般建议是改变frequency penalty和presence penalty其中一个参数就行,不要同时调整两个。
三 提示词要素
提示词可以包含以下任意要素:
- 指令:想要模型执行的特定任务或指令。
- 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
- 输入数据:用户输入的内容或问题。
- 输出指示:指定输出的类型或格式。
为了更好地演示提示词要素,下面是一个简单的提示,旨在完成文本分类任务:
提示词
在上面的提示示例中,指令是“将文本分类为中性、否定或肯定”。输入数据是“我认为食物还可以”部分,使用的输出指示是“情绪:”。
请注意,此基本示例不使用上下文,但也可以作为提示的一部分提供。例如,此文本分类提示的上下文可以是作为提示的一部分提供的其他示例,以帮助模型更好地理解任务并引导预期的输出类型。
四 设计提示的通用技巧
从简单开始
在开始设计提示时,你应该记住,这实际上是一个迭代过程,需要大量的实验才能获得最佳结果。使用来自OpenAI或Cohere的简单的 playground 是一个很好的起点。
你可以从简单的提示词开始,并逐渐添加更多元素和上下文(因为你想要更好的结果)。因此,在这个过程中不断迭代你的提示词是至关重要的。阅读本指南时,你会看到许多示例,其中具体性、简洁性和简明性通常会带来更好的结果。
当你有一个涉及许多不同子任务的大任务时,可以尝试将任务分解为更简单的子任务,并随着结果的改善逐步构建。这避免了在提示设计过程中一开始就添加过多的复杂性。
指令
你可以使用命令来指示模型执行各种简单任务,例如“写入”、“分类”、“总结”、“翻译”、“排序”等,从而为各种简单任务设计有效的提示。
请记住,你还需要进行大量实验以找出最有效的方法。以不同的关键词(keywords),上下文(contexts)和数据(data)试验不同的指令(instruction),看看什么样是最适合你特定用例和任务的。通常,上下文越具体和跟任务越相关则效果越好。在接下来的指南中,我们将讨论样例和添加更多上下文的重要性。
有些人建议将指令放在提示的开头。另有人则建议是使用像“###”这样的清晰分隔符来分隔指令和上下文。
例如:
提示:
输出:
具体性
要非常具体地说明你希望模型执行的指令和任务。提示越具描述性和详细,结果越好。特别是当你对生成的结果或风格有要求时,这一点尤为重要。不存在什么特定的词元(tokens)或关键词(tokens)能确定带来更好的结果。更重要的是要有一个具有良好格式和描述性的提示词。事实上,在提示中提供示例对于获得特定格式的期望输出非常有效。
在设计提示时,还应注意提示的长度,因为提示的长度是有限制的。想一想你需要多么的具体和详细。包含太多不必要的细节不一定是好的方法。这些细节应该是相关的,并有助于完成手头的任务。这是你需要进行大量实验的事情。我们鼓励大量实验和迭代,以优化适用于你应用的提示。
例如,让我们尝试从一段文本中提取特定信息的简单提示。
提示:
输出:
输入文本来自这篇 Nature 文章。
避免不明确
给定上述关于详细描述和改进格式的建议,很容易陷入陷阱:想要在提示上过于聪明,从而可能创造出不明确的描述。通常来说,具体和直接会更好。这里的类比非常类似于有效沟通——越直接,信息传达得越有效。
例如,你可能有兴趣了解提示工程的概念。你可以尝试这样做:
从上面的提示中不清楚要使用多少句子以及什么风格。尽管你可能仍会从上述提示中得到较好的响应,但更好的提示应当是非常具体、简洁并且切中要点的。例如:
做什么还是不做什么?
设计提示时的另一个常见技巧是避免说不要做什么,而应该说要做什么。这样(说要做什么)更加的具体,并且聚焦于(有利于模型生成良好回复的)细节上。
以下是一个电影推荐聊天机器人的示例,因为我写的指令——关注于不要做什么,而失败了。
提示:
输出:
以下是更好的提示:
提示:
输出:
- 作者:zion
- 链接:https://gendlee.github.io/prompt-engineering-1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。






