summary 字段末尾的逗号):
response_format 参数,response_format 参数默认值为 {"type": "text"},即普通的文本内容,该内容没有任何格式上的约束;你可以将 response_format 设置为 {"type": "json_object"} 来启用 JSON Mode,Kimi 大模型会按照要求输出一个合法的、可被正确解析的 JSON 文档。
在使用 JSON Mode 时,请遵守以下注意事项:
- 请在提示词 system prompt 或 user prompt 中告知 Kimi 大模型应该生成怎样的 JSON 文档,包括具体的字段名称、字段类型等,最好能提供示例供 Kimi 大模型参考;
- Kimi 大模型只会生成 JSON Object 类型的 JSON 文档,请不要引导 Kimi 大模型生成 JSON Array 或其他类型的 JSON 文档;
- 如果没有正确告知 Kimi 大模型需要输出的 JSON Object 的格式,Kimi 大模型会生成不符合预期的结果;
JSON Mode 应用示例
我们使用一个具体的例子来说明 JSON Mode 的应用:设想一下,我们在构造一个微信智能机器人客服(简称智能客服),智能客服使用 Kimi 大模型来回答客户提出的问题。我们希望智能客服不仅能回复文字消息,还能回复图片、链接卡片、语音等类型的消息;同时,在一次回复中,我们希望可以混合多种类型的消息,例如对于客户的产品咨询类问题,我们既提供文字回复,也提供产品图片,最后再附上购买链接(以链接卡片的形式)。让我们用代码来演示这个例子中的内容:
- python
- node.js
- 在 system 或 user prompt 中定义输出 JSON 的格式,我们推荐的最佳实践是给出具体的输出示例,并解释每个字段的具体含义;
- 使用
response_format参数,将其设置为{"type": "json_object"}; - 解析 Kimi 大模型返回消息中的
content,message.content会是一个合法的被序列化成字符串的 JSON Object;
不完整的 JSON
如果你遇到这样的情况:
正确设置了 response_format 参数,并且在提示词 prompt 中指定了 JSON 文档的格式,但获取的 JSON 文档不完整或被截断,导致无法正确解析 JSON 文档。
我们建议你检查返回值中的 finish_reason 字段是否为 length;通常而言,较小的 max_tokens 值会导致模型输出内容被截断,在使用 JSON Mode 时也适用这个规则,我们建议你在预估输出的 JSON 文档大小后,设置一个合理的 max_tokens 值,以便能正确解析 Kimi 大模型返回的 JSON 文档。
关于 Kimi 大模型输出不完整或被截断问题的更详细说明,请参考:
常见问题及解决方案