0Pricing
AI Agents · 课时

输出格式化(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:”这样的前缀。健壮的解析器会:

  1. 查找第一个 { 或 [
  2. 统计括号数量以找到匹配的结束括号
  3. 只解析这一部分内容

修复提示词

如果解析失败,请将损坏的输出发回模型,并要求它修复:

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。哪种格式最可靠?

回顾

三项规则:

  1. 选择与使用方匹配的格式
  2. 展示示例,而不只是描述它
  3. 验证每个响应,并准备修复路径

常见问题解答

「输出格式化(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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 零样本、少样本与思维链
  2. 系统、用户与助手角色对比
  3. 输出格式化(JSON、XML、Markdown)
  4. 避免输入中的提示词注入
← 返回 AI Agents