前言
在深入探索如何高效地使用Claude模型时,理解并精心设计 prompt 模板是很重要的。本文介绍了一套详细的指南和技巧,旨在帮助用户最大化语言模型的潜力,通过精确的指令和结构化的输入,实现更加准确和有用的输出。
一个好的 prompt 模版
严格按照下面的规则编写 Claude 的 prompt,就已经写好一大半了。
需要注意以下几个点:
- 左边是 11 个模块,右边是一个示例,颜色与对应的模块一致
- 顺序非常重要,虽然官网用的是‘建议’,但我们实测下来,至少针对大文档,不同的顺序会产生不同的效果,严格按照这个顺序进行 prompt 的编写能够得到最稳定、最佳的结果
- 如果你使用的是 Claude2.1,那么 Task Context 和 Tone Context 最好是写在 System Prompt 里面
Human: 和 Assistant: 并不是两个完全固定的标签
-
一般来说,Claude 被训练为一个对话式的助理,所有的训练数据都是标准的
\n\nHuman:
和\n\nAssistant:
格式,所以可以简单的理解为 Human: 后面的内容会被 Claude 认为是人的输入,而 Assistant: 则会被 Claude 认为是需要自己输出的部分。这是一个标准的格式,并且Human
和Assistant
标签前面的两个空行也一定不能忽略 -
但是不要简单的把
\n\nHuman:
和\n\nAssistant:
做为一个固定的 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 知道它所需要扮演的角色并且按照指定的风格和语气输