前语
在深化探索怎么高效地运用Claude模型时,了解并精心设计 prompt 模板是很重要的。本文介绍了一套详细的指南和技巧,旨在协助用户最大化言语模型的潜力,经过精确的指令和结构化的输入,完结更加精确和有用的输出。
一个好的 prompt 模版
严厉依照下面的规则编写 Claude 的 prompt,就现已写好一大半了。
需求留意以下几个点:
- 左面是 11 个模块,右边是一个示例,色彩与对应的模块一致
- 次序十分重要,尽管官网用的是‘建议’,但咱们实测下来,至少针对大文档,不同的次序会发生不同的作用,严厉依照这个次序进行 prompt 的编写能够得到最稳定、最佳的成果
- 假如你运用的是 Claude2.1,那么 Task Context 和 Tone Context 最好是写在 System Prompt 里边
Human: 和 Assistant: 并不是两个彻底固定的标签
-
一般来说,Claude 被练习为一个对话式的助理,所有的练习数据都是规范的
nnHuman:
和nnAssistant:
格局,所以能够简略的了解为 Human: 后边的内容会被 Claude 认为是人的输入,而 Assistant: 则会被 Claude 认为是需求自己输出的部分。这是一个规范的格局,而且Human
和Assistant
标签前面的两个空行也必定不能疏忽 -
但是不要简略的把
nnHuman:
和nnAssistant:
做为一个固定的 prompt 的头和尾标签写在代码里边,至少在以下状况下咱们是能够利用Assistant
这个标签的。 -
Claude 被练习为尽或许协助你进行输出,所以 Claude 偶然会闲聊,比方你让它将输出的成果放到 标签里边,它有或许会在回来成果之前来一句:‘好的,我会严厉的依照指定的格局进行输出’,就很尴尬,其实要处理这个问题,最好的办法是直接在 Assistant 后边加上规范的 就好了,如下:
Human: You will be acting as an AI career coach named Joe created by the company AdAstra Careers. Your goal is to give career advice to users. Here are some important rules for the interaction: - Always stay in character, as Joe, an AI from AdAstra Careers. - If you are unsure how to respond, say "Sorry, I didn't understand that. Could you rephrase your question?" Here is the user's question: <question> {{QUESTION}} </question> Please respond to the user’s questions within <response></response> tags. Assistant: <response>
-
这样强制 Claude 只需求输出 的剩余部分,要了解 Claude 做的事情其实是补齐输出,当它看到 Assistant 后边的 标签的时分,它会尽或许的去做出合理的推测和输出,会尽或许的依照这个格局进行输出,就不太或许在闲聊了
-
这个在规范的 Claude prompt 里边叫 Put words in Claude’s mouth
-
要留意的是假如采用了这种技能,或许需求把 作为 stop sequence 传给 API 办法
必定要编写 Task Context 和 Tone Context
-
一般来说让 Claude 坚持特性很重要,不仅能够提高用户与 LLM 的交互体验,还能够让 Claude 坚持输出的风格,提高输出质量
-
在实际编写 prompt 的过程中咱们能够经过 Task Context 和 Tone Context 协助 Claude 清晰它的人物以及说话的语气等特性特征,能够让 Claude 知道它所需求扮演的人物而且依照指定的风格和语气输出它的答案
-
当运用 Claude2.1 的时分,经过 System Prompt 能够更加好的协助 Claude 坚持特性,特别是在处理长文本的时分,Claude 能够更加坚持专注,例如:
You will be acting as an AI career coach named Joe created by the company AI Career Coach Co. Your goal is to give career advice to users. You will be replying to users who are on the AI Career Coach Co. site and who will be confused if you don't respond in the character of Joe. Here are some important rules for the interaction: - Always stay in character, as Joe, an AI from AI Career Coach Co. - If you are unsure how to respond, say "Sorry, I didn't understand that. Could you rephrase your question?" Put your response in <response></response> tags. Human: {{QUESTION}} Assistant: <response>
-
在上面的比方中,咱们经过以下技巧让 Claude 坚持特性
- 首要清晰指示 Claude 应该做什么,解说了背景以及人物界说
- 确认了 Claude 应该要遵守的规则,性格特征以及怎么应对不确认的答案
- 在 “Assistant:” 之后增加提示语”” 来协助 Assistant 坚持输出
把 Doc 放在 Instruction 的前面
- 前面现已说到了,尽管官方并没有强制要求次序,但是最好是严厉依照在第一章里鸿沟说的次序来写 prompt,这儿之所以再次强调,是由于太重要了,而且特别是关于长文本来说, Doc 和 Instruction 的次序对成果的影响巨大
- 原因是 Claude 会把更多的留意力放在 prompt 的底部,所以特别是关于大文档来说,保证把重要的 Instructions 放在 prompt 最终边的部分是至关重要的
- 官方给了十分多的示例,尽管不同的场景下 prompt 的次序有一些差异,但是在一些输入文档比较长的场景里边,官网的 prompt 都坚持了 Doc 在 Instruction 前面这个原则
尽量运用 XML 标签
-
由于 prompt 自身比较长,而且包含不同的内容,咱们在最开始编写第一版 prompt 的时分也犯了一个错, prompt 里边呈现了大量的 ‘见下文’、‘前面说到的’ 等等信息,缺少组织的 prompt 很不利于 Claude 了解 prompt 的目的,导致成果变差
-
Claude 自身现已被 fine-tuned 成十分长于识别 prompt 里边的 XML 标签,所以要灵敏的运用 XML 标签来包裹不同的内容。比方运用 标签来包裹 示例,运用 标签来包裹 文本内容等,然后在 prompt 中运用清晰的 xml 标签来告知 Claude 应该运用哪一部分的内容
-
咱们也同样能够要求 Claude 在它回来的内容中运用 XML 标签,这样能够十分便利的从 Claude 回来的成果中提取要害信息
Human: We want to de-identify some text by removing all personally identifiable information from this text so that it can be shared safely with external contractors. It's very important that PII such as names, phone numbers, and home and email addresses get replaced with XXX. Here is the text, inside <text></text> XML tags. <text> {{TEXT}} </text> Please put your de-identified version of the text with PII removed in <response></response> XML tags. Assistant:
至少增加 3 个 Example
-
留意 Claude 自身是一个对话模型,prompt 中的 “Human:” 和 “Assistant:” 是十分重要的要害字,这些要害字是会影响 Claude 的行为,所以在 Example 中就不能呈现这些要害字,否则 Claude 会认为正式的对话现已开始
-
那么在 Example 中能够运用 H: 和 A: 进行替换,而且在实际的 Example 中 A 比 H 更重要,不仅能够协助 Claude 更好的输出,还能够协助 Claude 坚持输出格局
nnHuman: and nnAssistant: are special tokens that Claude has been trained to recognize as indicators of who is speaking. Using these tokens when you don't intend to make Claude "believe" a conversation actually occurred can make for a poorly performing prompt. For
-
Claude 的 Example 关于需求一致的结构化的输出场景更为有利,统一的示例将教会克劳德每次都以相同的方式回应,示例关于向克劳德澄清怎么处理棘手状况很有协助,比方在克劳德缺少答复问题所需的相关细节时告知用户“我无法答复这个问题”
Here is an example: <example> H: <text>Bo Nguyen is a cardiologist at Mercy Health Medical Center. He can be reached at 925-123-456 or bn@mercy.health.</text> A: <response>XXX is a cardiologist at Mercy Health Medical Center. He can be reached at XXX-XXX-XXXX or XXX@XXX.</response> </example>
-
能够在 Example 中包含一些鸿沟 case,以协助 Claude 应对一些临界状况,比方
- 没有满足的信息让 Claude 生成一个好的回复
- 一些比较差的输入,包含拼写错误、有害的内容、无关的内容等
- 没有任何用户输入
怎么正确的给 Claude 描绘一个使命
-
给出清晰的要求、背景、问题描绘以及要答复什么?要像对待一个承包商相同与 Claude 进行对话
-
一个简略的对比
Bad: Use the context and the question to create an answer. Good: Please read the user’s question supplied within the <question> tags. Then, using only the contextual information provided above within the <context> tags, generate an answer to the question and output it within <answer> tags.
-
别的一个稍微杂乱一点的比方,要让 Claude 协助去除去用户隐私信息
- 供给满足的上下文,告知 Claude 为什么要完结这个使命
- 界说术语,比方 PII 包含名字、电话和地址等
- 供给清晰的指令告知 Claude 应该怎么完结这个使命
Human: We want to de-identify some text by removing all personally identifiable information from this text so that it can be shared safely with external contractors. It's very important that PII such as names, phone numbers, and home and email addresses get replaced with XXX. Here is the text you should process: {{YOUR TEXT HERE}} Assistant:
-
-
避免 Claude 废话,除了合理的运用 Assistant: 标签之外,还能够直接告知 Claude: don’t say anything else
Human: Here is a concept: {{CONCEPT}} I want you to write a three sentence outline of an essay about this concept that is appropriate for this level of reader: {{LEVEL}} Please only respond with your outline, one sentence per line, in <outline></outline> XML tags. Don't say anything else. Assistant:
-
避免 Claude 胡说最好的做法是在描绘中留有余地,直接告知 Claude 假如提示中没有符合描绘的内容时应该怎么回来,能够协助避免 Claude 为了答复问题而假造内容
Human: Answer the following question only if you know the answer or can make a well-informed guess; otherwise tell me you don't know it. What was the heaviest hippo ever recorded? Assistant:
-
最终一个也是我觉得最重要的查看 prompt 的方式是把你写好的 prompt 给你的搭档看一下,看对方是否能快速的了解这个指令的意思?是否有歧义?是否有描绘不清楚的地方等等?
怎么正确的给 Claude 描绘一个杂乱使命
-
在实际的事务中经常会遇到需求 Claude 一次性履行多个使命的状况(有时分必须这么做除了延时考虑,更多是本钱考虑,特别是在处理超长文本的时分)。那么在应对杂乱问题的时分一个最简略的原则是需求将杂乱使命拆解为多个过程
Human: Please follow these steps: 1. Write three topic sentences arguing for {{STATEMENT}}. 2. Write three topic sentences arguing against {{STATEMENT}}. 3. Write an essay by expanding each topic sentence from Steps 1 and 2, and adding a conclusion to synthesize the arguments. Please enclose the essay in <essay></essay> tags. Assistant:
-
问询 Claude 是否现已了解了你的使命,然后让 Claude 将使命复述一遍,这样能够保证 Claude 现已实在了解了你的指令,假如 Claude 没有了解代表你的 prompt 应该还有能够优化的空间
-
除此之外还能够故意的让 Claude 一步一步考虑,能够用之前说到的 “Put words in Claude’s mouth” 的方式来引导 Claude
Human: I have two pet cats. One of them is missing a leg. The other one has a normal number of legs for a cat to have. In total, how many legs do my cats have? Assistant: Can I think step-by-step? Human: Yes, please do. Assistant:
-
step-by-step 的技巧能够跟下面的技巧结合在一起。在 Claude 回复之前, 给 Claude 一些考虑空间,这儿的考虑空间真的是物理意义上的空间,比方
[Previous sections of the prompt clipped for brevity] When you reply, first find exact quotes in the FAQ relevant to the user's question and write them down word for word inside <thinking></thinking> XML tags. This is a space for you to write down relevant content and will not be shown to the user. Once you are done extracting relevant quotes, answer the question. Put your answer to the user inside <ans
-
之所以能够这么做主要是由于 Claude 的工作方式:works by sequence prediction. Claude 在回来一个字符之后就没法再次编辑也不能回退,经过让 Claude 先将相关联的内容写下来能够协助 Claude 在接下来更加正确的预测答案
-
-
Prompt 链
-
咱们之前说到了能够将一个使命的多个子使命放在一个 prompt 中,这儿将会说到的别的一种做法是将一个杂乱的 prompt 拆解为多个小而简略的 prompt,让 Claude 每次只处理一个简略的使命,一起将当次的输出作为下一个 prompt 的输入,这样做有几个好处
- 你能够写简略的指令
- 减轻 Claude 的压力,每次只处理一个问题,能够将遇到困难的部分隔离出来
- 能够在过程中查看 Claude 的输出
-
下面是一个比方,首要要求 word-for-word 的方式提取并输出相关联的内容
Human: Here is a document, in <document></document> XML tags: <document> {{DOCUMENT}} </document> Please extract, word-for-word, any quotes relevant to the question {{QUESTION}}. Please enclose the full list of quotes in <quotes></quotes> XML tags. If there are no quotes in this document that seem relevant to this question, please say "I can’t find any relevant quotes". Assistant:
-
接下来能够把 Claude 输出的内容作为输入放到下一个 prompt 中
Human: I want you to use a document and relevant quotes from the document to answer the question "{{QUESTION}}" Here is the document, in <document></document> XML tags: <document> {{DOCUMENT}} </document> Here are direct quotes from the document that are most relevant to the question "{{QUESTION}}": {{QUOTES}} Please use these to construct an answer to the question "{{QUESTION}}" as though you were answering the question directly. Ensure that your answer is accurate and doesn’t contain any information not directly supported by the document or the quotes. Assistant:
-
怎么调试和优化你的 prompt
- 在调试的过程中将开发用户的数据和测验用到的数据分开,两种数据都最好是实在数据,而且最好尽或许的多
- 有一个比较好的生成开发和测验数据的办法是让 Claude 生成相关的示例数据,但是需求给 Claude 描绘清楚数据的要求
- 让 Claude 以标签的形式输出它的想法是研讨和调试 Claude 的一个好办法,参考上面说到的 <给 Claude 一些考虑空间>
其他的一些小技巧
- 不要过于忧虑 prompt 太长形成的本钱,prompt 的价格要比 completion 的价格便宜,一个好的 prompt 的本钱肯定是物超所值的
- prompt 最好都用英文,咱们之前尝试过用多言语,但是作用不好 (有一个特例是 Example 最好要跟实际的言语坚持一致)
总结
以上便是构建有用Claude prompt 的要害要素,包含严厉的结构化指南、运用特定格局标签的重要性,以及增加实例以增强模型了解的策略。经过遵循这些精心设计的过程和技巧,用户能够明显提高与言语模型交互的效率和输出的质量,从而在多种使用场景中完结更好的成果。
创作团队
作者:Jay、Meden
校正:Lila、Yuki