422 {"error":{"type":"bad_response_status_code","message":"Unsupported request b...
🚨 错误信息
🤖 AI解决方案
代码报错分析报告
错误翻译
json
原文:Unsupported request body. Please adhere to the Claude specification.
译文:不支持的请求体。请遵守 Claude 规范。
原因分析
这是一个 API 调用错误,具体表现为 HTTP 422 状态码(Unprocessable Entity):
根本原因:向 Claude API 发送的请求体格式不符合其规范要求
具体分析:
bad_response_status_code 表示服务器接收到了请求,但无法处理其中的数据解决方案
Python 示例修复
python
import requests
import json错误示例(可能导致 422 错误)
payload = {
"prompt": "Hello Claude", # 可能使用了错误的字段名
"max_tokens": 100
}
✅ 修复后的正确格式(根据 Claude API 规范)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}payload = {
"model": "claude-3-sonnet-20241022", # 指定模型版本
"messages": [
{
"role": "user",
"content": "Hello Claude"
}
],
"max_tokens": 100
}
发送请求
response = requests.post(
"https://api.anthropic.com/v1/messages",
headers=headers,
json=payload # 使用 json 参数自动序列化
)print(f"状态码: {response.status_code}")
print(f"响应: {response.json()}")
JavaScript/Node.js 示例修复
javascript
const axios = require('axios');// ✅ 正确的请求体格式
const payload = {
model: 'claude-3-sonnet-20241022',
messages: [
{
role: 'user',
content: 'Hello Claude'
}
],
max_tokens: 100
};
const headers = {
'Content-Type': 'application/json',
'x-api-key': 'your-api-key',
'anthropic-version': '2023-06-01' // 版本头很重要
};
axios.post('https://api.anthropic.com/v1/messages', payload, { headers })
.then(response => console.log(response.data))
.catch(error => console.error('错误:', error.response?.data || error.message));
️ 预防措施
1. 查阅官方文档
2. 使用验证工具
python
请求发送前验证
import jsonschema定义 Claude API 的 schema(简化示例)
claude_schema = {
"type": "object",
"required": ["model", "messages"],
"properties": {
"model": {"type": "string"},
"messages": {"type": "array"},
"max_tokens": {"type": "integer", "minimum": 1}
}
}验证请求体
try:
jsonschema.validate(payload, claude_schema)
print("✅ 请求体格式正确")
except jsonschema.ValidationError as e:
print(f"❌ 验证失败: {e.message}")
快速检查清单:
application/json