AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


从 0 到 1 的Prompt 教程,来自Claude 官方,不会写 prompt的看这个足够
发布日期:2024-09-18 07:05:46 浏览次数: 1574


Claude 的强大,最近得到了很多网友的验证,甚至效果上面大有超越 GPT的许多声音。

所以从优秀的 Claude 中学习,将会是一个很好的起点。

这里,Claude 的开发者们提供了一个相当详细的 Prompt Engineering 教程。

这个教程能够全面地逐步了解如何在 Claude 中设计最佳提示。

循序渐进,由浅入深,非常适合学习和收藏。

教程分为初级、中级和高级,涵盖从基本提示结构到避免幻觉和构建复杂行业用例的高级技巧,并提供了练习和示例以加深理解。

重要的是,可以自己实践体验,每部分的教程都有一个“Example Playground”,可以在这里自由地体验课程中的示例,金也可以了解更改提示后,直接看 Claude 的回答。

看完之后,能够有几个收获。

  • 掌握一个好的提示的基本结构

  • 识别常见的故障模式并学习“80/20”技术来解决它们

  • 了解 Claude 的优势和劣势

  • 为常见使用案例从头开始构建强大的 prompt

详细教程地址放在了评论区,并且包含实际案例以及练习案例

下面是几个重点,可以收藏学习。第九点给出了一个 claude prompt 的模板,适用所有的 LLM 提示词设计,直接套用即可。

1、基本的结构要掌握

基础不扎实,啥都白费,都是如此。

使用 Messages API 调用 Claude 时,至少需要以下参数,也是需要了解参数的含义。

  • model: 你打算调用的 API 模型名称。

  • max_tokens: 生成最大 token 数,Claude 在达到此最大值之前可能会停止。这个参数仅指定要生成的绝对最大 token 数,并且是一个硬性停止

  • messages: 输入消息的数组。模型经过训练,可以在用户和助手消息之间交替操作。模型会生成对话中的下一个消息。每个输入消息必须是一个具有 role 和 content 的对象。你可以指定一个用户角色的消息,或者包含多个用户和助手消息(它们必须交替出现)。第一条消息必须总是使用用户角色。

此外,还有一些可选参数

  • system: 系统提示。为什么要使用系统提示符?编写良好的系统提示可以通过多种方式提高 Claude 的表现,例如提高 Claude 遵循规则和指示的能力

  • temperature: Claude 响应的变化程度。0-1 之间。

2、清晰直接

Claude 对清晰直接的指示反应最好。

把 Claude 想象成任何其他刚接触这份工作的人。Claude 除了你从字面上告诉它之外,没有关于该做什么的背景。就像你第一次指导一个人完成一项任务一样,你越是以直截了当的方式向 Claude 解释你想要什么,Claude 的回答就会越好、越准确。

比如下面这个例子

上面是表达不清晰,下面是表达清晰。

PROMPT = "Write a haiku about robots."

上面的生成的结果已经足够好了,但可能希望 Claude 直接回答就是这首诗,而没有 “Here is a haiku” 这样的提示。

所以下面的直接在提示词上面修改。

PROMPT = "Write a haiku about robots. Skip the preamble; go straight into the poem."

3、分配角色非常重要

促使 Claude 在一个特定的角色(包括所有必要的上下文)中是很重要的,这也称为角色提示(role prompting),角色上下文越详细越好。

为 Claude 准备一个角色可以提高 Claude 在各个领域的表现,从写作到编码再到总结。这就像人类有时被告知“像__一样思考”时可以帮助。角色提示还可以改变 Claude 的回答风格、语气和方式。

4、分离数据和善用 XML 标签

通常,我们不想编写完整的 prompt,而是希望在提示模板可以在以后提交给 Claude 之前使用额外的输入数据进行修改。如果您希望 Claude 每次都执行相同的操作,这可能会派上用场,但 Claude 用于其任务的数据每次可能都不同。

想要做到这几一点,方法是将 Prompt 的固定框架与可变的用户输入分开,然后在将完整的 Prompt 发送给 Claude 之前将用户输入替换到 Prompt 中。

为什么我们要像这样分离和替换输入?提示模板简化了重复性任务。

假设您构建了一个提示结构,邀请第三方用户向提示提交内容(在本例中为他们想要生成声音的动物)。这些第三方用户不必编写,甚至不必看到完整的提示。他们所要做的就是填写变量。

比如下面这个例子

但是在替换的过程中, 有可能出现一些意外的情况,导致多输出一些无关紧要的字符。

这时候要善用 XML 标签。

XML 标记是尖括号标记,如。它们成对出现,由一个开始标签(如)组成。XML 标签用于环绕内容,如下所示:。

注意: 虽然 Claude 可以识别并使用各种分隔符和分隔符,但claude建议专门使用 XML 标记作为 Claude 的分隔符,因为 Claude 接受过专门培训,可以将 XML 标记识别为一种快速的组织机制。除了函数调用之外,没有 Claude 接受过训练的特殊 sauce XML 标记,应该使用这些标记来最大限度地提高性能。

5、格式化输出

Claude 可以通过多种方式格式化其输出

一种方法是使用 XML 标记将响应与任何其他多余的文本分开。可以要求 Claude 使用 XML 标签来使其输出更清晰、更容易被人类理解。

将输出放在 XML 标记中,允许最终用户通过编写一个简短的程序来提取 XML 标记之间的内容,从而可靠地获取诗歌,并且只获取诗歌。

还有一种方式是将第一个 XML 标记放入 assistant 轮次中

同样的方式,对 JSON 格式也适用。

看下面的两个例子。

6、Thinking Step by Step

这是一个prompt 很常用的咒语,一定要牢记。在很多场合都很受用,效果贼好

这种方式是给大模型一些思考的时间,就类似人回答问题的时候,思考后的回答,一定是准确的。

给 Claude 时间一步一步思考有时会使 Claude 更准确,尤其是对于复杂的任务。然而,只有当它大声说出来时,思考才有意义。你不能让 Claude 思考,而只输出答案 - 在这种情况下,实际上没有思考发生。

比如用第一、第二之类的阶段性动作。

让 Claude 思考可以将 Claude 的答案从错误转变为正确。在很多情况下,Claude 犯错就是这么简单!

7、Few-Shot Prompting

这种方式非常实用,是我在工作中经常用到这种方式,效果很棒,特别是格式化输出。

举例说明你希望大模型如何表现(或你希望它拒绝某些事情)对于以下方面非常有效:

  • 获得正确的答案
  • 以正确的格式获得答案

这种提示称为 “few shot prompting”。可能还会遇到短语“zero-shot”或“n-shot”或“one-shot”。“shots” 的数量是指提示中使用的示例数量

当我们提问一些问题的时候,Claude 的默认回答相当正式和机械,你可以花时间描述你想要的语气或者格式。

8、避免幻觉

幻觉问题一直都是所有大模型的最大的问题。也是最让我们头疼的问题

你可以不回答,但是别给我瞎回复,是我们在日常提问最低的原则之一。

对于 Claude 来说。

  • 一些坏消息:Claude 有时会“产生幻觉”并提出不真实或不合理的主张。
  • 好消息:可以使用一些技术来减少幻觉。

方案一:给 Claude 一个出路:告诉 Claude 它可以拒绝回答,或者只有在它确实确定知道答案的情况下才回答。

比如:PROMPT = "Who is the heaviest hippo of all time? Only answer if you know the answer with certainty."

方案二:对于一些长文本理解,先收集证据: 告诉 Claude 首先提取相关引文,然后根据这些引文得出答案。

方案三:设置温度参数(temperature) :可以通温度参数来解决。温度是衡量 0 到 1 之间的答案创造力的指标,其中 1 表示更不可预测且标准化程度较低,而 0 表示最一致。

在温度为 0 的情况下向 Claude 提问通常会在重复试验中产生一个几乎确定性的答案集(尽管不能保证完全确定性)。在温度 1(或两者之间的等级)下向 Claude 提问将产生更多可变的答案

9、独特而复杂的提示(重要)

这个很重要,结合了之前的学到的信息,总结成一套 prompt 模板,适用于大多数的 LLM 提示词设计。

一个用于复杂提示的引导式结构,并非所有提示都需要以下复杂结构的每个元素。鼓励您尝试并包含或不包含元素,看看它如何影响 Claude 的回答。通常最好先使用许多提示元素来使提示正常工作,然后再优化和精简提示。

教程中提到了很重要的一点:下面的排序对于某些元素很重要

  • 1、user角色,确保消息 API 调用始终以消息数组中的“user”角色开头。

  • 2、任务上下文,根据提示向 Claude 提供有关其应承担的角色或您希望其承担哪些目标和总体任务的背景信息。# 最好将上下文放在提示正文的早期

  • 3、语气语境,# 如果对互动很重要,请告诉应该使用什么语气,# 根据任务的不同,此元素可能不是必需的。

  • 4、详细的任务描述和规则,# 详细说明您希望 Claude 执行的具体任务,以及 Claude 可能必须遵循的任何规则。# 如果Claude没有答案或不知道,你也可以在这里给他“出局”。

  • 5、示例,提供至少一个可以模仿的理想响应示例,将其包含在 XML 标记中,一般来说,例子越多=越好。

  • 6、输入要处理的数据,如果需要处理数据,也放在 XML 标签中,非必需的元素。

  • 7、即时任务描述或请求,提醒 Claude 或准确地告诉 Claude 需要立即做什么来完成提示的任务。可以在此处添加其他变量,例如用户的问题。

  • 8、 思考,thinking step by step,对于有多个步骤的任务,最好告诉Claude 在给出答案之前一步步思考。有时,你甚至可能不得不说“在你给出答案之前......吧啦吧啦”,只是为了确保克劳德首先这样做。

  • 9、输出格式,如果希望采用特定的格式,请明确告诉 Claude 该格式是什么。根据任务的不同,此元素不是必需的。如果使用这个元素,将其放在提示的末尾比放在开头更好。

  • 10、预填 Claude 的回复, 也不是一个必须的元素,如果想预填 Claude 的回复,必须将其放在 API 调用中的“assistant”角色中。

以上就是教程的全部内容。

教程地址:https://github.com/anthropics/courses/tree/master/prompt_engineering_interactive_tutorial

最精华的部分就是第九点,按照第九点的方式写 prompt ,是能够有非常不错的效果。

End

我是大林,持续关注 AI 发展,和大家一起交流。微信(dalinvip2023),备注【公众号 AIGC】,进 AIGC 交流群一起交流。

主页:https://www.dalinaip.com/

如果文章对你有一点点 ?? 帮助,关注公众号并【星标】,可以及时收到最新 AI 信息,点赞、在看、转发给更多的朋友,后面我继续分享更多的 AI 内容。


往期推荐



又发现了一个很良心的 prompt 提示词库,简洁,有效,值得学习

总结优秀的prompt案例,学习更有效的prompt提示词工程写法,值得收藏

网上有很多的Prompt模板,这次OpenAI发布了写好Prompt的六个策略,很实用

15 种高级 RAG 技术,值得收藏!

RAG框架,都在这了!

几个常用 的 LLM Leaderboard 榜单,值得收藏

7个纯AI制作的广告视频,非常惊艳

OpenAI 直接挑战谷歌,推出 AI 搜索产品 SearchGPT,除此之外,AI 搜索产品都有哪些?

又发现了一个好用的AI浏览器插件,总结:快、准、狠

kimi 浏览器助手插件,这是首款官方插件!赶紧尝鲜

如何让大模型遵循你的结构化输出指令小技巧

公众号接入kimi,来试

几种高速下载大模型的方法 

Kimi 太慢了,200万字上下文还没开放,不等了,先用下kimi的插件


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询