Press "Enter" to skip to content

微软生成式AI入门课程04 —— 提示工程基础知识

您如何撰写用于LLM的提示非常重要,精心设计的提示可以比没有精心设计的提示实现更好的结果。但是什么是这些概念,如何改善我发送给LLM的内容?本章和下一章将回答这些问题。

生成AI 能够根据用户请求生成新的内容(如文本、图像、音频、代码等)。它使用 大型语言模型(LLMs),例如OpenAI的GPT(”生成预训练转换”)系列模型,该模型使用自然语言和代码进行训练。

用户现在可以使用熟悉的对话方式与这些模型进行交互,无需任何技术专业知识或培训。这些模型是基于提示的——用户发送文本输入(提示)并获得AI回复(完成)。他们可以通过多轮会话的方式与AI进行交流,修改他们的提示,直到回复符合他们的预期。

“提示”现在成为生成AI应用的主要 编程接口,它告诉模型要做什么,并影响返回的回复的质量。”提示工程”是一个快速发展的研究领域,专注于设计和优化提示,以在规模上提供一致而高质量的回复。

学习目标

在本课程中,我们将学习什么是提示工程,为什么重要,以及如何为特定模型和应用目标制定更有效的提示。我们将了解提示工程的核心概念和最佳实践,并了解一个交互式的Jupyter笔记本环境,在其中我们可以看到这些概念应用于实际示例。

通过本课程,我们将能够:

  1. 解释提示工程是什么以及为什么重要。
  2. 描述提示的组成部分及其用法。
  3. 学习提示工程的最佳实践和技巧。
  4. 使用OpenAI终端将学到的技巧应用于实际示例。

学习沙盒

目前,提示工程更多是一门艺术而非科学。提高我们的直觉的最佳方法是通过更多的实践,并采用结合应用领域专业知识、推荐技术和模型特定优化方法的试错方法。

附带本课程的Jupyter Notebook提供了一个可供您尝试所学内容的沙盒环境 – 您可以在学习过程中使用,也可以将其用于最后的代码挑战。要执行这些练习,您需要:

  1. 一个OpenAI API密钥 – 用于部署的LLM服务端点。
  2. 一个Python运行时环境 – 用于执行笔记本。

我们已经在这个代码库中加入了一个带有Python 3运行时环境的 开发容器(dev container)。在GitHub Codespaces或本地的Docker Desktop中打开代码库,即可自动激活运行时环境。然后打开笔记本,并选择Python 3.x内核以准备执行笔记本。

默认笔记本设置是为了与OpenAI API密钥配合使用。只需将文件夹根目录中的.env.copy文件复制为.env并更新 OPENAI_API_KEY= 行为您的API密钥 – 您就完成了。

该笔记本附带了 起始 练习 – 但我们鼓励您添加自己的 Markdown(描述)和 Code(提示请求)部分,尝试更多示例或想法 – 并培养自己对提示设计的直觉。

我们的创业公司

现在,让我们谈谈 这个话题 与我们的创业公司使命 将AI创新带入教育 的关系。我们希望构建基于AI的 个性化学习 应用 – 因此,让我们考虑一下我们的应用程序的不同用户可能如何 “设计” 提示:

  • 管理员可能会要求AI 分析课程数据以确定覆盖间隙。AI可以总结结果或使用代码将其可视化。
  • 教育者可能会要求AI为特定受众和主题 生成课程计划。AI可以按指定格式构建个性化计划。
  • 学生可能会要求AI 辅导他们解决难题。AI现在可以根据学生的水平提供课程、提示和示例。

这只是冰山一角。查看 Prompts For Education – 一个由教育专家策划的开源提示库 – 以更全面地了解可能性!尝试在沙盒中运行其中一些提示,或使用OpenAI Playground查看结果!

什么是提示工程?

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

  • 为给定模型和目标设计初始提示
  • 迭代地改进提示以提高回复的质量

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

  • 标记化 = 模型如何”看待”提示
  • 基础LLMs = 基础模型如何”处理”提示
  • 指导性调校LLMs = 模型如何识别”任务”

标记化

LLMs将提示视为 标记序列,不同模型(或模型的版本)可以以不同的方式对相同的提示进行标记化。由于LLMs是基于标记进行训练的(而不是原始文本),提示的标记化方式对生成的回复质量有直接影响。

要了解标记化的工作原理,可以尝试使用下面显示的 OpenAI标记器 等工具。将您的提示复制进去 – 并观察它如何转换为标记,注意空格和标点符号是如何处理的。请注意,此示例显示的是较旧的LLM(GPT-3) – 因此使用更新的模型可能会产生不同的结果。

概念:基础模型

一旦提示被标记化,”基础LLM”(或基础模型)的主要功能是预测该序列中的标记。由于LLMs是基于大规模文本数据集进行训练的,它们对标记之间的统计关系有很好的理解,并且可以以一定的自信进行预测。它们不一定理解提示或标记中词语的 含义,它们只是看到一个它们可以用下一个预测填补的模式。它们可以继续预测序列,直到由用户干预或一些预先设定的条件终止。

想看看基于提示的完成是如何工作的吗?将以上提示输入 Azure OpenAI Studio 的 Chat Playground 中,并使用默认设置。系统配置为将提示视为请求信息 – 所以您应该看到一个满足上下文需求的完成。

但是,如果用户希望看到满足某些标准或任务目标的特定内容怎么办?这就是 指导性调校 LLMs 发挥作用的地方。

概念:指导性调校LLMs

指导性调校LLM 是基于基础模型进行微调的模型,微调过程中使用示例或输入/输出对(例如,多轮 “消息”),这些示例可以包含明确的指令 – 而AI生成的回复试图遵循该指令。

这使用了强化学习与人类反馈(RLHF)等技术,可以训练模型 遵循指令从反馈中学习,以便产生更适用于实际应用且与用户目标更相关的回复。

让我们来试试吧 – 现在改变 系统消息,提供以下指令作为上下文:

对你所掌握的内容为二年级学生总结一下。结果保持为三到五个要点的一个段落。

看看结果如何被调整以反映所期望的目标和格式?教育者现在可以直接将此回复用于他们的课堂幻灯片中。

为什么我们需要提示工程?

现在我们知道了LLMs如何处理提示,让我们谈谈为什么我们需要提示工程。答案在于目前的LLMs面临一些挑战,使得在不对提示进行努力的情况下实现可靠和一致的完成更加困难。例如:

  1. 模型回复是随机的。相同的提示可能会在不同的模型或模型版本中产生不同的回复。甚至可能会在 相同的模型 在不同时间产生不同的结果。通过提供更好的限制条件,提示工程技术可以帮助我们减少这些变化。
  2. 模型可能会出现”幻觉”回复。模型是使用大型但有限的数据集进行预训练的,这意味着它们对训练范围之外的概念缺乏了解。因此,它们可能会生成不准确、虚构或与已知事实直接矛盾的完成。提示工程技术帮助用户识别和减轻幻觉,例如通过要求AI提供引用或推理。
  3. 模型的能力会有所不同。新的模型或模型版本将具有更丰富的功能,但也会带来独特的怪癖、成本和复杂性的权衡。提示工程可以帮助我们开发最佳实践和工作流程,以在可扩展且无缝的方式中抽象出差异,并适应特定模型的要求。

让我们在OpenAI或Azure OpenAI Playground中看看这一点:

  • 使用相同的提示与不同的LLM部署(例如,OpenAI、Azure OpenAI、Hugging Face) – 您看到了变化吗?
  • 在相同的LLM部署(例如Azure OpenAI Playground)中反复使用相同的提示 – 这些变化如何不同?

幻觉示例

想要了解幻觉是如何工作的吗?想想一个提示,指示AI生成一个不存在的主题的内容(以确保其在训练数据集中找不到)。例如 – 我尝试了这个提示:

提示: 生成一份关于2076年火星战争的课程计划。

在网络搜索中,我发现火星战争有虚构的描述(例如电视剧系列或书籍),但没有2076年的。常识还告诉我们,2076年 是未来,因此无法与真实事件关联。

那么当我们将此提示与不同的LLM提供者一起使用时会发生什么呢?

回复1:OpenAI Playground (GPT-35)

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

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

正如预期的那样,每个模型(或模型版本)产生的回复略有不同,这要归因于随机行为和模型能力的差异。例如,一个模型面向八年级的学生,而另一个模型则面向高中学生。但是这三个模型确实生成了让一个不了解的用户相信该事件是真实的回复。

提示工程技术,如 元提示温度配置,可能在一定程度上减少模型幻觉。提示工程的新 架构 也将新工具和技术无缝地纳入提示流程中,以减轻或减少某些效果。

案例研究:GitHub Copilot

让我们通过观察一个案例研究,看看实际世界解决方案中如何使用提示工程。我们来看一个案例研究:GitHub Copilot

GitHub Copilot 是您的”AI代码对手” – 它将文本提示转换为代码完成,并集成到您的开发环境(例如Visual Studio Code)中,实现无缝的用户体验。如下面的博客系列所记录的那样,最早的版本基于OpenAI Codex模型 – 工程师很快意识到需要对模型进行微调并开发更好的提示工程技术来改进代码质量。今年7月,他们推出了一个基于Codex之外的改进AI模型,以实现更快的建议。

按顺序阅读这些博文,以了解他们的学习过程。

您还可以浏览他们的工程博客查看更多类似此类的帖子,展示这些模型和技术如何应用于驱动真实世界的应用。


提示构建

我们已经看到了提示工程的重要性-现在让我们了解如何“构建”提示,以便评估不同的技术来更有效地设计提示。

基本提示

让我们从基本提示开始:对模型发送的没有其他上下文的文本输入。这是一个例子-当我们将美国国歌的前几个词发送到OpenAI的Completion API时,它会立即“完成”响应,补充剩余的几行,展示了基本的预测行为。

提示(输入)完成(输出)
Oh say can you see听起来你要开始唱《星条旗》,美利坚合众国的国歌。全词如下…

复杂提示

现在让我们在基本提示的基础上添加上下文和说明。Chat Completion API允许我们将复杂提示构建为一个包含消息的集合,包括:

  • 反映用户输入和助手响应的输入/输出对。
  • 设置助手行为或特性的系统消息。

请求的格式如下所示,其中分词从上下文和对话中有效地捕捉相关信息。现在,更改系统上下文的影响可能对补全的质量产生重大影响,就像所提供的用户输入一样重要。

response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "您是一个乐于助人的助手。"},
{"role": "user", "content": "谁赢得了2020年的世界系列赛?"},
{"role": "assistant", "content": "洛杉矶道奇在2020年赢得了世界系列赛。"},
{"role": "user", "content": "比赛在哪里进行?"}
]
)

指令提示

在上述示例中,用户提示是一个可以解释为请求信息的简单文本查询。通过指令提示,我们可以使用该文本更详细地指定一个任务,为AI提供更好的指导。下面是一个例子:

提示(输入)完成(输出)指令类型
编写关于内战的描述返回一个简单段落简单
编写关于内战的描述。提供关键日期和事件并描述其重要性返回一个段落,后面是一个包含关键事件日期和描述的列表复杂
编写关于内战的描述,用1段话进行描述。提供3个带有关键日期及其重要性的项目符号。提供3个带有关键历史人物及其贡献的项目符号。将输出作为JSON文件返回以文本框的形式返回更详细的细节,格式化为JSON,可以复制粘贴到文件中并根据需要进行验证复杂。格式化。

主要内容

在上述示例中,提示仍然相当开放,允许LLM决定其预训练数据集中哪些部分是相关的。借助主要内容设计模式,输入文本分为两个部分:

  • 指令(动作)
  • 相关内容(影响动作)

以下是一个例子,其中指令是“用两个句子总结这个”。

|提示(输入)|完成(输出)|
|:---|:---|
|木星是距离太阳第五远的行星,也是太阳系中最大的行星。它是一个大气巨星,质量仅为太阳的千分之一,但是比太阳系中其他行星的质量总和多两倍半。木星是夜空中肉眼可见的最亮的物体之一,并且自古代文明就已经被人们所知。它以罗马神祇木星命名。当从地球上观察时,木星亮到足以使其反射的光产生可见的阴影,并且平均来说,它是仅次于月球和金星的第三亮的自然物体。<br/><br/>**用两个简短句子总结这个**|木星是太阳系中最大的行星,距离太阳第五远。它是一个气体巨星,质量是所有行星的两倍多。|

可以以多种方式使用主要内容段来驱动更有效的指令:

  • 示例-而不是用明确的指令告诉模型要做什么,可以给它提供一些关于应该做什么的示例,让它推断出模式。
  • 提示信息-在指令后面添加一个“提示信息”,对补全进行预热,引导模型产生更相关的响应。
  • 模板-这些是具有占位符(变量)的可重复使用的提示“配方”,可以根据特定用例的数据进行自定义。

让我们实践一下。

使用示例

这是一种方法,您可以使用主要内容来通过“向模型提供”一些期望输出的示例来推断所需输出的模式。根据提供的示例数量,我们可以进行零样本提示、一次样本提示、少样本提示等。

现在,提示包含三个组件:

  • 一个任务描述
  • 一些期望输出的示例
  • 一个新示例的开始(成为隐式任务描述)
|学习类型|提示(输入)|完成(输出)|
|:---|:---|:---|
|零样本|"The Sun is Shining". Translate to Spanish|"El Sol está brillando"。|
|一次样本|"The Sun is Shining" => ""El Sol está brillando". <br> "It's a Cold and Windy Day" => |"Es un día frío y ventoso"。|
|少样本|The player ran the bases => Baseball <br/> The player hit an ace => Tennis <br/> The player hit a six => Cricket <br/> The player made a slam-dunk => |篮球|
| | | |

请注意,零样本提示中我们必须提供明确的指令(”Translate to Spanish”),但在一次样本提示的示例中可以进行推断。少样本示例显示了添加更多示例如何使模型在没有额外指令的情况下做出更准确的推断。

提示信息

使用主要内容的另一种技术是提供提示消息而不是示例。在这种情况下,我们通过以反映所需响应格式的片段“启动”模型的方式,给模型一个正确的方向。然后,模型可以“接受线索”以继续在相同的路线上进行。

|线索数量|提示(输入)|完成(输出)|
|:---|:---|:---|
|0|Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. <br/>**Summarize This**|Jupiter is the largest planet in our Solar System and the fifth one from the Sun. It is a gas giant with a mass 1/1000th of the Sun's, but it is heavier than all the other planets combined. Ancient civilizations have known about Jupiter for a long time, and it is easily visible in the night sky.|
|1|Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. <br/>**Summarize This** <br/> What we learned is that Jupiter|is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets combined. It is easily visible to the naked eye and has been known since ancient times.|
|2|Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. <br/>**Summarize This** <br/> Top 3 Facts We Learned:|1. Jupiter is the fifth planet from the Sun and the largest in the Solar System. <br/> 2. It is a gas giant with a mass one-thousandth that of the Sun...<br/> 3. Jupiter has been visible to the naked eye since ancient times ...|
| | | |

提示模板

提示模板是一种预定义的提示配方,可以根据需要存储和重用,以在规模上实现更一致的用户体验。在其简单形式中,它只是一个包含交互提示组件(用户和系统消息)和支持重用的API驱动请求格式的集合,例如来自OpenAI的此示例

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

最后,模板的真正价值在于能够创建和发布面向垂直应用领域的提示库——其中提示模板现在已经经过优化,以反映特定于应用的上下文或使响应对目标用户受众更具相关性和准确性的示例。 Prompts For Edu存储库是此方法的一个很好的例子,它收集了面向教育领域的提示库,重点关注课程规划、课程设计、学生辅导等关键目标。

支持内容

如果我们将提示构建视为包含指令(任务)和目标(主要内容)的过程,那么支持内容就像是附加的上下文,可以以某种方式影响输出。它可以是调整参数、格式化说明、主题分类等等,可以帮助模型根据用户的目标或期望来定制其响应。

例如:假设课程目录上有 extensive metadata(名称、描述、级别、元数据标签、讲师等)的情况下:

  • 我们可以定义一个指令来“总结2023年秋季的课程目录”
  • 我们可以使用主要内容来提供几个期望的输出示例
  • 我们可以使用支持内容来识别前5个感兴趣的“标签”。

现在,模型可以按照示例显示的格式提供摘要,但如果一个结果有多个标签,它可以优先考虑辅助内容中标识的5个标签。


提示的最佳实践

现在我们知道提示可以如何构建,我们可以开始思考如何设计它们以反映最佳实践。我们可以将其分为两个部分-拥有正确的思维方式和应用正确的技术

提示工程思维方式

提示工程是一个测试和错误的过程,因此请记住以下三个广泛的指导因素:

  1. 领域理解很重要。响应的准确性和相关性是与应用或用户所处的领域相关的功能。运用直觉和领域专业知识来进一步定制技术。例如,在系统提示中定义领域特定的个性,或在用户提示中使用领域特定的模板。提供反映特定领域背景的支持内容,或使用领域特定的提示和示例来引导模型朝着熟悉的使用模式发展。
  2. 了解模型很重要。我们知道模型的性质是随机的。但是,模型实施也可以在使用的训练数据集(预训练知识)、所提供的功能(通过API或SDK)以及针对其进行优化的内容类型(代码vs.图像vs.文本)方面有所不同。了解您正在使用的模型的优势和局限性,并利用这些知识来优先处理任务或构建定制化模板,使其能够最大限度地发挥模型的能力。
  3. 迭代和演进很重要。大多数提示是生成的,并且是否达到所需的目标需要通过测试和迭代来确定。开始时可以使用较小的模型或样本集进行初始测试,并根据反馈进行微小的更改和改进。持续监控和评估提示的质量,并随着模型和需求的变化进行调整和更新。

应用这些思维方式并将其视为动态过程,可以帮助您提高提示设计的效果和质量。

提示工程技巧

在提示工程中,我们可以应用多种技术来优化和提高提示的效果。以下是几种关键技巧:

  • Domain-specific Context-提供与特定领域相关的上下文信息,以帮助模型理解和生成与该领域相关的响应。
  • System Template Prompts-在系统提示中使用预定义的模板,以提供一致的系统行为和个性。
  • User Template Prompts-在用户提示中使用预定义的模板,帮助指导用户输入,最大程度地减小误导和模糊性。
  • Explicit Instructions-明确指令,以确保模型清楚理解所需的任务和要求。
  • Examples-使用示例来指导模型,展示所需的输出模式和表现。
  • Prompt Cues and Cues-Based Completion-使用提示线索或基于线索的完成来引导模型的响应,使其更接近期望的输出。
  • Secondary Content or Metadata-使用附加上下文、元数据或辅助信息来指导模型生成更准确和相关的响应。
  • Iteration and Fine-tuning-通过不断迭代和微调提示,使其更符合预期的质量和效果。

这些技巧并不是独立的,您可以根据特定需求组合使用它们,以达到最佳的提示设计。

以上是有关提示构建和最佳实践的概述,希望对您有所帮助!3. 迭代和验证很重要。模型在不断演进,因此快速工程技术也在不断更新。作为领域专家,您可能对自己的特定应用有其他背景或标准,这些背景或标准可能不适用于更广泛的社区。使用快速工程工具和技术来“启动”提示构建,然后使用自己的直觉和领域专业知识进行迭代和验证结果。记录您的见解并创建一个知识库(例如提示库),它可以作为他人的新基准,以便在将来更快地进行迭代。

最佳实践

现在让我们看看Open AI和Azure OpenAI推荐的常见最佳实践。

| 什么 | 为什么 |
|:---|:---|
| 评估最新模型。 | 新的模型世代可能具有提高的特性和质量,但也可能带来更高的成本。评估它们的影响,然后做迁移决策。 |
| 分离指令和上下文。 | 检查您的模型/提供者是否定义了界定符以更清晰地区分指令、主要内容和次要内容。这可以帮助模型更准确地为标记分配权重。 |
|具体而明确 | 对所需上下文、结果、长度、格式、风格等提供更多细节。这样可以提高响应的质量和一致性。以可重用模板的形式编写。 |
|具体地描述,使用示例 | 模型可能对“展示和演示”方法有更好的响应。先尝试“零样本”方法,您只需给出一条指令(但没有示例),然后尝试使用“少样本”进行改进,提供几个期望输出的示例。使用类比。|
| 使用线索启动完成 | 通过给予它一些引导性单词或短语,将其引导到期望的结果。|
| 强调重要性 | 有时你可能需要重复一遍对模型的指令。在主要内容之前和之后给出指令,使用指令和线索等。迭代和验证,看看哪个有效。|
| 排序很重要 | 向模型展示信息的顺序可能会对输出产生影响,即使在学习示例中,也要感谢近期偏见。尝试不同的选项来看看哪个最好。|
| 给模型一个“出口”| 如果模型由于任何原因无法完成任务,则给模型一个_fallback_完成响应。这可以减少模型生成虚假或幻象响应的可能性。 |
| | |

与任何最佳实践一样,请记住根据模型、任务和领域的不同可能会有所不同。将这些作为起点,并进行迭代,找到最适合您的方法。随着新的模型和工具的出现,不断重新评估您的提示工程流程,关注流程可伸缩性和响应质量。

任务

恭喜!您已经完成了本课程!现在是时候通过真实示例来测试一些概念和技巧了!

在我们的任务中,我们将使用一个交互式完成的Jupyter Notebook。您还可以使用自己的Markdown和Code单元格扩展笔记本,探索自己的想法和技术。

开始之前,fork该存储库,然后

  • (推荐)启动GitHub Codespaces
  • (或者)将存储库克隆到本地设备上,并使用Docker Desktop使用它
  • (或者)使用您喜欢的笔记本运行时环境打开笔记本。

接下来,配置环境变量

  • 将存储库根目录下的.env.copy文件复制为.env并填入OPENAI_API_KEY值。您可以在您的OpenAI仪表板中找到API密钥。

接下来,打开Jupyter Notebook

  • 选择运行时内核。如果使用选项1或2,请选择由开发容器提供的默认Python 3.10.x内核。

您已经准备好运行这些练习了。请注意,这里没有“正确和错误”的答案-只是通过试错和建立直觉来探索选项,并找到适用于给定模型和应用领域的最佳方法。

由于这个原因,在这节课中没有“解决代码”片段。相反,笔记本将有一个名为“我的解答:”的Markdown单元格,显示一个示例输出供参考。

知识测试

以下哪个是遵循合理最佳实践的良好提示?

  1. 展示一张红色汽车的图片
  2. 展示一张红色汽车的图片,制造商是沃尔沃,型号是XC90,停在悬崖上,太阳正在落山
  3. 展示一张红色汽车的图片,制造商是沃尔沃,型号是XC90

答:2,它是最好的提示,因为它提供了有关“什么”的详细信息,并且进一步进行了具体描述(不仅仅是任何汽车,而是特定的制造商和型号),还描述了整体环境设置。3是次佳的,因为它也包含了很多描述。

🚀 挑战

试着利用“提示”技术来完成句子:“展示一张红色汽车的图片,制造商是沃尔沃,”。它会如何回应,您将如何改进它?

做得好!继续学习

想了解更多关于不同Prompt工程概念的知识?请访问继续学习页面以找到关于此主题的其他优秀资源。

前往第5课,我们将学习高级提示技术

本文由极客智坊网页翻译服务自动翻译完成:

微信扫描体验极客翻译

原文地址:https://microsoft.github.io/generative-ai-for-beginners/#/04-prompt-engineering-fundamentals/README

发表回复