让 Claude 代理返回结构化的 JSON 数据——便于程序化处理结果。
什么是结构化输出
结构化输出让 Claude 按照你定义的格式返回数据,而不是自由文本。这在需要将结果传递给其他系统时非常有用。
使用方式
import json
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
system="""请以 JSON 格式回答,格式如下:
{
"summary": "代码摘要",
"issues": [
{"file": "文件名", "severity": "high|medium|low", "description": "问题描述"}
],
"score": 1-10
}
只返回 JSON,不要有其他内容。""",
messages=[
{"role": "user", "content": "审查 main.py"}
]
)
result = json.loads(response.content[0].text)
print(f"代码评分: {result['score']}")
for issue in result['issues']:
print(f"[{issue['severity']}] {issue['file']}: {issue['description']}")
使用工具实现结构化输出
更可靠的方式是通过工具强制结构化:
tools = [
{
"name": "submit_review",
"description": "提交代码审查结果",
"input_schema": {
"type": "object",
"properties": {
"summary": {"type": "string"},
"score": {"type": "integer", "minimum": 1, "maximum": 10},
"issues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"file": {"type": "string"},
"severity": {"enum": ["high", "medium", "low"]},
"description": {"type": "string"}
}
}
}
},
"required": ["summary", "score", "issues"]
}
}
]