response_format 参数启用它:
用 response_format 启用 JSON Mode
如果只在提示词 prompt 中告诉 Kimi 大模型:“请输出 JSON 格式的内容”,Kimi 大模型能理解你的诉求,也会按要求生成 JSON 文档,但生成的内容通常会有一些瑕疵:例如在 JSON 文档之外,Kimi 还会额外输出其他文字内容对 JSON 文档进行解释——summary 字段末尾的逗号):
response_format 参数用于约束输出格式,默认值为 {"type": "text"},即普通的、没有任何格式约束的文本内容。将 response_format 设置为 {"type": "json_object"} 即可启用 JSON Mode,Kimi 大模型会按照要求输出一个合法的、可被正确解析的 JSON 文档。
使用 JSON Mode 分三步:
- 在 system 或 user prompt 中定义输出 JSON 的格式,包括具体的字段名称、字段类型等;最佳实践是给出具体的输出示例,并解释每个字段的具体含义;
- 将
response_format参数设置为{"type": "json_object"}; - 解析 Kimi 大模型返回消息中的
content,message.content是一个合法的、被序列化成字符串的 JSON Object。
完整示例:智能客服的多类型消息回复
设想一个微信智能机器人客服(简称智能客服):它使用 Kimi 大模型来回答客户提出的问题,不仅能回复文字消息,还能回复图片、链接卡片、语音等类型的消息,并且可以在一次回复中混合多种类型的消息——例如对于客户的产品咨询类问题,既提供文字回复,也提供产品图片,最后附上购买链接(以链接卡片的形式)。 下面的代码演示了如何在这个场景中使用 JSON Mode 让模型按固定结构输出回复,并逐一解析各类消息内容:本页示例默认使用最新模型
kimi-k3。K3 使用请求顶层 reasoning_effort 配置推理强度(支持 "low" / "high" / "max",默认 "max")。换用 kimi-k2.6、kimi-k2.5 等其他模型时,只需替换 model 字段,但各模型的参数配置存在差异,详见模型参数参考。- python
- node.js
排查被截断的 JSON 输出
如果正确设置了response_format 参数、也在提示词 prompt 中指定了 JSON 文档的格式,但获取的 JSON 文档不完整或被截断、导致无法正确解析,请检查返回值中的 finish_reason 字段是否为 length。
较小的 max_tokens 值会导致模型输出内容被截断,使用 JSON Mode 时同样适用这个规则。建议在预估输出的 JSON 文档大小后,设置一个合理的 max_tokens 值,以便能正确解析 Kimi 大模型返回的 JSON 文档。
关于 Kimi 大模型输出不完整或被截断问题的更详细说明,请参考常见问题及解决方案。
注意事项
- Kimi 大模型只会生成 JSON Object 类型的 JSON 文档,不要引导它生成 JSON Array 或其他类型的 JSON 文档;
- 如果没有正确告知 Kimi 大模型需要输出的 JSON Object 的格式,它会生成不符合预期的结果。