我在日常开发中最常被问到的问题就是:“怎么让AI返回的数据能被程序直接使用?”今天我就用最通俗的方式,带大家从零掌握JSON模式输出这项核心技能。
一、什么是JSON模式?为什么你需要它
普通对话中,AI会返回这样的文字:
用户张三的订单金额是258元,订单编号A2024001,商品是蓝色T恤M码。
这种文字看起来没问题,但如果我要用程序提取“订单金额”或“订单编号”,就非常麻烦。而JSON模式可以让AI返回这样的数据:
{
"username": "张三",
"order_id": "A2024001",
"amount": 258,
"product": "蓝色T恤M码"
}
这样的数据直接可以被Python、JavaScript、Java等任何编程语言读取处理,这就是JSON模式的核心价值。
二、开始前的准备工作
在开始之前,你需要准备两样东西:
- API Key:这是调用AI服务的“身份证”
- 请求工具:可以用Python、Postman或者任何你熟悉的编程语言
我推荐国内开发者使用 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条用户反馈为例:
- GPT-4.1:$8/MTok,适合高精度需求场景
- GPT-4.1-mini:$2/MTok,性价比之选,我日常开发首选
- Claude Sonnet 4.5:$15/MTok,适合复杂逻辑提取
- DeepSeek V3.2:$0.42/MTok,超低成本,适合简单结构化任务
我自己的经验是:简单数据提取用DeepSeek V3.2或GPT-4.1-mini就够了,只有在做情感分析、意图识别等复杂任务时才用GPT-4.1。
九、总结与下一步
今天我们学习了:
- JSON模式的核心概念和优势
- 如何在HolySheep API中启用JSON模式
- 用JSON Schema精确控制输出结构
- Python和JavaScript的完整调用示例
- 5个常见错误的解决方案
JSON模式是AI应用开发中最实用的技能之一,掌握它之后你就能轻松实现:智能客服对话解析、内容审核自动化、文档信息提取、数据清洗入库等各种功能。
建议大家现在就去 立即注册 HolySheep AI,拿赠送的免费额度亲手实践一下这些代码。