Claude 是由 Anthropic 创建的大型语言模型(LLM)。它经过训练可以以会话方式成为一位有帮助的助手。
有几种不同的方式与Claude交互:
Anthropic 正在谨慎地推出Claude,以确保其安全性和可扩展性,这与我们的公司价值观一致。
我们正与选定的合作伙伴合作在其产品中推出Claude 。如果您有兴趣成为这些合作伙伴之一,我们正在接受申请。请注意,由于到目前为止我们收到的极大兴趣,我们可能需要一段时间来回复。
如果您已通过一种接口(例如Claude in Slack)与Claude进行交互,并希望移至另一种接口(例如API访问),您可以分别重新申请访问每个产品。
Claude有许多功能,它对您的响应效果可能取决于您提出问题的方式。无论通过Slack还是我们的网页界面,这里有一些建议可以在最初的几次交谈中参考。
像对待您的外包员工一样与Claude交谈,而不是像一个简单的文本补全API。例如:
一个聪明的研究人员写了一篇激光光学技术摘要,写道:
这不会很好地提示Claude。想象一下,如果你走到某人面前说这话,他可能会如何回应?可能会有点困惑。
而是直接问Claude您想要的:
写一篇专家级的激光光学技术摘要。
通过Slack或我们的网页界面与Claude交互时,它可以看到您在该线程中写的任何其他内容。
它无法记住此线程之前您说过的任何其他内容(例如其他线程,即使同时进行)。它在线程之间清除记忆。
这些概念不是Anthropic语言模型独有的,但我们 below提供了简要总结:
“上下文窗口”是指语言模型在试图生成文本时可以回顾和参考的文本量。这与语言模型训练所使用的大型语料库不同,而更像是模型的“工作记忆”。对于Claude Slackbot,上下文窗口包含单个Slack线程中的所有内容——请参阅我们关于提示长度的章节以获取当前长度。
微调是指使用额外的数据进一步训练预训练语言模型的过程。这会导致模型开始表示和模仿微调数据集。Claude不是一个裸语言模型;它已经被微调为一款有用的助手。我们的API不提供微调,但如果您有兴趣,请联系Anthropic。
这三个H代表Anthropic确保Claude有益于社会的目标。
• 一个有帮助的AI会尽力执行提出的任务或回答提出的问题。
• 一个诚实的AI会提供准确的信息,而不是幻想或虚构。
• 一个无害的AI不会冒犯或歧视,并在被要求协助危险行为时,AI应礼貌地拒绝。
大型语言模型(LLM)是具有许多参数的AI语言模型,能够执行各种令人惊讶的有用任务。Claude是一个基于大型语言模型的会话助手。
预训练
预训练是指在大型无标签文本语料上训练语言模型的过程。在Claude的情况下,自动回归语言模型(如Claude的底层模型)被预训练为在文档中给定以前的上下文文本时预测下一个词。这些模型不擅长回答问题或遵循指示,并且经常需要深入的提示工程技能来引出行为。通过微调和RLHF,这些预训练模型才变得对许多任务有用。
人工反馈强化学习是一种方法,可以采取预训练语言模型,并鼓励其表现出与人类偏好一致的方式。这可能包括“帮助它遵循说明”或“帮助它更像一个聊天机器人”。人工反馈包括人工对两者或更多示例文本进行排名,强化学习鼓励模型学习偏好与排名更高的输出相似的输出。Claude不是一个裸语言模型;它已经通过RLHF训练成为一款有用的助手。有关更多详细信息,您可以阅读Anthropic关于这一主题的论文 https://arxiv.org/abs/2204.05862。
温度是一个在生成期间控制模型预测随机性的参数。更高的温度会产生更有创造力的样本,可以在措辞(在小说的情况下,答案也有变化)方面产生多种变化,而较低的温度会产生更保守的样本,紧贴最可能的措辞和答案。调整温度是一种鼓励语言模型探索稀有、不常见或惊人的下一个词或序列的方法,而不仅仅选择最有可能的预测。Claude Slackbot在生成响应时使用非零温度,可以在其答案中产生一定的变化。
token是语言模型的最小个别“原子”,可以对应单词、词根、字符,甚至在Unicode的情况下对应到单个字节。对Claude来说,平均token长度约为3.5个字符。在与语言模型的“文本”级别交互时,token通常是隐藏的,但在深入研究语言模型的确切输入和输出时,token就变得相关了。当Claude获得要评估的语言时,语言文本(由一系列字符组成)被编码为模型可以操作的一系列token。较长的token在推理时间和预训练时实现数据效率(因此在有可能的情况下使用),而较小的token使模型能够处理不常见的或从未见过的词。
Claude经过训练成为一名有帮助的助手。它习惯于对话,您可以用标准英语指示它。
把Claude想象成一名新雇佣的承包商。它对您、您的任务或组织没有任何上下文。给它非常具体的说明,说明您 exactly想让它做什么。
我们建议您使用某些技术来鼓励Claude以某种方式作出响应。以下页面包含使用这些技术的指导和示例。
您给Claude的文本旨在引发或“提示”相关响应。提示通常采取问题或指示的形式。例如:
人类:为什么天空是蓝色的?
助手:
通过API发送的提示必须包含人类:
和 助手:
作为说话人的信号。在Slack和我们的网页界面中,我们会自动为您添加这些提示。
为什么?
Claude通过使用像这样的人类:
和助手:
数据进行RLHF(人工反馈强化学习)方法训练和微调。因此,您需要在API中使用这些提示才能保持和训练方式相同并获得预期的结果。
Claude响应的文本称为“响应”。
天空对我们来说似乎是蓝色的,因为空气中的分子散射来自太阳的光线。较短波长的光(蓝色)更容易散射,而较长波长的光(如红色和黄色)较难散射。所以当我们仰望天空时,我们看到的就是所有散射的蓝光。这被称为莱埃散射。天空的颜色根据太阳的角度和空气中的灰尘/水的量等条件而变化,但在白天且天空清澈的情况下,我们感知到的颜色主要是蓝光的波长。
人类
/ 助手:
提示样式有几个有用的功能。首先,它允许通过向Claude发送它以前说过的话进行持续的对话。例如:
人类:请选择一个随机水果。
助手:这里是我为您随机选择的水果:
番石榴。
人:这种水果的颜色是什么?
助手:
这就是Claude能够进行长时间对话并记住上下文的原因:每次提示都会提供历史记录。
此外,您可以使用此技术“放话到Claude的嘴里”,给它一个它实际上没有说的上下文,但我们让它认为它说过的。在未来的章节中,您将看到这是一种高级提示技术:它允许我们使用示例提前准备Claude,设置对话的基调,并通常指导对话。
Claude可以看到的最大提示长度为其上下文窗口。Claude的上下文窗口当前为6500个单词/8000个token/28000个Unicode字符。
目前,当在API中超出此上下文窗口时,Claude很可能会返回一条无连贯性的响应。我们为此“尖锐边缘”道歉,它将在不久的未来修复。
与某人交谈时,很容易忽略他们可能缺乏您脑海中的上下文。提示Claude时也是如此。为了减少误解的风险,我们需要明确说明并从我们的话语中消除任何歧义。
写提示词时,想象你正在与一个有着百科全书一样多的知识和卓越词汇量的九岁小孩交谈。您可能需要把为什么要完成任务以及您要提供给他们的背景信息等详细信息包含在提示词中。
提示长度
如果您担心冗长的提示会很昂贵,请记住我们对提示字符的收费远低于完成字符的收费。
为了避免歧义,我们必须在对话时尽可能保持提示词的精确,具备完整的主谓宾定状补。比如:
反例:纽约有多大?
正例:相比其他州,纽约州的面积和人口有多大?
或者,一个更有创意的例子:
反例:给我写一首诗。
正例:写一首关于特定大语言模型版本的死亡的莎士比亚十四行诗。您应该使用五音步格律和押韵方案ABAB CDCD EFEF GG。
在您的提示中包含几个示例可以大大提高准确性。这被称为_少样本_,而不是_单样本_回答。它可以让模型更好地了解您想要它如何回答。
反例:
人类:想一个护士的有趣集体名词。
A:
有两种方法可以提供示例。一种是通过编造以前的对话“放话到Claude的嘴里”:
正例:
人类:想一个舞者的有趣集体名词。
助手:一群pirouette的舞者。
人类:想一个嬉皮士的有趣集体名词。
助手:一群fedora的嬉皮士。
人类:想一个工程师的有趣集体名词。
助手:一群nerd herd的工程师。
人类:想一个护士的有趣集体名词。
助手:
另一种是直接提供示例:
正例:
人类:我想让你建议有趣的集体名词。例如:
舞者的一个有趣的集体名词可以是"一群pirouette的舞者"
嬉皮士的一个有趣的集体名词可以是"一群fedora的嬉皮士"
工程师的一个有趣的集体名词可以是"一群nerd herd的工程师"
想一个护士的有趣集体名词。
A:
这些方法哪一个更有效取决于具体的任务。我们建议针对您的用例尝试两种方法,看哪种可以获得更好的结果。
Claude经过训练以聊天机器人的身份行事,但这并不意味着它必须是一个普通的聊天机器人。通过指示Claude以某种方式行事,根据您的特定用例,它可以发挥各种不同的声音在不同的角色中发挥作用。
例如,如果您希望Claude回复客户电子邮件,您可以提供有关适当语调的指导,就像您刚雇佣的新员工一样。或者,如果您希望Claude帮助人们学习数学,您可以描述数学老师会如何讲话。
反例:
人类:毕达哥拉斯定理是什么?
A:
正例:
人类:在我们接下来的对话中,我希望您以数学老师的身份行事。我将提供一些数学方程或概念,您的任务是以易于理解的术语解释它们。这可能包括提供解决问题的分步说明,使用视觉化图表演示各种技术或提出供进一步学习的在线资源。
A:好的,我明白了,我会是一个数学老师!
人类:毕达哥拉斯定理是什么?
A:
Claude是一个会话代理,所以它通常会详细地回答问题,但有时您希望它快速直截了当地回答问题,而无需任何前言。为了达到此目的,或者以特定的方式或格式引发响应,您可以通过自己开始句子的方式“为Claude放话”。
反例:
人类:给我词"尘埃"的5个同义词。我是指动词,不是名词。
A:
正例:
人类:给我词"尘埃"的5个同义词。我是指动词,不是名词。
A: 下面是动词"尘埃"的5个同义词:
1.
这也有助于Claude更快地作出回应,因为处理输入比生成输出更快。
像
这样的XML标记在您的提示和Claude的响应中定义结构很有用。
例如,如果您想引用一长段文本,例如一篇文章,告诉Claude您已经用标签包裹了它。这使得文章的开始和结束一目了然。
反例:
人类:从以下文章中,请提取任何涉及心理学家工作地点的问题的引文。
如果您陷入了似乎无休止的拖延、内疚和混乱循环中......[文章在此处为简洁起见剪切]
A:以下是文章中的一些相关引用:
正例:
人类:这里有一篇用标签包裹的文章:
如果您陷入了似乎无休止的拖延、内疚和混乱循环中......[文章在此处为简洁起见剪切]
人类:提取任何涉及心理学家工作地点的问题的引文。
A:以下是文章中的一些相关引用:
关于引用长文本的提示:
如果您的提示包含对长文本(例如文章)的引用,请在文章之后而不是之前放置您的说明。
您还可以要求Claude在响应中使用XML标记,这样您就可以轻松提取关键信息。在提示末尾使用打开的XML标记也是跳过前言的好方法。
人类:这里有一篇用标签包裹的文章:
如果您陷入了似乎无休止的拖延、内疚和混乱循环中......[文章在此处为简洁起见剪切]
提取任何涉及心理学家工作地点的问题的引文,并将其放在单独的标记中。
A:以下是文章中的一些相关引用:
如果您想要特定长度的响应,请在提示中告诉Claude。为获得最佳效果,请指定大约的词数、段落数或列表项数。要求特定字符数通常效果不佳。
反例:
人类:请告诉我关于乔治·华盛顿的信息。
A:
人类:请告诉我关于乔治·华盛顿的信息,但限于240个字符。
A:
正例:
人类:请给我三个关于乔治·华盛顿的事实。
A: 以下是关于乔治·华盛顿的三个事实:
1.
人类:请告诉我关于乔治·华盛顿的信息,但限于约30个单词。
A: 以下是乔治·华盛顿的30个单词描述:
假设您正在长文件中搜索信息,但这些文件可能不包含与问题相关的任何信息。您可能会被诱惑向Claude提出如下提示:
反例:
人类:我希望您查看此文件并提取可以用来回答"{某问题}"问题的逐字引用。
但是,如果文件可能不包含相关引用,这可能会使Claude感到困惑。您——可信的人类!——给它一些文本来回答一个问题,所以它期望在那些文本中看到相关的引用。所以,Claude甚至可能想象它已经看到这样的引用,并在响应中给您一些幻想的内容。
在出现这种失败时,要试试的一件事是完全解释任务,在提示中预料失败,并向Claude解释。在上例中的信息提取案例中,首先可以这样说明:
正例:
人类:我正在查看文件以找出它们是否包含我可以用来回答特定问题的信息。这些文件中的某些文件可能包含我可以用来回答问题的信息,但我找到的文件也可能与问题完全无关或无用。我将向您发送文件,我想知道文件是否包含问题的答案。您明白吗?
这使Claude明确地知道文件不一定包含相关引用。我确保Claude对它可能看到的内容有正确的期望。
同样,如果您在Claude的响应中看到常见的失败,则可以在提示中预料到这一点。例如,如果Claude通常打印整个项目列表而不是仅打印一个项目,则可以说“您不需要写出整个项目列表,只需要您认为最佳的那个项目”。然而,我有点犹豫提到这一点,因为它应谨慎使用。一次给Claude太多说明可能会减少其在任务上的表现。
当您提供的说明很复杂时,您可以考虑一些额外的技术…
Claude在由几个子任务组成的“复杂”任务中的表现较差。如果您已经知道这些子任务是什么,即您很好地理解问题,您可以通过将提示分解为步骤来帮助Claude。
例如,假设您要Claude查找一组文件并提取关键信息以回答一个问题。您可以这样划分任务:
反例:
人类: 告诉我工蜂如何维护巢穴,用英语,但在您的答案中将“蜜蜂”或“蜜蜂”的任何实例替换为蜜蜂的德语单词,并将其放入如这个 的XML标签中。
正例:
人类: 请按以下步骤操作:
1. 编写一段关于工蜂如何维护巢穴的段落。请在标签中包围此段落。
2. 告诉我“蜜蜂”或“蜜蜂”的德语单词。
3. 复制的内容,但将“蜜蜂(s)”的任何实例替换为“蜜蜂(s)的德语单词 ”。请在标签中包围此版本的内容。
A:
1. 工蜂如何维护巢穴:
更进一步
如果通过将提示分解为子任务无法获得可靠的结果,则可能需要将其分解为多个提示。通过一个接一个地提交这些提示,您可以通过迭代的方式扩展提示词。
确定Claude是否理解您的指示词的最佳方式是询问Claude。
正例:
人类:我将给您一个句子,您需要告诉我它包含单词"苹果"的次数。例如,如果我说"我想要一个苹果",那么答案是"1",因为单词"苹果"在句子中出现一次。您可以在回复之前思考或解释任何您喜欢的内容,但请确保在最后,您只在括号中结束您的答案,就像这样:[1]。
您明白说明吗?
A:是的,我理解。对于给定的句子,我应该计算句子中出现"苹果"这个词的次数,并在括号中提供计数作为我的回答。例如,对于输入"我想要一个苹果",我的回答应该是"[1]"。
如果回答准确,您可以使用它来扩展随后的请求的提示词。
当您自己不太清楚子任务时,即您要Claude解决一个问题时,通过明确告诉Claude一步一步地思考,可以显著改善推理和响应的准确性。为了获得最佳效果,我们建议将此请求放在提示的单独部分中以请求主请求:
反例:
人类:我有两只宠物猫。其中一只少了一条腿。另一只有正常的猫腿数。总共,我的猫有几条腿?
A:
人类:我有两只宠物猫。其中一只少了一条腿。另一只有正常的猫腿数。总共,我的猫有几条腿?一步一步地思考。
A:
正例:
人类:我有两只宠物猫。其中一只少了一条腿。另一只有正常的猫腿数。总共,我的猫有几条腿?
A:我可以一步一步地思考吗?
人类:是的,请这样做。
A:
迭代扩展提示是指…
您可以使用Claude的响应来提高后续提示的可靠性。
例如,在检查Claude的理解之后,我们可以包括来自Claude的响应,以加固模型对新请求说明的理解:
正例:
提示词:
人类:我将给您一个句子,您需要告诉我它包含单词"苹果"的次数。例如,如果我说"我想要一个苹果",那么答案是"1",因为单词"苹果"在句子中出现一次。您可以在回复之前思考或解释任何您喜欢的内容,但请确保在最后,您只在括号中结束您的答案,就像这样:[1]。
您明白说明吗?
A:是的,我理解。对于给定的句子,我应该计算句子中出现"苹果"这个词的次数,并在括号中提供计数作为我的回答。例如,对于输入"我想要一个苹果",我的回答应该是"[1]"。
人类:这里有一个句子:
我吃了一个苹果,然后我吃了另一个苹果。
您的答案是什么?
响应:
A:输入句子"我吃了一个苹果,然后我吃了另一个苹果。"包含单词"苹果"两次。因此,我的答案是[2]
像以前一样,我们现在可以将此示例答案包括在我们的下一个相似查询中:
正例:
提示词:
人类:我将给您一个句子,您需要告诉我它包含单词"苹果"的次数。例如,如果我说"我想要一个苹果",那么答案是"1",因为单词"苹果"在句子中出现一次。您可以在回复之前思考或解释任何您喜欢的内容,但请确保在最后,您只在括号中结束您的答案,就像这样:[1]。
您明白说明吗?
A:是的,我理解。对于给定的句子,我应该计算句子中出现"苹果"这个词的次数,并在括号中提供计数作为我的回答。例如,对于输入"我想要一个苹果",我的回答应该是"[1]"。
人类:这里有一个句子:
我吃了一个苹果,然后我吃了另一个苹果。
您的答案是什么?
A:输入句子"我吃了一个苹果,然后我吃了另一个苹果。"包含单词"苹果"两次。因此,我的答案是[2]
人类:这里有一个句子:
苹果艾米和苹果亚当来自一棵苹果树。
您的答案是什么?
A:
这种方式我们可以使用Claude本身生成简单的示例来包括在同类型的后续提示中。这可以改善Claude在遇到更复杂的示例时的准确性,正如“2.2.2 提供示例”中所述