跳转到主要内容
在使用大模型时,有时我们希望通过预填(Prefill)部分模型回复来引导模型的输出。在 Kimi 大模型中,我们提供 Partial Mode 来实现这一功能,它可以帮助我们控制输出格式,引导输出内容,以及让模型在角色扮演场景中保持更好的一致性。您只需要在最后一个 role 为 assistant 的 messages 条目中,增加 “partial”: True 即可开启 partial mode。
注意!请勿混用 partial mode 和 response_format=json_object,否则可能会获得预期外的模型回复。

调用示例

JSON Mode

下面是使用 Partial Mode 来实现 JSON Mode 的例子。
运行上述代码,返回:
注意 API 的返回不包含 leading_text,为了得到完整的回复,你需要手动拼接它。

角色扮演

基于同样的原理,我们也可以能将角色信息补充在 Partial Mode 来提高角色扮演时的一致性。我们使用明日方舟里的凯尔希医生为例。 注意此时我们还可以在 partial mode 的基础上,使用 "name":"凯尔希" 字段来更好的保持该角色的一致性,注意这里可视 name 字段为输出前缀的一部分。
运行上述代码,返回:

其它保持角色一致性的技巧

还有一些帮助大模型在长时间对话中保持角色扮演一致性的通用方法:
  • 提供清晰的角色描述, 例如上面我们所做的那样,在设置角色时,详细介绍他们的个性、背景以及可能具有的任何具体特征或怪癖,这将有助于模型更好地理解和模仿角色。
  • 增加关于其要扮演的角色的细节,例如说话的语气、风格、个性,甚至背景,如背景故事和动机。例如上面我们提供了一些凯尔希的语录。如果信息非常多我们可以使用一些 rag 框架来准备这些资料。
  • 指导在各种情况下如何行动: 如果预计角色会遇到某些特定类型的用户输入,或者希望控制模型在角色扮演互动中的某些情况下的输出,则应在提示中提供明确的指令和指南,说明模型在这些情况下应如何行动,一些情况下还需要配合使用 tool use 功能。
  • 如果对话的轮次非常长,你还可以定期使用 prompt 强化角色的设定,特别是当模型开始产生一些偏离时。