输出格式化(JSON、XML、Markdown)
使用 JSON 模式、XML 标签或严格的 Markdown,强制模型返回可解析的结构,使输出可被机器读取。
输出格式化(JSON、XML、Markdown) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
格式为何重要
智能体会将模型输出传入代码。自由格式的散文会破坏解析器。对于任何生产环境中的智能体,结构化输出(JSON、XML 等)都是必需的。
JSON 模式
OpenAI 和大多数提供商都提供 JSON 模式,可以保证输出可解析:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
response_format={'type': 'json_object'},
)
import json
data = json.loads(response.choices[0].message.content)结构化输出(严格架构)
OpenAI 的结构化输出功能接收 JSON Schema,并保证输出与其匹配:
schema = {
'name': 'extract_person',
'schema': {
'type': 'object',
'properties': {
'name': {'type': 'string'},
'age': {'type': 'integer'}
},
'required': ['name', 'age'],
'additionalProperties': False
},
'strict': True
}
response = client.chat.completions.create(
model='gpt-4o-2024-08-06',
messages=messages,
response_format={'type': 'json_schema', 'json_schema': schema}
)XML 标签(Anthropic 风格)
Anthropic 建议使用 XML 标签,这是 Claude 最可靠的格式化方式:
system = '''
Return your answer wrapped in XML tags:
<reasoning>Your step-by-step thinking</reasoning>
<answer>The final answer</answer>
'''
# Parse with a simple regex or BeautifulSoup
import re
ans = re.search(r'<answer>(.*?)</answer>', text, re.S).group(1)面向人类使用 Markdown
当输出会直接呈现给人类时(聊天界面、文档),请使用 Markdown。
当输出要传入代码时,应避免使用 Markdown——Markdown 很难进行可靠解析。
根据使用方选择正确格式
- JSON — 传入您的代码
- XML — 传入您的代码,尤其适用于 Claude
- Markdown — 呈现给人类用户界面
- 纯文本 — 传给另一个大语言模型
展示,而不只是说明
始终在提示词中加入所需输出的具体示例:
system = '''
Return a JSON object like:
{
"action": "reply",
"content": "Hi there!",
"confidence": 0.95
}
'''
print(system.strip())
强制指定第一个词元
对于 Anthropic,可以用 { 或 [ 预填助手轮次,以强制生成 JSON 输出:
messages = [
{'role': 'user', 'content': 'Return JSON with name and age.'},
{'role': 'assistant', 'content': '{'}
]
# Output will start at '{ "name": ...' guaranteed.
for m in messages:
print(f"{m['role']}: {m['content']}")
print('Output will start at \'{ "name": ...\' guaranteed.')
处理尾部垃圾内容
即使使用 JSON 模式,有时模型仍会添加“好的!这是 JSON:”这样的前缀。健壮的解析器会:
- 查找第一个
{或[ - 统计括号数量以找到匹配的结束括号
- 只解析这一部分内容
修复提示词
如果解析失败,请将损坏的输出发回模型,并要求它修复:
repair_prompt = f'''
The previous output failed to parse with error: {error}.
Return ONLY a valid JSON object matching the schema. No prose.
Previous output:
{bad_output}
'''使用 Pydantic 进行验证
使用 Pydantic 模型验证解析后的字典——检查字段类型,缺少字段时抛出错误。
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
person = Person.model_validate_json(response_text)
print(person.name, person.age)代码的最佳格式
您要将输出传入 Python。哪种格式最可靠?
回顾
三项规则:
- 选择与使用方匹配的格式
- 展示示例,而不只是描述它
- 验证每个响应,并准备修复路径
常见问题解答
「输出格式化(JSON、XML、Markdown)」课时是免费的吗?
是的 — 「输出格式化(JSON、XML、Markdown)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「输出格式化(JSON、XML、Markdown)」这节课中我会学到什么?
使用 JSON 模式、XML 标签或严格的 Markdown,强制模型返回可解析的结构,使输出可被机器读取。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「输出格式化(JSON、XML、Markdown)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 零样本、少样本与思维链
- 系统、用户与助手角色对比
- 输出格式化(JSON、XML、Markdown)
- 避免输入中的提示词注入