0 前言
当提供了JSON模式时,该API通过/v1/chat/completions端点支持结构化JSON输出。这会使LLM按所提供的模式以有效的JSON格式进行响应。
遵循与OpenAI最近发布的结构化输出API相同的格式,并且预期可通过OpenAI客户端软件开发工具包(SDK)来使用。
1 使用curl的示例
用curl工具进行的结构化输出请求:
bash
curl http://127.0.0.1:1234/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama-4-maverick-17b-128e-instruct",
"messages": [
{
"role": "system",
"content": "你是一个乐于帮忙讲笑话的人。"
},
{
"role": "user",
"content": "给我讲个笑话。"
}
],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "joke_response",
"strict": "true",
"schema": {
"type": "object",
"properties": {
"joke": {
"type": "string"
}
},
"required": ["joke"]
}
}
},
"max_tokens": 50,
"stream": false
}'
响应:
{
"id": "chatcmpl-t613953nqxblyypqkzzv1j",
"object": "chat.completion",
"created": 1745677685,
"model": "llama-4-maverick-17b-128e-instruct",
"choices": [
{
"index": 0,
"logprobs": null,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "{ \"joke\": \"为什么蘑菇会被邀请参加聚会?因为他是个真菌(fun-gi)!\" } "
}
}
],
"usage": {
"prompt_tokens": 31,
"completion_tokens": 27,
"total_tokens": 58
},
"stats": {},
"system_fingerprint": "llama-4-maverick-17b-128e-instruct"
}
/v1/chat/completions所识别的所有参数都将生效,且JSON模式应在response_format的json_schema字段中提供。
JSON对象将以string(字符串)形式出现在典型的响应字段choices[0].message.content中,并且需要被解析为一个JSON对象。
重要提示
并非所有模型都能够进行结构化输出,尤其是参数数量低于70亿(7B)的LLM。
如果你不确定某个模型是否支持结构化输出,请查看该模型的说明卡片。