我在日常开发中最常被问到的问题就是:“怎么让AI返回的数据能被程序直接使用?”今天我就用最通俗的方式,带大家从零掌握JSON模式输出这项核心技能。

一、什么是JSON模式?为什么你需要它

普通对话中,AI会返回这样的文字:

用户张三的订单金额是258元,订单编号A2024001,商品是蓝色T恤M码。

这种文字看起来没问题,但如果我要用程序提取“订单金额”或“订单编号”,就非常麻烦。而JSON模式可以让AI返回这样的数据:

{
  "username": "张三",
  "order_id": "A2024001",
  "amount": 258,
  "product": "蓝色T恤M码"
}

这样的数据直接可以被Python、JavaScript、Java等任何编程语言读取处理,这就是JSON模式的核心价值。

二、开始前的准备工作

在开始之前,你需要准备两样东西:

我推荐国内开发者使用 HolySheep AI,因为它支持人民币直接充值(微信/支付宝),汇率是¥1=$1无损(官方汇率¥7.3=$1,能节省85%以上费用),而且国内直连延迟低于50ms,新用户注册就送免费额度,非常适合练手。

三、Python调用JSON模式完整示例

下面是一个完整的、可直接运行的Python示例,实现从用户评论中提取结构化数据:

import requests

HolySheep API 配置

url = "https://api.holysheep.ai/v1/chat/completions" api_key = "YOUR_HOLYSHEEP_API_KEY" # 替换为你的真实API Key headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" }

定义JSON Schema,告诉AI我们期望的数据结构

data = { "model": "gpt-4.1", "messages": [ { "role": "user", "content": """分析以下商品评论,返回JSON格式数据: 评论内容:"这家店的快递太慢了,等了8天才收到。东西质量还行,就是包装有点简陋。" 请提取:评论情绪(sentiment)、快递评分(delivery_score 1-10)、质量评价(quality_comment) """ } ], "response_format": { "type": "json_object" }, "max_tokens": 500, "temperature": 0.3 } response = requests.post(url, headers=headers, json=data) result = response.json() print("AI返回结果:") print(result["choices"][0]["message"]["content"])

将字符串转换为Python字典

import json structured_data = json.loads(result["choices"][0]["message"]["content"]) print("\n结构化数据:") print(f"情绪:{structured_data.get('sentiment')}") print(f"快递评分:{structured_data.get('delivery_score')}/10") print(f"质量评价:{structured_data.get('quality_comment')}")

运行结果示例:

AI返回结果:
{
  "sentiment": "negative",
  "delivery_score": 3,
  "quality_comment": "质量还行,但包装简陋"
}

结构化数据:
情绪:negative
快递评分:3/10
质量评价:质量还行,但包装简陋

四、用JSON Schema精确控制输出结构

如果你的数据结构是固定的,可以用JSON Schema来强制AI按指定格式输出。比如做一个“简历信息提取器”:

import requests
import json

url = "https://api.holysheep.ai/v1/chat/completions"
api_key = "YOUR_HOLYSHEEP_API_KEY"

定义严格的JSON Schema

schema = { "type": "object", "properties": { "name": {"type": "string", "description": "候选人姓名"}, "age": {"type": "integer", "description": "年龄"}, "skills": { "type": "array", "items": {"type": "string"}, "description": "技能列表" }, "expected_salary": { "type": "integer", "description": "期望薪资,单位元/月" }, "education": { "type": "string", "description": "最高学历" } }, "required": ["name", "skills", "expected_salary"] } data = { "model": "gpt-4.1", "messages": [ { "role": "user", "content": """从以下简历文本中提取信息,必须返回严格符合Schema的JSON: "本人李明,28岁,毕业于清华大学计算机系。熟练掌握Python、Java和Go语言, 有5年后端开发经验。目前期望月薪35000元。" """ } ], "response_format": { "type": "json_object" }, "max_tokens": 300 } response = requests.post(url, headers={ "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" }, json=data) resume_data = json.loads(response.json()["choices"][0]["message"]["content"]) print(json.dumps(resume_data, ensure_ascii=False, indent=2))

输出结果:

{
  "name": "李明",
  "age": 28,
  "skills": ["Python", "Java", "Go"],
  "expected_salary": 35000,
  "education": "清华大学计算机系"
}

我自己在做招聘系统时,用这种Schema严格控制的方式,AI提取数据的准确率提升到了95%以上,比之前用正则表达式手动解析要可靠得多。

五、JavaScript/Node.js 调用示例

如果你是前端开发者,用JavaScript调用同样简单:

const axios = require('axios');

async function extractOrderInfo(text) {
    const response = await axios.post(
        'https://api.holysheep.ai/v1/chat/completions',
        {
            model: 'gpt-4.1',
            messages: [
                {
                    role: 'user',
                    content: 从订单文本中提取JSON数据:${text}
                }
            ],
            response_format: { type: 'json_object' },
            max_tokens: 200
        },
        {
            headers: {
                'Authorization': 'Bearer YOUR_HOLYSHEEP_API_KEY',
                'Content-Type': 'application/json'
            }
        }
    );
    
    return JSON.parse(response.data.choices[0].message.content);
}

// 调用示例
const orderText = "订单号:DZ-2024-8888,客户王五下单了3件商品,总价599元,使用顺丰快递";
extractOrderInfo(orderText).then(data => {
    console.log('订单ID:', data.order_id);
    console.log('客户:', data.customer);
    console.log('商品数量:', data.quantity);
    console.log('总价:', data.total_price);
});

六、实战项目:批量处理用户反馈

结合前面的知识,我给大家展示一个完整的实战项目——自动分析用户反馈并生成报表:

import requests
import json
from datetime import datetime

def analyze_feedbacks(feedbacks):
    """批量分析用户反馈并生成结构化数据"""
    url = "https://api.holysheep.ai/v1/chat/completions"
    api_key = "YOUR_HOLYSHEEP_API_KEY"
    
    results = []
    for feedback in feedbacks:
        response = requests.post(url, headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        }, json={
            "model": "gpt-4.1",
            "messages": [{
                "role": "user",
                "content": f"分析反馈并返回JSON:{feedback}"
            }],
            "response_format": {"type": "json_object"},
            "max_tokens": 100,
            "temperature": 0.1  # 降低随机性,提高一致性
        })
        
        data = json.loads(response.json()["choices"][0]["message"]["content"])
        data["original"] = feedback
        results.append(data)
    
    return results

模拟用户反馈数据

test_feedbacks = [ "衣服质量很好,物流也快,就是客服回复太慢了", "收到货发现尺码不对,申请换货3天了没人处理", "性价比超高,已经是第三次回购了" ]

批量分析

report = analyze_feedbacks(test_feedbacks)

生成报表

print(f"分析时间:{datetime.now().strftime('%Y-%m-%d %H:%M')}") print(f"总反馈数:{len(report)}") positive = sum(1 for r in report if r.get("sentiment") == "positive") print(f"正面反馈:{positive}条 ({positive/len(report)*100:.0f}%)") print(f"负面反馈:{len(report)-positive}条 ({(len(report)-positive)/len(report)*100:.0f}%)")

七、常见报错排查

错误1:response_format 参数不支持

# 错误信息
{"error": {"message": "response_format parameter is not supported for this model", "type": "invalid_request_error"}}

解决方案

不是所有模型都支持JSON模式,推荐使用 gpt-4.1 或 gpt-4.1-mini

在 HolySheep API 中,可选模型包括:

- gpt-4.1 (支持JSON模式,价格$8/MTok)

- gpt-4.1-mini (性价比更高,价格$2/MTok)

- claude-sonnet-4.5 (支持结构化输出,$15/MTok)

data = { "model": "gpt-4.1", # 确保使用支持的模型 ... }

错误2:返回内容不是有效JSON

# 错误场景:AI返回了普通文本而非JSON

"AI返回内容:今天天气晴朗,温度25度,适合出门..."

解决方案1:强化系统提示词

system_prompt = "你是一个JSON生成器。任何情况下都必须返回有效的JSON,不要添加任何解释或额外文字。"

解决方案2:使用temperature降低随机性

data = { "model": "gpt-4.1", "temperature": 0.1, # 降低到0.1-0.3 ... }

解决方案3:添加JSON示例

data = { "messages": [{ "role": "user", "content": "返回JSON格式的用户信息。示例:{\"name\": \"张三\", \"age\": 25}" }] }

错误3:max_tokens 过小导致截断

# 错误信息
{"choices": [{"finish_reason": "length"}]}

解决方案:增加max_tokens值

data = { "model": "gpt-4.1", "max_tokens": 2000, # 根据返回数据量调整,确保足够大 ... }

预估技巧:1个中文字符约等于1-2个token

如果预计返回1000字内容,max_tokens至少设为2000

错误4:API Key认证失败

# 错误信息
{"error": {"message": "Incorrect API key provided", "code": "invalid_api_key"}}

解决方案

1. 检查API Key格式是否正确

2. 确保没有多余的空格或换行

3. 在 HolySheep 平台确认Key是否有效

#

正确的Header格式:

headers = { "Authorization": f"Bearer {api_key}", # 注意Bearer后面有空格 "Content-Type": "application/json" }

4. 如果Key已过期,在 https://www.holysheep.ai/register 重新申请

错误5:请求频率超限

# 错误信息
{"error": {"message": "Rate limit exceeded", "code": "rate_limit_exceeded"}}

解决方案:添加请求间隔和重试机制

import time import requests def call_with_retry(url, data, headers, max_retries=3): for i in range(max_retries): try: response = requests.post(url, headers=headers, json=data) if response.status_code == 429: # Rate limit wait_time = 2 ** i # 指数退避:1s, 2s, 4s print(f"触发限流,等待{wait_time}秒...") time.sleep(wait_time) continue return response except Exception as e: print(f"请求失败: {e}") time.sleep(2) return None

八、价格对比与选型建议

用JSON模式处理数据会消耗token,但选对模型能省下大量成本。以提取1000条用户反馈为例:

我自己的经验是:简单数据提取用DeepSeek V3.2GPT-4.1-mini就够了,只有在做情感分析、意图识别等复杂任务时才用GPT-4.1。

九、总结与下一步

今天我们学习了:

JSON模式是AI应用开发中最实用的技能之一,掌握它之后你就能轻松实现:智能客服对话解析、内容审核自动化、文档信息提取、数据清洗入库等各种功能。

建议大家现在就去 立即注册 HolySheep AI,拿赠送的免费额度亲手实践一下这些代码。

👉 免费注册 HolySheep AI,获取首月赠额度