From cbc37f5c7de8d4866c36ce9d88ac224bfed428b4 Mon Sep 17 00:00:00 2001 From: RealTong Date: Sat, 2 Mar 2024 17:29:05 +0800 Subject: [PATCH] Update: Chinese translation - Update Chinese translation of the introduction section --- pages/introduction.zh.mdx | 2 +- pages/introduction/basics.zh.mdx | 40 ++++++++++++++++++++++-------- pages/introduction/elements.zh.mdx | 12 +++++++++ pages/introduction/examples.zh.mdx | 14 +++++++++++ pages/introduction/settings.zh.mdx | 13 ++++++++-- pages/introduction/tips.zh.mdx | 10 ++++---- 6 files changed, 73 insertions(+), 18 deletions(-) diff --git a/pages/introduction.zh.mdx b/pages/introduction.zh.mdx index 78bc348..dcaaf20 100644 --- a/pages/introduction.zh.mdx +++ b/pages/introduction.zh.mdx @@ -7,6 +7,6 @@ import ContentFileNames from 'components/ContentFileNames' 本指南介绍了提示词相关的基础知识,帮助用户了解如何通过提示词和大语言模型进行交互并提供指导建议。 -除非特别说明,本指南默认所有示例都是基于 OpenAI 的大语言模型 `text-davinci-003` 进行测试,并且使用该模型的默认配置,如 `temperature=0.7` 和 `top-p=1` 等。 +除非另有说明,本指南默认所有示例都是在 OpenAI 的 Playground 上使用 `gpt-3.5-turbo` 进行测试。模型使用默认配置,即 temperature=1 和 top_p=1 。这些提示也应适用于具有类似功能的其他模型,如gpt-3.5-turbo,但模型响应可能会有所不同。 \ No newline at end of file diff --git a/pages/introduction/basics.zh.mdx b/pages/introduction/basics.zh.mdx index 8036a48..774cdcf 100644 --- a/pages/introduction/basics.zh.mdx +++ b/pages/introduction/basics.zh.mdx @@ -1,5 +1,8 @@ # 基本概念 +import {Screenshot} from 'components/screenshot' +import INTRO1 from '../../img/introduction/sky.png' + ## 基础提示词 您可以通过简单的提示词(Prompts)获得大量结果,但结果的质量与您提供的信息数量和完善度有关。一个提示词可以包含您传递到模型的_指令_或_问题_等信息,也可以包含其他详细信息,如_上下文_、_输入_或_示例_等。您可以通过这些元素来更好地指导模型,并因此获得更好的结果。 @@ -15,16 +18,18 @@ The sky is _输出结果_ ``` -blue - -The sky is blue on a clear day. On a cloudy day, the sky may be gray or white. +blue. ``` -如以上示例,语言模型能够基于我们给出的上下文内容 `"The sky is" 完成续写。 而输出的结果可能是出人意料的,或远高于我们的任务要求。 +如果使用的是 OpenAI Playground 或者其他任何 LLM Playground,则可以提示模型,如以下屏幕截图所示: + + + +需要注意的是,当使用 OpenAI 的 `gpt-4` 或者 `gpt-3.5-turbo` 等聊天模型时,您可以使用三个不同的角色来构建 prompt: `system`、`user` 和 `assistant`。其中 `system` 不是必需的,但有助于设定 `assistant` 的整体行为,帮助模型了解用户的需求,并根据这些需求提供相应的响应。上面的示例仅包含一条 `user` 消息,您可以使用 `user` 消息直接作为 prompt。为简单起见,本指南所有示例(除非明确提及)将仅使用 `user` 消息来作为 `gpt-3.5-turbo` 模型的 prompt。上面示例中 `assistant` 的消息是模型的响应。您还可以定义 `assistant` 消息来传递模型所需行为的示例。您可以在[此处](https://www.promptingguide.ai/models/chatgpt)了解有关使用聊天模型的更多信息。 -基于以上示例,如果想要实现更具体的目标,我们还必须提供更多的背景信息或说明信息。 +从上面的提示示例中可以看出,语言模型能够基于我们给出的上下文内容 `"The sky is" 完成续写。而输出的结果可能是出人意料的,或远高于我们的任务要求。 但是,我们可以通过改进提示词来获得更好的结果。 -可以按如下示例试着完善一下: +让我们试着改进以下: _提示词_ @@ -37,7 +42,7 @@ The sky is _输出结果_ ``` -so beautiful today. +blue during the day and dark at night. ``` 结果是不是要好一些了?本例中,我们告知模型去完善句子,因此输出的结果和我们最初的输入是完全符合的。**提示工程**(Prompt Engineering)就是探讨如何设计出最佳提示词,用于指导语言模型帮助我们高效完成某项任务。 @@ -65,9 +70,24 @@ Q: <问题>? A: ``` -以上的提示方式,也被称为_零样本提示(zero-shot prompting)_,即用户不提供任务结果相关的示范,直接提示语言模型给出任务相关的回答。某些大型语言模式有能力实现零样本提示,但这也取决于任务的复杂度和已有的知识范围。 +以上的提示方式,也被称为 _零样本提示(zero-shot prompting)_,即用户不提供任务结果相关的示范,直接提示语言模型给出任务相关的回答。某些大型语言模式有能力实现零样本提示,但这也取决于任务的复杂度和已有的知识范围。 + +具体的零样本提示示例如下: + +_提示词_ + +``` +Q: What is prompt engineering? +``` +对于一些较新的模型,你可以跳过 `Q:` 部分,直接输入问题。因为模型在训练过程中被暗示并理解问答任务,换言之,提示词可以简化为下面的形式: + +_提示词_ + +``` +What is prompt engineering? +``` -基于以上标准范式,目前业界普遍使用的还是更高效的_小样本提示(Few-shot Prompting)_范式,即用户提供少量的提示范例,如任务说明等。小样本提示一般遵循以下格式: +基于以上标准范式,目前业界普遍使用的还是更高效的 _小样本提示(Few-shot Prompting)_范式,即用户提供少量的提示范例,如任务说明等。小样本提示一般遵循以下格式: ``` <问题>? @@ -116,4 +136,4 @@ _输出结果_ Negative ``` -语言模型可以基于一些说明了解和学习某些任务,而小样本提示正好可以赋能上下文学习能力。 +语言模型可以基于一些说明了解和学习某些任务,而小样本提示正好可以赋能上下文学习能力。我们将在接下来的章节中更广泛的讨论如何使用零样本提示和小样本提示。 \ No newline at end of file diff --git a/pages/introduction/elements.zh.mdx b/pages/introduction/elements.zh.mdx index 7495b30..33fc032 100644 --- a/pages/introduction/elements.zh.mdx +++ b/pages/introduction/elements.zh.mdx @@ -12,4 +12,16 @@ **输出指示**:指定输出的类型或格式。 +为了更好地演示提示词要素,下面是一个简单的提示,旨在完成文本分类任务: + +_提示词_ + +``` +请将文本分为中性、否定或肯定 +文本:我觉得食物还可以。 +情绪: +``` + +在上面的提示示例中,指令是“将文本分类为中性、否定或肯定”。输入数据是“我认为食物还可以”部分,使用的输出指示是“情绪:”。请注意,此基本示例不使用上下文,但也可以作为提示的一部分提供。例如,此文本分类提示的上下文可以是作为提示的一部分提供的其他示例,以帮助模型更好地理解任务并引导预期的输出类型。 + 注意,提示词所需的格式取决于您想要语言模型完成的任务类型,并非所有以上要素都是必须的。我们会在后续的指南中提供更多更具体的示例。 diff --git a/pages/introduction/examples.zh.mdx b/pages/introduction/examples.zh.mdx index 98c4459..ee30175 100644 --- a/pages/introduction/examples.zh.mdx +++ b/pages/introduction/examples.zh.mdx @@ -1,5 +1,8 @@ # 提示词示例 +import {Cards, Card} from 'nextra-theme-docs' +import {CodeIcon} from 'components/icons' + 在上一节中,我们介绍并给出了如何赋能大语言模型的基本示例。 在本节中,我们会提供更多示例,介绍如何使用提示词来完成不同的任务,并介绍其中涉及的重要概念。通常,学习概念的最佳方法是通过示例进行学习。下面,我们将通过示例介绍说明如何使用精细的提示词来执行不同类型的任务。 @@ -322,3 +325,14 @@ Sum: 41 我们后面还会在本章节中介绍更多常见应用示例。 在后面的章节,我们将介绍更高级的提示工程概念和技术,以完成更困难任务。 + +## Notebook +如果您想使用 Python 练习上述提示,我们准备了一个 Notebook 来测试使用 OpenAI 模型的一些提示。 + + } + title="提示工程入门" + href="https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-lecture.ipynb" + /> + + diff --git a/pages/introduction/settings.zh.mdx b/pages/introduction/settings.zh.mdx index 2b86719..c34d24d 100644 --- a/pages/introduction/settings.zh.mdx +++ b/pages/introduction/settings.zh.mdx @@ -1,11 +1,20 @@ # 模型设置 -使用提示词时,您会通过 API 或直接与大语言模型进行交互。你可以通过配置一些参数以获得不同的提示结果。 +使用提示词时,您会通过 API 或直接与大语言模型进行交互。你可以通过配置一些参数以获得不同的提示结果。调整这些设置对于提高响应的可靠性非常重要,你可能需要进行一些实验才能找出适合您的用例的正确设置。以下是使用不同LLM提供程序时会遇到的常见设置: **Temperature**:简单来说,`temperature` 的参数值越小,模型就会返回越确定的一个结果。如果调高该参数值,大语言模型可能会返回更随机的结果,也就是说这可能会带来更多样化或更具创造性的产出。我们目前也在增加其他可能 token 的权重。在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的 `temperature` 值,以促使模型基于事实返回更真实和简洁的结果。 对于诗歌生成或其他创造性任务,你可以适当调高 `temperature` 参数值。 **Top_p**:同样,使用 `top_p`(与 `temperature` 一起称为核采样的技术),可以用来控制模型返回结果的真实性。如果你需要准确和事实的答案,就把参数值调低。如果你想要更多样化的答案,就把参数值调高一些。 +一般建议是改变 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` 其中一个参数就行,不要同时调整两个。 在我们开始一些基础示例之前,请记住最终生成的结果可能会和使用的大语言模型的版本而异。 diff --git a/pages/introduction/tips.zh.mdx b/pages/introduction/tips.zh.mdx index 9d8e3a8..d77f8f5 100644 --- a/pages/introduction/tips.zh.mdx +++ b/pages/introduction/tips.zh.mdx @@ -3,7 +3,7 @@ 以下是设计提示时需要记住的一些技巧: ### 从简单开始 -在设计提示时,需要记住这是一个迭代的过程,需要大量的实验来获得最佳结果。使用像OpenAI或Cohere这样的简单平台是一个很好的起点。 +在设计提示时,需要记住这是一个迭代的过程,需要大量的实验来获得最佳结果。使用像 OpenAI 或 Cohere 这样的简单平台是一个很好的起点。 您可以从简单的提示开始,随着您的目标是获得更好的结果,不断添加更多的元素和上下文。在此过程中对您的提示进行版本控制是至关重要的。当您阅读本指南时,您会看到许多例子,其中具体性、简洁性和简明性通常会给您带来更好的结果。 @@ -45,7 +45,7 @@ 所需格式: 地点:<逗号分隔的公司名称列表> -输入:“虽然这些发展对研究人员来说是令人鼓舞的,但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家Henrique Veiga-Fernandes说:“我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。”“如果我们想在治疗背景下使用它,我们实际上需要了解机制。”” +输入:“虽然这些发展对研究人员来说是令人鼓舞的,但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家 Henrique Veiga-Fernandes 说:“我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。”“如果我们想在治疗背景下使用它,我们实际上需要了解机制。”” ``` *输出:* @@ -53,7 +53,7 @@ 地点:里斯本,香帕利莫德中心 ``` -输入文本来自[这篇Nature文章](https://www.nature.com/articles/d41586-023-00509-z)。 +输入文本来自[这篇 Nature 文章](https://www.nature.com/articles/d41586-023-00509-z)。 ### 避免不精确 在上面关于详细和格式改进的提示中,很容易陷入想要过于聪明的提示陷阱,从而可能创建不精确的描述。通常最好是具体和直接。这里的类比非常类似于有效的沟通——越直接,信息传递就越有效。 @@ -67,7 +67,7 @@ 从上面的提示中不清楚要使用多少句话和什么样的风格。您可能仍然可以通过上面的提示获得良好的响应,但更好的提示是非常具体、简洁和直接的。例如: ``` -使用2-3句话向高中学生解释提示工程的概念。 +使用 2-3 句话向高中学生解释提示工程的概念。 ``` ### 做还是不做? @@ -102,4 +102,4 @@ 抱歉,我没有关于您兴趣的任何信息。不过,这是目前全球热门的电影列表:[电影列表]。希望您能找到喜欢的电影! ``` -上述示例中的一些内容摘自["Best practices for prompt engineering with OpenAI API" article.](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api) \ No newline at end of file +上述示例中的一些内容摘自 ["Best practices for prompt engineering with OpenAI API" article.](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api) \ No newline at end of file