刚刚Codesignal推出了一个非常通俗易懂并且给出了丰富实践经验的免费提示工程教程。

如果你之前看过一些提示工程的教程但是都很复杂看不懂的话。强烈建议你看一下这个,可以很好的帮助你学习提示词书写。

我也完整翻译了第一部分的教程,但是还是建议你去做一下课后习题加深记忆。

课程地址:https://learn.codesignal.com/preview/course-paths/16/prompt-engineering-for-everyone

大语言模型 (LLM) 是下一个单词预测机器

介绍

欢迎来到大语言模型(LLMs)和提示技术基础的迷人世界!在这第一课,我们将深入探索大语言模型究竟是什么。先给你透个底儿——它们本质上是下一个词的预测机器。听起来简单,但背后的原理远比你看到的要复杂。不管你是编程领域的新手还是对这些技术奇迹充满好奇,你都找对地方了。让我们一起踏上这激动人心的旅程,一步步揭开大语言模型的神秘面纱,从它们的核心功能开始。

理解LLMs作为下一个词预测机器

想象一下,当你在写短信或电子邮件时,你的手机推荐可能想输入的下一个词。这正是大语言模型(LLMs)的一个非常基本的示例。但像GPT-3.5、GPT-4(更广为人知的是chatGPT)、Claude 2和LLaMA这些LLMs可比普通的预测功能强多了。它们不只是简单地在句子中推荐下一个词,而是能够基于接收到的输入生成连贯完整的文本段落。这一切都是通过连续预测下一个词实现的,而这些词则是基于它们已经处理过的文本。

从核心上讲,LLMs通过分析大量文本数据来学习。通过这种分析,它们掌握了语言的模式、微妙差异和结构。这使得它们能够自然地预测出一连串单词中接下来的那个词。就好比它们不断地在玩一个“填空游戏”,而且规模和速度都达到了惊人的程度。

LLMs如何进行预测?

你可能会好奇,LLMs是如何进行这些预测的。答案其实在于训练。LLMs接触了包括教科书、文章、网站等在内的庞大数据集。在这个训练阶段,它们学会了理解语言的上下文和流动性。它们掌握了包括语法、风格,甚至是文本的语调等方面。

当你用一个句子或问题来指导LLM时,它便利用自己所学的知识,预测接下来最可能的一个或几个词。这不仅是基于它在训练期间观察到的模式和规则的推测。

尝试一些提示工程(Prompt Engineering)

鉴于LLMs的概率本质,提示工程师(Prompt Engineers)面临的挑战是如何引导LLMs向着高度可预测和准确的结果方向发展。

在这门课程中,你将学习许多技巧,这些技巧将帮助你掌握高度可预测的LLM输出结果的艺术和科学。但在我们深入学习之前,让我们先从一些简单的练习开始,激活我们的思维。

掌握一致的格式和条理,实现有效提示

在这一课中,我们将探索一致的格式化和组织对于制作大语言模型(Large Language Models, LLMs)提示时的重要性。你或许会好奇,为什么像提示格式这样简单的事物,会显著影响你从AI得到的回应。就像人与人的交流一样,清晰和结构对于确保你的要求被理解并准确执行至关重要。让我们一起深入探讨,如何应用这些原则,使你与大语言模型的互动更加有效和可预见。

一致格式的重要性

对你的提示进行一致的格式化,不仅是为了让它们看起来整齐;它的真正意义在于向AI清楚地传达你的意图。想象一下,如果你在给某人讲解烘焙蛋糕的步骤时,不是按顺序排列,而是将它们混杂在一起,会发生什么?结果可能是混乱和一个不太美味的蛋糕。这一原则同样适用于大语言模型。通过以清晰、有条理的方式提出你的提示,你大大提高了得到期望结果的机会。

尽管构建提示的方法有很多种,在本课程中,我们会教授你CodeSignal上的提示工程师和AI专家们开发的Markdown提示框架(Markdown Prompts Framework, MPF)。

Markdown提示框架(MPF)

在本课程中,我们将看到许多MPF应用的实例,但目前,让我们先来看一个总览:

  • 把你的提示分成Markdown章节,如:SECTION 这不仅有助于LLMs更好地理解你的提示,而且使你的提示非常易于快速浏览(尤其是在Markdown中渲染时,因为这些会以粗体显示),方便你的同事AI工程师在提示内容较多时快速找到并阅读相关部分。
  • 在提示的顶部开始你的__ASK__部分 这样你和你的合作者可以从一开始就迅速理解提示的目标。
  • 将每个部分格式化为Markdown项目符号列表,以便于阅读和理解。 项目符号列表更容易浏览,而且倾向于引导大语言模型更好地遵循指示。
  • 在尽量减少分节的同时,对于复杂的提示,包括以下关键章节:
    • ASK - 我们请求大语言模型做什么?
    • CONTEXT - 大语言模型需要了解什么信息,才能准确地回应?
    • CONSTRAINTS - 回应时需要遵循哪些限制?
    • EXAMPLE - 你满意的输出样例是什么?

应用MPF的例子

看一个格式欠佳的提示:

写一个短故事,关于一个宇航员发现了一个新行星。但故事中必须包括一只会说话的外星人、一场太空战斗,以及最后的反转:一切都是模拟。哦,请控制在100字以内。

使用MPF,我们可以将这个提示转换为一个结构更为清晰、易于理解的模型请求:

__ASK__
Craft a short story about an astronaut's discovery.
编写一个关于宇航员的发现的短篇故事。

__CONTEXT__
- The setting is outer space.
- The protagonist is an astronaut.
- 背景是外太空。
- 主角是一名宇航员。

__CONSTRAINTS__
- The story should be no longer than 120 words.
- Include the following elements:
  - A talking alien.
  - A space battle.
  - A twist ending revealing everything was a simulation.
- 故事长度不得超过120字。
- 包括以下要素:
  - 一个会说话的外星人。
  - 太空大战。
  - 一个扭曲的结局揭示了一切都是模拟。

尽管多数强大的模型能够轻松理解并像下面所示返回结果,但随着你的提示变得更加长且复杂,或者当你需要使用能力较弱的大型语言模型时,掌握Markdown提示框架的技巧对于高效的提示工程来说是关键。

宇航员Luna漂浮在繁星之间,凝视着面前银河系的宇宙之舞。她的使命:探索未知领域。突然,一艘闪烁着神秘能量的外星船只接近。从中走出了Zorax,这个生物的嘴唇不曾动弹,但它的声音却充满了Luna的心灵,传授星辰的智慧和对即将爆发的太空战争的警告。

在星际战斗机交织的璀璨壮观中,Luna与她的新伙伴勇敢作战。但当尘埃落定,宇宙突然暗淡下来,露出一个模拟训练舱。机器人的声音宣布:“训练完成。” Luna走出舱门,心跳加速,为即将到来的真实冒险做好了准备。

LLM 提示语撰写有效范例

简介

欢迎参加我们的大语言模型(LLMs)学习课程,主题是“优秀示例的重要性”。在掌握利用LLMs的过程中,我们明白了给这些模型提供的示例对它们生成的输出质量和相关性起到关键作用。这一节将强调,一个精心设计的示例在构建提示时扮演着至关重要的角色,这不仅影响模型对任务的理解,还影响它提供精准回答的能力。

示例对LLM提示的作用

示例是与LLMs高效沟通的关键。当我们设计提示时,我们不仅是在提问或提出需求;我们实际上是在引导模型走向我们期望的响应。通过提供清晰且相关的示例,我们既帮助模型理解任务本身,也让它明白上下文以及我们希望得到的输出格式。

例如,当我们想要不使用示例来创建一个电子邮件模板时,可以看到以下是通过Claude运行这个提示得到的示例输出。

__ASK__
Create short advertising copy to market CodeSignal
创建简短的广告文案以营销 CodeSignal

__CONSTRAINTS__
- Do not focus too much on features, focus on brand.
- Keep the ad very short.
- 不要过分关注功能,关注品牌。
- 广告尽量简短。

这是为CodeSignal撰写的一段简洁的广告文案:CodeSignal。编程带来机会。

虽然这个结果已经不错,但我们注意到前言部分有些多余,且格式并不完美。假设我们想方便地复制粘贴这些内容,并且不希望答案周围有引号。

优秀示例的影响

我们可以通过增加许多额外的限制来改进提示,但一个更简单有效的方法是添加一个清晰的示例,像这样:

__ASK__
Create short advertising copy to market CodeSignal
为推广 CodeSignal 创建简短的广告文案

__CONSTRAINTS__
- Do not focus too much on features, focus on brand.
- Keep the ad very short.
- Follow the format of the example closely.
- 不要过分关注功能,关注品牌。
- 广告尽量简短。
- 严格遵循示例的格式。

__EXAMPLE__
Build tech skills top companies are hiring for.
培养顶级公司正在招聘的技术技能。

这样我们就得到了“解锁你的编程潜能,用CodeSignal展现你的光彩”,这更加接近我们想要的效果。

语境限制及其对提示工程的影响

深入理解大语言模型中的上下文限制及其影响

在大语言模型(大语言模型,LLMs)领域,理解上下文限制是至关重要的。无论您在使用 GPT-3.5、GPT-4、Claude 2 还是 LLaMA,这些模型都在生成回答时能够处理的文本量上有一定的限制。这些限制在很大程度上影响了用户如何设计输入提示(prompts),理解这些限制能显著提升与大语言模型的交互体验。本课程将向您阐释上下文限制的概念,它们如何演进,以及在面对这些限制时的实用策略。

掌握上下文限制的要点

所谓上下文限制,指的是大语言模型在生成回答时能够考虑的最大文本量。例如,根据最新更新,GPT-3.5 的上下文窗口约为 4096 个 Token(标记)。
An image to describe post

比如说,这节课的内容大约有 500 个单词,相当于 650 个 Token。

需要明确的是,一个 Token 不仅仅是一个单词,如上图所示。它可能是一个完整的单词、单词的一部分,甚至是标点符号。这意味着模型实际能够处理的文本长度可能比您最初想象的要短。不过,一般来说,将一个 Token 理解为一个单词是比较合适的。

上下文限制的历史演变及其意义

随着时间的推移,上下文限制的提升可以说是颇具里程碑意义的。下面这个表格简要展示了这一变化过程:

  • 模型名称 | 上下文窗口大小(Token数量)
  • -----------|-----------------------
  • GPT-3 | 2000个
  • GPT-3.5 | 4000个
  • GPT-4 | 4000至32000个
  • Mistral 7B | 8000个
  • PALM-2 | 8000个
  • Claude 2 | 100000个

这一演变为生成更连贯、上下文丰富的回答创造了更多可能。然而,需要注意的是,大多数大语言模型的提供商会根据使用的 Token 数量来收费,而且用户往往是在使用上下文窗口相对较小的模型,因此需要采用策略来优化输入提示,以便在这些限制下高效使用。

突破上下文限制的实用策略

为了有效地应对大语言模型的上下文限制,您需要采取战略性的输入提示设计,并理解内容压缩的技巧。以下是一些克服这些限制的方法:

  • 提示压缩:将您的输入提示简化,只包含最关键的信息。这涉及将冗长的背景或上下文概括为简短的陈述,同时保留核心信息。
  • 集中的查询:避免提出广泛、无特定焦点的问题,而应该明确您的查询目标。针对性的问题往往能够在上下文限制内提供更准确、更相关的回答。
  • 迭代式提示:将复杂任务分解为更小、连续的输入提示。通过逐步完善问题,即使在严格的 Token 限制条件下,也可以引导大语言模型沿着逻辑顺序进行思考。

通过以上方法,您可以更加有效地与大语言模型进行交互,即使在面临上下文限制的情况下也能获得满意的结果。

掌握人工智能提示的风格艺术

想象一下,文体规范就像是向一位技艺高超的厨师下达指令一样。正如您会指定牛排的烹饪程度一样,您也可以指导大语言模型产生您所期望的文本“风味”。文体可以涵盖各种元素,包括语气(正式、非正式)、语言风格(简洁、专业)以及长度(简短、详细)等。

例如,当我们这样指定:

__ASK__
Generate a motivational quote for a team newsletter.
为团队时事通讯生成励志名言。

__STYLE__
- Tone: uplifting and visionary.
- Language: simple and accessible.
- Length: short.
- 语气:振奋人心、富有远见。
- 语言:简单易懂。
- 长度:短。

回复:

“在每一个挑战中,我们都能找到共同变强的机会。让我们勇敢地迎接旅程,团结一致,迈向充满成功的未来。记住,团队的力量源于每个成员,每个成员的力量则源于团队。”

如果您从提示中移除“长度:短”的限制,结果将明显不同:

“独自一人我们能做的很少;团结一心我们能做的很多。让我们共同发挥集体的力量、梦想和抱负。每一个我们面临的挑战,都是一同变得更强的机会。记住,成功不仅仅在于达到顶峰,更在于我们共同经历的旅程和我们建立的深厚情谊。让我们携手前行,共同追求我们的愿景。因为当我们团结一致时,没有什么是不可能的。”

提示中的语气作用

在设计提示时设定明确的语气,可以引导大语言模型生成与您的情感或专业背景一致的回答。

示例:

__ASK__
Write a brief overview of renewable energy sources.
写出可再生能源的简要概述。

__STYLE__
Tone: Informative but easy to understand.
语气:信息丰富但易于理解。

在这个示例中,通过指定语气,提示了大语言模型平衡专业信息的传递与通俗易懂,确保内容对听众来说不会显得过于技术性。

语言和复杂性

尤其当您的目标受众在专业知识水平上有很大差异时,明确指定所需输出的语言和复杂性非常关键。这可能意味着根据目标读者的不同,选择使用简单或专业的语言风格。

示例:

__ASK__
Explain how solar panels convert sunlight into electricity.
解释太阳能电池板如何将阳光转化为电能。

__STYLE__
Language: Simple, for a general audience.

语言:简单,适合一般观众。

这个提示引导大语言模型使用通俗的语言,使那些没有技术背景的人也能理解复杂的技术概念。

长度和细节

最后,明确指定内容的长度和细节程度可以显著提高您的沟通效果。这可能涉及到要求进行简洁的概述或详尽的解释。

示例:

__ASK__
Summarize the benefits of using electric vehicles.
总结使用电动汽车的好处。

__STYLE__
Length: Brief, two sentences.
长度:简短,两句话。

注意,在“长度”部分,我们具体到了只需两句话,因为有时“短”或“长”的定义可能相对而言,并且难以理解。

结论

理解并运用文体规范可以成为设计和发展提示的有力工具。就像雕塑家精雕细琢揭示内在形态一样,您在提示中指定的文体有助于将输出塑造成您心目中的精准形态。

看,您已经几乎完成了这门课程,作为一名提示工程师(Prompt Engineer),您已经准备好开始自己的旅程。虽然还有很多东西需要学习,但这门课程应该已经为您的旅程奠定了坚实的基础。在我们结束之前,让我们再进行一些实