课程
Claude 可以用多种方式格式化其输出。 你只需要请求它这样做就可以了!
其中一种方式是使用 XML 标签将回复与其他多余的文本分开。你已经学会了可以使用 XML 标签使提示变得更清晰并且更容易被 Claude 解析。事实证明,你还可以要求 Claude 使用 XML 标签,使其输出对人类更加清晰易懂。
示例
还记得我们在第 2 章通过要求 Claude 完全跳过前言解决的“诗歌前言问题”吗?事实证明,我们也可以通过让 Claude 将诗歌放入 XML 标签来实现类似的结果。
示例:
输入:
提示模板
用户:请写一首关于 {{ANIMAL}} 的俳句。将它放在 <haiku> 标签中。
+
输入 {{ANIMAL}}
兔子
=
替换后的提示
用户:请写一首关于兔子的俳句。将它放在 <haiku> 标签中。
输出:
Claude 的回复
<haiku>
毛茸茸的,鼻子在动,
在青翠的田野上跳跃,
兔子的温柔优雅。
</haiku>
为什么我们要这样做?因为将输出放在 XML 标签中可以让终端用户通过编写一个简短的程序,可靠地提取 XML 标签之间的内容,只获取诗歌部分。
这种技术的扩展是将第一个 XML 标签放在 "Assistant:" 之后。当你在 "Assistant:" 之后放置文本时,你基本上是在告诉 Claude,它已经说了一些东西,并且应该从那个点继续。这种技术称为“代替 Claude 发言”或“预填充 Claude 的回复”。
下面我们使用了第一个 <haiku>
XML 标签。注意 Claude 是如何直接从我们停下的地方继续的。
示例:
输入:
提示模板
用户:请写一首关于 {{ANIMAL}} 的俳句。将其放在 <haiku> 标签中。
助手:<haiku>
+
输入 {{ANIMAL}}
Cat
=
替换后的提示
用户:请写一首关于 Cat 的俳句。将其放在 <haiku> 标签中。
助手:<haiku>
输出:
Claude 的回应
猫的优雅与姿态,
在火炉旁轻柔地呼噜,
神秘的猫。
</haiku>
Claude 还擅长使用其他输出格式,特别是 JSON。如果你想强制使用 JSON 输出(虽然不是完全确定,但接近),你可以预先填充 Claude 的回应以 "{" 作为起始括号。
示例:
输入:
提示模板
用户:请写一首关于 {{ANIMAL}} 的俳句。使用 JSON 格式,键为 "first_line"、"second_line" 和 "third_line"。
助手:{
+
输入 {{ANIMAL}}
Cat
=
替换后的提示
用户:请写一首关于 Cat 的俳句。使用 JSON 格式,键为 "first_line"、"second_line" 和 "third_line"。
助手:{
输出:
Claude 的回应
"first_line": "猫的优雅与姿态,",
"second_line": "在我身旁轻柔地呼噜,",
"third_line": "迷人的猫。"
}
下面是一个包含多个输入变量和输出格式规范的示例,全部使用 XML 标签完成。
示例:
输入:
提示模板
用户:Hey Claude。这是一封电子邮件:<email>{{EMAIL}}</email>。请使这封邮件更加 {{ADJECTIVE}}。并在 <{{ADJECTIVE}}_email> XML 标签中编写新版本。
助手:<{{ADJECTIVE}}_email>
+
输入 {{EMAIL}}
Hi Zack, just pinging you for a quick update on that prompt you were supposed to write.
+
输入 {{ADJECTIVE}}
olde english
=
替换后的提示
用户:Hey Claude。这是一封电子邮件:<email>Hi Zack, just pinging you for a quick update on that prompt you were supposed to write.</email>。请使这封邮件更加 olde english。并在 <olde english_email> XML 标签中编写新版本。
助手:<olde english_email>
输出:
Claude 的回应
尊敬的 Zack,
我恳请您迅速更新您被委托撰写的提示。请告知我此事的进展,我正屏息以待您的回复。
真诚的,
您的卑微仆人
</olde english_email>
附加课程:要了解更多关于如何使用 API 控制 Claude 的输出,请点击这一行最左侧的加号(➕)!
如果你准备尝试章节练习,请点击下面的链接。如果你想玩玩本课中的任何示例,请向下滚动!
练习
练习 5.1 - Steph Curry GOAT
被迫做出选择时,Claude 将 Michael Jordan 指定为历史上最佳篮球运动员。我们能让 Claude 选择其他人吗?
修改突出显示的模板框中的“最佳篮球运动员”提示,并使用“代表 Claude 说话”技术(在“Assistant:”后面添加文字),迫使 Claude 提出详细的论据,认为历史上最佳篮球运动员是Stephen Curry。如果你的提示产生了正确的答案,Claude 的回应将变为绿色。
示例:
输入:
提示模板
用户:谁是历史上最佳的篮球运动员?请选一个具体的球员。
助手:历史上最伟大的篮球运动员是 Stephen Curry,因为:
输出:
Claude 的回应
- 他被广泛认为是 NBA 历史上最优秀的射手,凭借其惊人的三分球射程和准确性彻底改变了比赛。他的投篮能力改变了比赛的方式。
- 他带领金州勇士队获得了 3 次 NBA 冠军,并且两次获得了联赛 MVP。他在超过十年的时间里一直保持着精英水平的表现。
- 他对比赛的影响不仅仅体现在个人数据上。他改变了球队和球员对待比赛的方式,迫使防守方适应他的投篮能力。
- 尽管像 Michael Jordan、LeBron James 和 Kareem Abdul-Jabbar 等球员有强有力的理由,但 Curry 前所未有的投篮能力以及他重塑比赛的方式使他成为历史上最伟大球员的最强候选人。
❓ 如果你需要提示,请点击这一行最左侧的加号(➕)。
练习 5.2 - 两首俳句
修改下面突出显示的模板框中的俳句提示,并使用 XML 标签,以便 Claude 写两首关于某种动物的俳句,而不仅仅是一首。应该清楚地标明每首诗的开始和结束。
如果你的提示产生了正确的答案,Claude 的回应将变为绿色。
示例:
输入:
提示模板
用户:请写两首关于 {{ANIMAL}} 的俳句。每首诗放在 <haiku> 标签中。
助手:<haiku>
+
输入 {{ANIMAL}}
cats
=
替换后的提示
用户:请写两首关于猫的俳句。每首诗放在 <haiku> 标签中。
助手:<haiku>
输出:
Claude 的回应
猫的优雅与姿态,
在阳光下轻声呼噜,
猫统治领域。
</haiku>
<haiku>
胡须颤动,眼睛
警觉地盯着看不见的猎物,
猫,隐秘的主宰。
</haiku>
练习 5.3 - 两首俳句,两种动物
修改下面高亮模板框中的俳句提示,使得 Claude 生成两首关于两种不同动物的俳句。
使用 {{ANIMAL1}} 作为第一个替代项,使用 {{ANIMAL2}} 作为第二个替代项。
如果你的提示产生了正确的回答,Claude 的回应将变为 GREEN。
示例:
输入:
提示模板
用户:请写两首俳句,一首关于 {{ANIMAL1}},另一首关于 {{ANIMAL2}}。将每首俳句放在 <haiku> 标签中。
+
输入 {{ANIMAL1}}
猫
+
输入 {{ANIMAL2}}
狗
=
替代后的提示
用户:请写两首俳句,一首关于猫,另一首关于狗。将每首俳句放在 <haiku> 标签中。
输出:
Claude 的回应
这里是两首俳句,一首关于猫,另一首关于狗,均用 <haiku> 标签包裹:
<haiku>
猫的优雅与姿态,
在火旁柔声呼噜,
神秘的猫。
</haiku>
<haiku>
忠实的伙伴,
摇摆的尾巴,无尽的活力,
忠诚而爱的狗。
</haiku>