Prompt Engineering 是设计和优化文本输入(提示)以有效与大型语言模型(LLM)进行通信的过程。本文档将解释 Prompt Engineering 的核心概念、技术和最佳实践,以帮助您创建更有效的提示,从而从 LLM 中获得一致且高质量的响应。有关高级提示技术,请参阅 高级提示技术。
本文档涵盖:
Prompt Engineering 是设计和优化文本输入(提示)的过程,以针对给定的应用程序目标和模型提供一致且高质量的响应。这包括提示的初始设计及其迭代优化以提高响应质量。
来源: 04-prompt-engineering-fundamentals/README.md68-76
要理解 Prompt Engineering 为何重要,我们需要先理解以下基本概念
LLM 不直接处理原始文本——它们将文本转换为一系列 token。不同的模型以不同的方式对文本进行分词,这会影响它们如何解释和响应提示。
来源: 04-prompt-engineering-fundamentals/README.md82-92
基础模型(基础 LLM):
指令调优 LLM:
来源: 04-prompt-engineering-fundamentals/README.md91-112
Prompt Engineering 解决了当前 LLM 中固有的几个挑战
Prompt Engineering 技术有助于最大限度地减少这些问题,并产生更可靠、更一致的结果。
来源: 04-prompt-engineering-fundamentals/README.md114-128
有效的提示可以从简单的文本输入到复杂的结构化指令。理解提示的组成部分和结构对于创建与 LLM 的有效交互至关重要。
来源: 04-prompt-engineering-fundamentals/README.md186-248
基本提示只是发送给模型的文本,没有额外的上下文。模型会根据其训练情况尝试完成或响应此文本。
示例
Oh say can you see
来源: 04-prompt-engineering-fundamentals/README.md192-197
复杂提示包含额外的上下文和结构,通常以角色定义的对话形式出现
{
"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?"}
]
}
来源: 04-prompt-engineering-fundamentals/README.md198-217
指令提示明确告诉模型该做什么。它们可以从简单到复杂
| 复杂性 | 示例提示 |
|---|---|
| 简单 | "写一篇关于内战的描述" |
| 复杂 | "写一篇关于内战的描述。提供关键日期和事件,并描述其重要性" |
| 格式化 | "用一段话描述内战。提供 3 个项目符号点,包含关键日期及其重要性。再提供 3 个项目符号点,包含关键历史人物及其贡献。将输出返回为 JSON 文件" |
来源: 04-prompt-engineering-fundamentals/README.md219-228
主要内容是您提示的主要内容。有几种有效的技巧可以用来构建此内容
这种方法提供了所需输出的示例,以帮助模型理解模式
"The Sun is Shining" => "El Sol está brillando".
"It's a Cold and Windy Day" =>
模型从示例中学习并继续该模式,提供翻译。
来源: 04-prompt-engineering-fundamentals/README.md251-266
提示词为模型提供了一个起点,以按特定方向继续
Jupiter is the fifth planet from the Sun and the largest in the Solar System.
**Summarize This**
Top 3 Facts We Learned:
模型将遵循“前 3 个事实”的提示词格式。
来源: 04-prompt-engineering-fundamentals/README.md268-279
模板是可重用的提示模式,其中包含可根据具体用例进行自定义的占位符
{
"role": "system",
"content": "You are an {{expert_type}} expert specialized in {{domain}}."
},
{
"role": "user",
"content": "Help me with {{specific_request}} related to {{topic}}."
}
来源: 04-prompt-engineering-fundamentals/README.md281-287
辅助内容提供了影响模型处理主要内容的其他上下文。这可以包括元数据、格式化说明或特定领域的专有信息,有助于定制响应。
来源: 04-prompt-engineering-fundamentals/README.md289-301
有效的 Prompt Engineering 需要正确的思维方式和成熟技术的应用。
来源: 04-prompt-engineering-fundamentals/README.md313-326
来源: 04-prompt-engineering-fundamentals/README.md318-326
| 实践 | 为什么很重要 |
|---|---|
| 评估最新模型 | 较新的模型通常具有改进的功能,但成本可能更高 |
| 分离指令和上下文 | 使用分隔符帮助模型区分提示的不同部分 |
| 具体和清晰 | 详细说明所需的上下文、结果、格式和风格 |
| 使用示例 | 展示,而不仅仅是告知——示例可以阐明您的期望 |
| 提供提示词 | 给模型一个起点,以引导它走向期望的输出格式 |
| 考虑信息顺序 | 提示中信息的顺序会影响结果 |
| 提供备用方案 | 当模型无法回答时,给模型一个备用的响应选项 |
来源: 04-prompt-engineering-fundamentals/README.md328-342
“温度”(temperature)参数控制模型响应的确定性或创造性程度
何时使用不同温度
来源: 05-advanced-prompts/translations/ja-jp/README.md430-552
OpenAI API 提供了一种在应用程序中实现 Prompt Engineering 技术的直接方法
来源: 04-prompt-engineering-fundamentals/README.md207-217
GitHub Copilot 展示了 Prompt Engineering 技术如何在实际应用中得到应用。这位人工智能结对程序员能在开发环境中将自然语言提示转换为代码补全。
GitHub Copilot 演进的关键学习点
来源: 04-prompt-engineering-fundamentals/README.md157-173
提示工程常见的挑战包括
虚构(幻觉):模型生成事实不正确的信息
结果不一致:大型语言模型的随机性可能导致输出不一
上下文窗口限制:提示上下文的空间有限
来源: 04-prompt-engineering-fundamentals/README.md138-153 11-integrating-with-function-calling/translations/ja-jp/README.md177-180
提示工程是有效使用大型语言模型的关键技能。通过理解核心概念并应用最佳实践,您可以显著提高大型语言模型响应的质量、一致性和相关性,从而更好地服务于您的应用程序。随着模型不断改进和新技术的涌现,这一领域也在持续发展。
要点
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(b88b09)