加载中

除了编写更好的提示之外,还有两种强大的技术可用于控制Claude的输出:预填充助手消息和停止序列。这些方法让您能够精确控制Claude的响应方式以及何时停止生成文本。

预填充助手消息

消息预填充允许您提供Claude响应的开头部分,然后Claude会从该起点继续生成。这种技术在引导Claude朝特定方向发展时非常有用。

其工作原理如下:您不是仅发送一条用户消息,而是在消息列表末尾添加一条助手消息。Claude看到这条助手消息后会认为:"我已经开始回答这个问题了,所以我应该从我停下的地方继续。"

例如,如果您问"早餐喝茶还是喝咖啡更好?"而不进行预填充,Claude通常会给出一个平衡的回答,同时提到两种选择。但如果您添加一条助手消息说"咖啡更好,因为",Claude就会从那里继续,为咖啡进行论证。

需要理解的关键点是,Claude会从您预填充文本结束的确切位置继续。如果您写"咖啡更好,因为",Claude不会重复这段文本——它会紧接在"因为"之后继续,完成这个想法。

以下是代码结构:

python
messages = []
add_user_message(messages, "Is tea or coffee better at breakfast?")
add_assistant_message(messages, "Coffee is better because")
answer = chat(messages)

您可以使用这种技术将Claude引导至任何方向:

  • 偏向咖啡:"咖啡更好,因为"
  • 偏向茶:"茶更好,因为"
  • 采取相反立场:"两者都不太好,因为"

停止序列

停止序列会强制Claude在生成特定字符串后立即结束其响应。这非常适合用于控制响应的长度或终止点。

这个概念很简单:您提供一个字符串列表,当Claude生成其中任何一个字符串时,它会立即停止并返回到那一点为止已生成的所有内容。

例如,如果您要求Claude"从1数到10",并设置停止序列为"5",您将得到:

python
add_user_message(messages, "Count from 1 to 10")
answer = chat(messages, stop_sequences=["5"])

这将返回:"1, 2, 3, 4, "——在输出中包含"5"之前就停止了。

您可以让停止序列更加精确。如果您想避免末尾的逗号和空格,可以改用stop_sequences=[", 5"]。这将为您提供更简洁的结果:"1, 2, 3, 4"。

停止序列特别适用于以下场景:

  • 限制列表长度
  • 在特定标记或分隔符处停止
  • 创建一致的输出格式
  • 防止过长的响应

这两种技术都能让您对Claude的行为进行精细控制,使您能够为您的应用程序创建更可预测、更有针对性的响应。