基于OpenAI API微调LLM时,结构化输出的Assistant内容格式疑问
结构化输出的OpenAI微调数据格式
针对你用Zod定义的CountResponses结构,微调数据里的assistant角色消息需要直接填入严格匹配该结构的JSON字符串,不需要使用工具调用格式,具体要求如下:
核心规则
- 每条微调样本是JSONL格式的对话对象,包含
messages数组 assistant的消息内容必须是纯JSON字符串,完全符合你定义的Zod结构,不能夹杂任何自然语言文本- 字段类型必须严格对应(比如
count是数字类型,confidence是0-1范围内的数字)
完整示例(JSONL格式)
{"messages": [ {"role": "user", "content": "统计图片里的SKU数量:SKU-001有3个,SKU-002有5个"}, {"role": "assistant", "content": "{\"counts\": [{\"sku\": \"SKU-001\", \"count\": 3, \"rationale\": \"图片中清晰可见3个SKU-001商品\", \"confidence\": 0.98}, {\"sku\": \"SKU-002\", \"count\": 5, \"rationale\": \"图片中共有5个SKU-002商品\", \"confidence\": 0.99}]}"} ]}
注意事项
- JSON字符串要做转义处理(比如双引号用
\"),确保符合JSONL的语法要求 - 微调阶段不需要在请求里指定
response_format,等模型微调完成后,调用时再设置结构化输出参数(就像你代码里的zodResponseFormat) - 所有样本的
assistant输出都要严格遵循相同的结构,这样模型才能学习到稳定的结构化输出模式
内容的提问来源于stack exchange,提问作者Jon Vogel
相关产品推荐
相关产品推荐

