强制用JSON格式输出
在很多场景下,用户需要大模型严格按照JSON格式来输出答案,以实现输出的结构化,便于后续代码用统一的逻辑进行解析。
DeepSeek提供了JSON Output 功能,来确保模型输出合法的JSON字符串。
要严格按照JSON格式输出答案,只需增加response_format字段,将其值设置为: {'type': 'json_object'}。
示例
以下代码可在命令窗口执行:
Dim
caller
As
New
LLMCaller("https://api.deepseek.com/chat/completions",
"deepseek-flash",
"sk-a734b83536da45e9aedc3e42605bfb3a")
caller.response_format =
New
JObject()
From
{{"type",
"json_object"}}
'强制用JSON格式返回结果
caller.SystemPrompt =
"你是一个地理学教授。"
caller.UserMessage =
"请列出世界上最高的五座高山。输出一个JSON对象,对象包含一个名为
'mountains'
的数组,"
& vbCrLf &
"格式样例:{""mountains"":
[{""山峰"":
""xxx"", ""高度"":
0, ""大洲"":
""xxx"", ""国家"":
""xxx""}]}"
If
caller.GetResult()
Then
MessageBoxA.Show(caller.Result)
Else
MessageBoxA.Show(caller.Error)
End
If
得到的结果大概为:
{
"mountains": [
{
"山峰": "珠穆朗玛峰",
"高度": 8848.86,
"大洲": "亚洲",
"国家": "中国、尼泊尔"
},
{
"山峰": "乔戈里峰",
"高度": 8611,
"大洲": "亚洲",
"国家": "中国、巴基斯坦"
},
{
"山峰": "干城章嘉峰",
"高度": 8586,
"大洲": "亚洲",
"国家": "尼泊尔、印度"
},
{
"山峰": "洛子峰",
"高度": 8516,
"大洲": "亚洲",
"国家": "中国、尼泊尔"
},
{
"山峰": "马卡鲁峰",
"高度": 8485,
"大洲": "亚洲",
"国家": "中国、尼泊尔"
}
]
}
得到固定格式的JSON数据后,就可以进行解析提取,参考:JSON解析 解析实例