强制用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解析  解析实例


本页地址:http://www.foxtable.com/webhelp/topics/7204.htm