API GET API GET学习资料 · WorkBuddy 教程库

AI 学习资料 · 生成式 AI 入门(精选 7 课)

提示词工程基础

Microsoft CorporationMIT出处与许可 约 24 分钟 · 5 张图

介绍

本模块介绍在生成式 AI 模型中写出有效提示词的基本概念和技术。你怎样给大语言模型(LLM)写提示词也很重要,精心设计的提示词能得到质量更好的回答。但提示词和提示词工程这些术语到底是什么意思?我又该如何改进发送给 LLM 的提示词输入?这些就是本课和下一课要尝试回答的问题。

生成式 AI 能够根据用户的请求创作新内容(例如文本、图像、音频、代码等)。它依靠的是大语言模型,比如 OpenAI 的 GPT(Generative Pre-trained Transformer,生成式预训练 Transformer)系列,这些模型经过训练,能够使用自然语言和代码。

现在,用户可以用聊天这类熟悉的方式与这些模型互动,不需要任何技术专长或培训。这些模型是基于提示词的:用户发送一段文本输入(提示词),得到 AI 的回答(补全)。之后,用户可以在多轮对话中反复“和 AI 聊天”,不断完善提示词,直到回答符合预期。

“提示词”如今成了生成式 AI 应用的主要编程接口:它告诉模型要做什么,并影响返回的回答质量。“提示词工程”是一个快速发展的研究领域,专注于提示词的设计和优化,以便大规模地稳定输出高质量的回答。

学习目标

在本课中,我们将学习什么是提示词工程、它为什么重要,以及如何针对给定的模型和应用目标,写出更有效的提示词。我们会了解提示词工程的核心概念和最佳实践,并认识一个交互式的 Jupyter Notebook“沙盒”环境,在其中看到这些概念如何应用到真实示例中。

学完本课,我们将能够:

  1. 解释什么是提示词工程,以及它为什么重要。
  2. 描述提示词由哪些部分组成,以及各部分如何使用。
  3. 学习提示词工程的最佳实践和技术。
  4. 使用 OpenAI 端点,把学到的技术应用到真实示例中。

关键术语

  • 提示词工程:设计和完善输入,引导 AI 模型产生期望输出的做法。
  • 分词(Tokenization):把文本转换成更小的单位(称为 token),以便模型理解和处理的过程。
  • 指令调优的 LLM:用特定指令微调过、以提高回答准确性和相关性的大语言模型。

学习沙盒

提示词工程目前更像一门艺术,而不是科学。提升这方面直觉的最好办法是多练习,采用试错的方法,把应用领域的专业知识、推荐的技术和针对具体模型的优化结合起来。

本课配套的 Jupyter Notebook 提供了一个沙盒环境,你可以边学边试,也可以在课程结尾的代码挑战中使用它。要运行这些练习,你需要:

  1. 一个 Azure OpenAI API 密钥:已部署的 LLM 的服务端点。
  2. 一个 Python 运行环境:用来运行 Notebook。
  3. 本地环境变量:现在就完成设置步骤(英文),做好准备。

Notebook 里附有入门练习,也鼓励你自己添加 Markdown(说明)和代码(提示词请求)部分,尝试更多示例或想法,培养提示词设计的直觉。

编者注:本库只收录课程正文,没有收录配套的 Notebook。需要动手练习的读者,可到原课程第 4 课的仓库目录中获取。

图解指南

想在深入学习之前先了解本课的全貌吗?看看这份图解指南,它展示了本课的主要主题,以及每个主题中值得你思考的要点。本课的路线是:先理解核心概念和挑战,再用相关的提示词工程技术和最佳实践来应对。请注意,图中“高级技术”部分指的是本课程下一课的内容。

提示词工程图解指南

编者注:这是一幅手绘速写笔记(右下角有作者署名 Nitya),图中中文由机器翻译生成,有些标注不通或有误,内容以正文为准。

我们的初创企业

现在来谈谈这个主题与我们初创企业的使命——把 AI 创新带入教育——有什么关系。我们想构建由 AI 驱动的个性化学习应用,所以先想想应用的不同用户可能会怎样“设计”提示词:

  • 管理人员可能会让 AI 分析课程数据,找出内容覆盖上的空白。AI 可以总结结果,或用代码把结果可视化。
  • 教师可能会让 AI 针对特定对象和主题生成教案。AI 可以按指定格式制定个性化的教案。
  • 学生可能会让 AI 辅导他们学习一门难懂的科目。AI 可以根据学生的水平,用课程讲解、提示和示例来引导他们。

这只是冰山一角。看看由教育专家整理的开源提示词库 Prompts For Education,你会对各种可能性有更全面的认识!试着在沙盒中或用 OpenAI Playground 运行其中一些提示词,看看会发生什么!

什么是提示词工程?

本课开头把提示词工程定义为:针对给定的应用目标和模型,设计和优化文本输入(提示词),以稳定地获得高质量回答(补全)的过程。可以把它看作两个步骤:

  • 针对给定的模型和目标,设计最初的提示词
  • 反复完善提示词,提高回答的质量

这必然是一个试错的过程,需要用户的直觉和投入才能得到最佳结果。那么,它为什么重要?要回答这个问题,我们首先需要理解三个概念:

  • 分词 = 模型如何“看到”提示词
  • 基础 LLM = 基础模型如何“处理”提示词
  • 指令调优的 LLM = 模型如何开始理解“任务”

分词

LLM 把提示词看作一串 token 序列,而不同的模型(或同一模型的不同版本)可能会用不同的方式对同一个提示词分词。由于 LLM 是在 token(而不是原始文本)上训练的,提示词的分词方式会直接影响生成回答的质量。

想直观地了解分词是怎么回事,可以试试下图所示的 OpenAI Tokenizer 等工具。把你的提示词复制进去,看看它如何被转换成 token,尤其留意空白字符和标点符号是怎么处理的。注意,这个示例用的是较旧的 LLM(GPT-3),用更新的模型试,结果可能不同。

分词示例

编者注:此图中文由机器翻译生成,只替换了图中的文字。图中的字符数和 token 数与中文文字对不上,应是英文原图的统计结果。

概念:基础模型

提示词被分词之后,“基础 LLM”(也就是基础模型)的主要功能,就是预测这个序列中的下一个 token。由于 LLM 是在海量文本数据集上训练的,它们很清楚 token 之间的统计关系,能以一定的把握做出预测。注意,它们并不理解提示词或 token 中词语的含义,只是看到一个可以用下一次预测来“补全”的模式。它们可以一直预测下去,直到用户干预或满足某个预设条件才停止。

想看看基于提示词的补全是怎么工作的吗?把上面那段提示词输入 Microsoft Foundry 操练场(playground),使用默认设置。系统被配置为把提示词当作信息请求,所以你应该会看到一个符合这种情境的补全。

但如果用户想得到符合某些标准或任务目标的特定内容呢?这时就轮到指令调优的 LLM 登场了。

基础 LLM 聊天补全

概念:指令调优的 LLM

指令调优的 LLM 以基础模型为起点,用示例或输入/输出对(例如多轮“消息”)对它进行微调。这些示例中包含明确的指令,以及 AI 尝试遵循指令给出的回答。

这会用到基于人类反馈的强化学习(RLHF)等技术,训练模型遵循指令并从反馈中学习,让它给出的回答更适合实际应用,也更贴合用户的目标。

我们来试试:回到上面的提示词,但这次把系统消息改成下面这条指令,作为上下文:

为二年级学生总结你收到的内容。结果控制在一段话之内,包含 3 到 5 个要点。

看到结果是怎样按照期望的目标和格式调整的了吗?教师现在可以直接把这个回答放进那堂课的幻灯片里。

指令调优 LLM 聊天补全

为什么需要提示词工程?

我们已经知道 LLM 怎样处理提示词,接下来谈谈为什么需要提示词工程。原因在于,当前的 LLM 存在一些问题,如果不在构造和优化提示词上下功夫,就很难得到可靠、一致的补全。例如:

  1. 模型的回答是随机的。 同一个提示词在不同的模型或模型版本上,很可能得到不同的回答;甚至在同一个模型上,不同时间也可能得到不同的结果。提示词工程技术可以提供更好的约束,帮助我们尽量减少这些差异。

  2. 模型可能会编造回答。 模型是在庞大但有限的数据集上预训练的,这意味着它们不了解训练范围之外的概念。因此,它们可能给出不准确、凭空想象,甚至与已知事实直接矛盾的补全。提示词工程技术可以帮助用户识别并减少这类编造,比如要求 AI 给出引用来源或推理过程。

  3. 模型的能力各不相同。 更新的模型或新一代模型能力更强,但也会带来各自的怪癖,以及成本和复杂度上的取舍。提示词工程可以帮助我们形成最佳实践和工作流程,屏蔽这些差异,并以可扩展、顺畅的方式适应各个模型的特定要求。

我们在 OpenAI 或 Azure OpenAI 的 Playground 中实际看看:

  • 把同一个提示词用在不同的 LLM 部署上(例如 OpenAI、Azure OpenAI、Hugging Face),你看到差异了吗?
  • 在同一个 LLM 部署上(例如 Azure OpenAI playground)反复使用同一个提示词,这些差异又有什么不同?

编造示例

在本课程中,我们用“编造”(fabrication)一词,指 LLM 由于训练上的局限或其他限制,有时会生成与事实不符的信息的现象。你在一些热门文章或研究论文中,可能也听过它被称为“幻觉”。不过,我们强烈建议使用“编造”这个说法,以免不经意间把机器产生的结果说成人类的特质,把这种行为拟人化。从用词角度看,这也符合负责任 AI 准则,避免使用在某些语境下可能被认为冒犯或不够包容的词语。

想了解编造是怎么发生的吗?可以想一个提示词,让 AI 为一个根本不存在的话题生成内容(确保训练数据里找不到)。比如,我试了这样一个提示词:

提示词: 生成一份关于 2076 年火星战争的教案。

网上搜索显示,确实有关于火星战争的虚构作品(例如电视剧或小说),但没有一部是关于 2076 年的。常识也告诉我们,2076 年还在未来,不可能对应一个真实发生过的事件。

那么,用不同的 LLM 服务运行这个提示词,会发生什么呢?

回答 1:OpenAI Playground(GPT-35)

图略:OpenAI Playground(GPT-35)对上述提示词的回答截图(来源:原课程配图,见原课程第 4 课)

回答 2:Azure OpenAI Playground(GPT-35)

回答 2

回答 3:Hugging Face Chat Playground(LLama-2)

图略:Hugging Face Chat Playground(LLama-2)对上述提示词的回答截图(来源:原课程配图,见原课程第 4 课)

正如预期,由于回答的随机性和模型能力的差异,每个模型(或模型版本)给出的回答都略有不同。例如,有一个模型面向的是八年级学生,另一个则假定对象是高中生。但三个模型生成的回答,都足以让不了解情况的用户相信这件事是真实的。

元提示词(metaprompting)和温度设置等提示词工程技术,也许能在一定程度上减少模型的编造。新的提示词工程架构还会把新的工具和技术无缝地融入提示词流程,以缓解或减少其中一些影响。

案例研究:GitHub Copilot

本节最后,我们通过一个案例研究,看看提示词工程在真实的解决方案中是怎样使用的:GitHub Copilot。

GitHub Copilot 是你的“AI 结对程序员”:它把文本提示词转换成代码补全,并集成在你的开发环境(例如 Visual Studio Code)中,使用体验很顺畅。正如下面这一系列博客所记录的,最早的版本基于 OpenAI Codex 模型,工程师们很快意识到,需要对模型进行微调,并开发更好的提示词工程技术,来提高代码质量。2023 年 7 月,他们推出了超越 Codex 的改进版 AI 模型,给出建议的速度更快。

按顺序阅读这些文章,跟随他们的学习历程。

以上文章均为英文。你还可以浏览他们的工程博客,阅读更多类似这一篇的文章,看看这些模型和技术是怎样应用到真实应用中的。

提示词的构成

我们已经了解了提示词工程为什么重要,现在来看看提示词是怎样构成的,这样才能评估不同的技术,设计出更有效的提示词。

基本提示词

先从基本提示词开始:发送给模型的一段文本输入,没有任何其他上下文。下面是一个例子:当我们把美国国歌的开头几个词发给 OpenAI 的 Completion API 时,它立刻用接下来的几句补全了回答,展示了最基本的预测行为。

提示词(输入) 补全(输出)
Oh say can you see 听起来你是在念美国国歌《星条旗》(The Star-Spangled Banner)的歌词开头。完整歌词是……

复杂提示词

现在,我们给这个基本提示词加上上下文和指令。Chat Completion API 让我们可以把复杂提示词构造成一组消息,其中包括:

  • 输入/输出对,分别对应用户的输入和助手的回答。
  • 系统消息,为助手的行为或个性设定情境。

现在请求的形式如下,分词会有效地捕捉上下文和对话中的相关信息。这时,修改系统上下文对补全质量的影响,可能和用户输入一样大。

Python
response = client.responses.create(
    model="gpt-5-mini",
    input=[
        {"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?"}
    ]
)

编者注:这段示例代码中,系统消息设定“你是一个乐于助人的助手”;用户先问“2020 年世界大赛(美国职业棒球)谁赢了?”,助手答“洛杉矶道奇队赢得了 2020 年世界大赛”;用户接着问“比赛在哪里举行?”。

指令提示词

在上面的例子中,用户提示词只是一个简单的文本查询,可以理解为一个信息请求。用指令提示词,我们可以用文字更详细地说明任务,给 AI 更好的指引。示例如下:

提示词(输入) 补全(输出) 指令类型
写一段关于(美国)南北战争的介绍 返回一段简单的文字 简单
写一段关于(美国)南北战争的介绍。列出关键日期和事件,并说明它们的意义 返回一段文字,后面跟着一份带说明的关键事件日期清单 复杂
用一段话介绍(美国)南北战争。用 3 个要点列出关键日期及其意义,再用 3 个要点列出关键历史人物及其贡献。以 JSON 文件的形式返回结果 在文本框中返回更详尽的内容,格式为 JSON,可以复制粘贴到文件中,并按需校验 复杂,有格式要求

主要内容

在上面的例子中,提示词仍然相当开放,由 LLM 自己决定预训练数据集中的哪些部分是相关的。采用主要内容(primary content)这种设计模式时,输入文本分为两部分:

  • 一条指令(要做的动作)
  • 相关内容(影响这个动作)

下面的例子中,指令是“用两句话总结这段内容”。

  • 提示词(输入):

    木星是从太阳往外数的第五颗行星,也是太阳系中最大的行星。它是一颗气态巨行星,质量只有太阳的千分之一,却是太阳系其他所有行星质量总和的两倍半。木星是夜空中肉眼可见的最亮天体之一,早在有文字记载的历史之前,古代文明就已经知道它。它以罗马神话中的神朱庇特命名。[19] 从地球上看,木星有时亮到它反射的光足以投下可见的影子,[20] 它平均是夜空中仅次于月亮和金星的第三亮的天然天体。

    用两句简短的话总结这段内容

  • 补全(输出):

    木星是从太阳往外数的第五颗行星,也是太阳系中最大的行星,以夜空中最亮的天体之一而著称。它以罗马神话中的神朱庇特命名,是一颗气态巨行星,质量是太阳系其他所有行星质量总和的两倍半。

主要内容这一部分可以用多种方式来让指令更有效:

  • 示例:不直接用指令告诉模型该做什么,而是给它一些示例,让它自己推断出规律。
  • 引导语(cue):在指令后面接一段引导语,为补全开个头,引导模型给出更相关的回答。
  • 模板:可重复使用的提示词“配方”,其中带有占位符(变量),可以针对具体用例填入数据进行定制。

下面来看看实际效果。

使用示例

这种做法是用主要内容给模型“喂”一些示例,展示某条指令下期望的输出是什么样,让它推断出期望输出的规律。根据提供的示例数量,可以分为零样本提示、单样本提示、少样本提示等。

这时,提示词由三部分组成:

  • 任务描述
  • 几个期望输出的示例
  • 一个新示例的开头(它成了隐含的任务描述)

下面三个例子中,前两个是把英文翻译成西班牙语。

零样本(zero-shot)

  • 提示词(输入):"The Sun is Shining"。翻译成西班牙语
  • 补全(输出):"El Sol está brillando".

单样本(one-shot)

  • 提示词(输入):

    "The Sun is Shining" => "El Sol está brillando".

    "It's a Cold and Windy Day" =>

  • 补全(输出):"Es un día frío y ventoso".

少样本(few-shot)

  • 提示词(输入):

    球员跑垒 => 棒球

    球员发球直接得分(ace) => 网球

    球员击出六分球 => 板球

    球员完成一记扣篮 =>

  • 补全(输出):篮球

注意,在零样本提示中,我们必须给出明确的指令(“翻译成西班牙语”),而在单样本的例子中,这条指令是模型自己推断出来的。少样本的例子则说明,增加示例后,模型无需额外的指令就能做出更准确的推断。

引导语

使用主要内容的另一种技术,是提供引导语而不是示例。也就是先用一小段体现期望回答格式的文字开个头,轻轻推模型往正确的方向走,模型随后会“接过话头”,按这个路子继续写下去。

0 条引导语

  • 提示词(输入):

    木星是从太阳往外数的第五颗行星,也是太阳系中最大的行星。它是一颗气态巨行星,质量只有太阳的千分之一,却是太阳系其他所有行星质量总和的两倍半。木星是夜空中肉眼可见的最亮天体之一,早在有文字记载的历史之前,古代文明就已经知道它。

    总结一下

  • 补全(输出):

    木星是太阳系中最大的行星,也是从太阳往外数的第五颗行星。它是一颗气态巨行星,质量是太阳的千分之一,却比其他所有行星加起来还要重。古代文明很早就知道木星,它在夜空中很容易看到。

1 条引导语

  • 提示词(输入):

    (同上一段关于木星的文字)

    总结一下

    我们了解到,木星

  • 补全(输出):

    是从太阳往外数的第五颗行星,也是太阳系中最大的行星。它是一颗气态巨行星,质量是太阳的千分之一,却是其他所有行星质量总和的两倍半。它用肉眼就很容易看到,自古以来就为人所知。

2 条引导语

  • 提示词(输入):

    (同上一段关于木星的文字)

    总结一下

    我们了解到的三大事实:

  • 补全(输出):

    1. 木星是从太阳往外数的第五颗行星,也是太阳系中最大的行星。
    2. 它是一颗气态巨行星,质量是太阳的千分之一……
    3. 自古以来,人们就能用肉眼看到木星……

提示词模板

提示词模板是一种预先定义好的提示词配方,可以保存下来、按需重复使用,从而大规模地提供更一致的用户体验。最简单的形式,就是一组提示词示例,比如 OpenAI 的这个示例,它既提供交互式的提示词组成部分(用户消息和系统消息),也提供通过 API 发送请求的格式,方便重复使用。

更复杂的形式,比如 LangChain 的这个示例,其中包含占位符,可以用各种来源的数据(用户输入、系统上下文、外部数据源等)替换,动态生成提示词。这样我们就能建立一个可复用的提示词库,以编程方式大规模地提供一致的用户体验。

最后,模板真正的价值在于,可以为垂直应用领域创建并发布提示词库:其中的提示词模板经过优化,体现特定应用的上下文或示例,让回答对目标用户更相关、更准确。Prompts For Edu 仓库就是这种做法的一个好例子,它为教育领域整理了一个提示词库,重点覆盖备课、课程设计、学生辅导等关键目标。

辅助内容

如果把提示词的构成看作一条指令(任务)加上一个对象(主要内容),那么辅助内容(secondary content)就是我们额外提供、用来以某种方式影响输出的上下文。它可以是调节参数、格式说明、主题分类等,帮助模型调整回答,以符合用户期望的目标或预期。

例如:假设有一份课程目录,其中包含课程体系里所有课程的丰富元数据(名称、简介、级别、元数据标签、授课教师等):

  • 我们可以用一条指令要求“总结 2023 年秋季的课程目录”
  • 用主要内容提供几个期望输出的示例
  • 用辅助内容指定最受关注的 5 个“标签”

这样,模型就能按照那几个示例的格式给出总结;而如果某门课有多个标签,它会优先考虑辅助内容中指定的那 5 个标签。

提示词的最佳实践

既然已经知道提示词可以怎样构成,就可以开始思考怎样设计提示词,让它体现最佳实践。可以从两方面来考虑:具备正确的思维方式,以及运用合适的技术。

提示词工程的思维方式

提示词工程是一个试错的过程,所以要记住三条大的指导原则:

  1. 理解领域很重要。 回答的准确性和相关性,取决于应用或用户所在的领域。运用你的直觉和领域专业知识,进一步定制技术。例如,在系统提示词中定义带有领域特点的角色,或在用户提示词中使用针对该领域的模板。提供体现领域上下文的辅助内容,或者用领域特有的引导语和示例,引导模型走向熟悉的使用模式。

  2. 理解模型很重要。 我们知道模型本质上是随机的。但不同的模型实现,在使用的训练数据集(预训练知识)、提供的能力(例如通过 API 或 SDK)以及擅长的内容类型(例如代码、图像还是文本)等方面也可能不同。了解你所用模型的长处和局限,并据此安排任务的优先次序,或者构建针对模型能力优化的定制模板。

  3. 迭代和验证很重要。 模型在快速演进,提示词工程的技术也是如此。作为领域专家,你可能掌握你自己这个应用特有的上下文或标准,它们未必适用于更广泛的群体。先借助提示词工程的工具和技术“快速起步”构造提示词,再用你自己的直觉和领域专业知识反复迭代、验证结果。记录你的心得,建立一个知识库(例如提示词库),供其他人作为新的起点,让以后的迭代更快。

最佳实践

下面来看一些 OpenAI 和 Azure OpenAI 的实践者推荐的常见最佳实践。

做法 原因
评估最新的模型 新一代模型可能功能更强、质量更好,但成本也可能更高。先评估它们带来的影响,再决定是否迁移。
把指令和上下文分开 看看你的模型或服务商是否规定了分隔符,用来更清楚地区分指令、主要内容和辅助内容。这能帮助模型更准确地给各个 token 分配权重。
具体、清晰 对期望的上下文、结果、长度、格式、风格等给出更多细节,这能同时提高回答的质量和一致性。把好用的写法沉淀为可复用的模板。
描述充分,使用示例 模型可能对“边示范边讲解”的方式反应更好。先用零样本的方式(只给指令,不给示例)开始,再尝试用少样本的方式改进,给出几个期望输出的示例。也可以使用类比。
用引导语启动补全 给模型一些开头的词语或短语,作为回答的起点,推动它得出期望的结果。
加倍强调 有时你需要对模型把话重复一遍。可以在主要内容之前和之后都给出指令,或者同时使用指令和引导语,等等。通过迭代和验证,看看哪种做法有效。
顺序很重要 由于近因偏差,你向模型提供信息的顺序可能会影响输出,示例的顺序也是如此。尝试不同的顺序,看看哪种效果最好。
给模型留一条“退路” 给模型一个兜底的回答,在它因为任何原因无法完成任务时使用。这能降低模型生成错误或编造回答的概率。

和所有最佳实践一样,请记住,效果因情况而异,取决于模型、任务和领域。把这些做法当作起点,不断迭代,找到最适合你的方式。随着新的模型和工具出现,要不断重新评估你的提示词工程流程,重点关注流程能否规模化以及回答的质量。

作业

恭喜你学完了本课!现在是时候用真实的示例,检验一下这些概念和技术了!

在作业中,我们会用一个 Jupyter Notebook,其中的练习可以交互式地完成。你也可以在 Notebook 里加入自己的 Markdown 单元和代码单元,自己探索各种想法和技术。

首先,fork 仓库,然后

  • (推荐)启动 GitHub Codespaces
  • (或者)把仓库克隆到本地设备,配合 Docker Desktop 使用
  • (或者)用你喜欢的 Notebook 运行环境打开该 Notebook

接着,配置环境变量

  • 把仓库根目录下的 .env.copy 文件复制为 .env,并填入 AZURE_OPENAI_API_KEY、AZURE_OPENAI_ENDPOINT 和 AZURE_OPENAI_DEPLOYMENT 的值。具体做法请回看学习沙盒一节。

然后,打开 Jupyter Notebook

  • 选择运行内核。如果你用的是第 1 或第 2 种方式,直接选择开发容器提供的默认 Python 3.10.x 内核即可。

现在你可以开始做练习了。注意,这里的答案没有对错之分,只是通过试错来探索各种选项,培养对特定模型和应用领域什么做法有效的直觉。

因此,本课没有“代码解答”部分。Notebook 中会有标题为“我的解答:”的 Markdown 单元,给出一个示例输出供参考。

知识测试

下面哪一个提示词遵循了一些合理的最佳实践,是好的提示词?

  1. 给我看一张红色汽车的图片
  2. 给我看一张红色汽车的图片,品牌是沃尔沃,型号是 XC90,停在悬崖边,夕阳西下
  3. 给我看一张红色汽车的图片,品牌是沃尔沃,型号是 XC90

答案:2。它是最好的提示词,因为它提供了“是什么”的细节,而且说得很具体(不是随便一辆车,而是指定了品牌和型号),还描述了整体场景。3 次之,因为它也包含了不少描述。

🚀 挑战

试试能不能用“引导语”技术写这样一个提示词:补全句子“给我看一张红色汽车的图片,品牌是沃尔沃,并且”。模型会怎么回答?你会怎样改进它?

干得漂亮!继续学习

想进一步了解提示词工程的各种概念?可以去原课程推荐的延伸学习页面,找到这个主题的更多优质资源。

下一课(第 5 课)我们将学习高级提示词技术。


免责声明:本课中文原由 AI 翻译服务 Co-op Translator 机器翻译,本库已对照英文原文校订,并有删节。中英文如有出入,以英文原版为准。

来源与许可

本组课程内容取自 Microsoft《Generative AI for Beginners(面向初学者的生成式 AI)》简体中文版第 1–5、13、15 课,原项目:https://github.com/microsoft/generative-ai-for-beginners(取用版本 commit e01dec4,即 2026-10-24 的 main 分支)。Copyright (c) Microsoft Corporation,依 MIT 许可证发布(许可全文见本库附录/本书版权页)。中文译文原由 AI 翻译服务 Co-op Translator 机器翻译,经本库对照英文原文校订、删节,并移除了第三方图片和部分界面截图;如有出入,以英文原版为准。本库与 Microsoft 无关联,未获其认可或背书。

本章改动:删除课程视频封面图及“点击上方图片观看视频”一类文字;去掉链接中的 ?WT.mc_id= 跟踪参数;免责声明改写为:原为 Co-op Translator 机器翻译,经本库校订,以英文原版为准;对照同一提交的英文原文逐段校订译文,修正误译、术语和不通顺的句子;指向原课程其他课的链接:本库收录的改为本库章节,未收录的改为原仓库地址并注明未收录;删除 OpenAI Playground 与 Hugging Face Chat 的编造示例截图,改为“图略”;删除课程模板留下的 HTML 注释;含 <br/> 的示例表格(主要内容、单样本/少样本、引导语)改为列表;引导语示例中重复的木星原文改为“同上”;少样本运动示例译成中文;cue 统一译为“引导语”;补回原文中“基础 LLM”的链接;为手绘速写笔记和分词截图的机器翻译文字加编者注;为示例代码加中文说明;“今年七月”改为“2023 年 7 月”;挑战题句子按英文重译;2026-10-27 校对:术语统一(提示词、提示词工程、提示词模板、提示词库、大语言模型),章名改为“提示词工程基础”;“回应 1/2/3”统一为“回答”

本库从原课程 21 课中选取第 1–5、13、15 课,按本库顺序编为 7 章(原第 13、15 课为本库第 6、7 章)。中文原为机器翻译,本库对照同一版本的英文原文逐段校订,修正了误译、术语和不通顺的句子;第 5 课中的提示和回答示例由本库译成中文,Python 代码按原文保留。删除了视频封面图和观看视频的提示、注明出自第三方的图片、未注明来源的第三方界面截图以及带公司标志的截图,均以“图略”说明并给出原出处;第 15 课的代码块改为一句话说明;去掉了链接中的跟踪参数和课程模板留下的注释;含换行标签的示例表格改为列表;机器翻译后文字残缺的配图加了编者注。每课末尾的免责声明改写为:原为机器翻译,经本库校订,以英文原版为准。