Back to Blog

Claude 提示词工程实战:让 AI Agent 稳定输出结构化数据

2026/10/13 min read
Claude 提示词工程实战:让 AI Agent 稳定输出结构化数据

Claude 提示词工程实战:让 AI Agent 稳定输出结构化数据

要让 Claude 这种大型语言模型稳定输出符合代码解析要求的数据,核心在于把「自然语言对话」转为「结构化约束任务」。我通常在系统提示词中强制指定 JSON Schema,并结合 Few-shot 示例,能解决 90% 以上的格式解析错误。

为什么 AI 输出的 JSON 总是坏掉?

在实际开发 Agent 时,我遇到的最大痛点不是模型智商不够,而是它太「自由」。你让它提取用户意图,它可能给你一个 Markdown 列表,或者一段带解释的文本,甚至有时候 JSON 里会多出尾逗号导致解析崩溃。

Claude 提示词工程实战:让 AI Agent 输出结构化数据 - 插图 1

我观察到,单纯在指令里写「请输出 JSON」是不够的。模型需要明确的边界。它需要一个角色定义(Role),一个明确的数据结构约束,以及几个正确的示例。只有把这些结合起来,它才能从「聊天模式」切换到「数据生成模式」。

构建结构化输出的提示词模板

我在项目中复用的一套高效提示词结构,通常包含三个核心部分:角色设定、输出规范、示例演示。

1. 角色与任务定义

不要只说「你是一个助手」。要具体化:

你是一个精密的数据提取引擎。你的任务是从用户输入中提取关键实体,并严格遵循指定的 JSON 格式输出。不要输出任何解释性文字,只输出 JSON。

2. 强制约束(Schema Enforcement)

使用 JSON Schema 描述你需要的结构,这是让 Claude 最听话的方法。例如:

{
  "type": "object",
  "properties": {
    "intent": { "type": "string", "enum": ["query", "action", "chitchat"] },
    "entities": {
      "type": "array",
      "items": { "type": "object", "properties": { "key": {"type":"string"}, "value": {"type":"string"} } }
    },
    "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
  },
  "required": ["intent", "entities", "confidence"]
}

在提示词中声明:「输出必须完全符合上述 JSON Schema,不得包含 markdown 代码块标记。」

3. Few-Shot 示例的力量

这是我最看重的部分。给模型 2-3 个输入输出的对子,能极大降低幻觉。

用户:帮我订一张明天去北京的机票 输出:{"intent": "action", "entities": [{"key": "dest", "value": "北京"}, {"key": "date", "value": "明天"}], "confidence": 0.95}

实战中的常见坑与解决方案

陷阱一:Markdown 代码块包裹

Claude 经常习惯性地用 json ... 包裹输出,这会让普通字符串解析失败。 对策:在提示词末尾加上强否定指令:「严禁使用 markdown 格式,仅输出纯文本 JSON。」

陷阱二:幻觉字段

模型有时会编造不在 Schema 中的字段。 对策:强调 additionalProperties: false 在 Schema 中,并在系统提示中要求「只输出 schema 中定义的字段」。

陷阱三:置信度虚高

即使提取错误,模型也可能给出 1.0 的置信度。 对策:引入自我校验步骤。可以让模型在输出 JSON 前先简要思考(Chain-of-Thought),但为了保持结构化,我更倾向于在后处理环节用正则或二次校验来验证数据的逻辑合理性。

代码集成示例

在 Node.js 中调用时,建议设置 response_format 为 JSON 类型(如果 API 支持),或者在提示词中严格执行上述策略。

const prompt = `
[System]: 你是数据提取引擎。输出格式:${JSON.stringify(schema)}。无解释,无markdown。
[User]: ${userInput}
`;
// 调用 Claude API...

通过这种工程化的提示词设计,我能确保 Agent 接收到的输入是干净、可预测的,从而大幅降低后续逻辑处理的复杂度。

下一步:验证与迭代

建议先在小样本数据集上跑通流程,观察失败案例,针对性地增加 Few-shot 示例或调整 Schema 约束。如果需要更高级的控制,可以考虑结合 Tool Use(工具调用)功能,让 Claude 显式调用结构化输出工具。

阅读下一篇:《LangChain 中如何使用 JsonOutputParser 简化 Claude 集成》

相关阅读

原文出处

本文首发于 Claude 提示词工程实战:让 AI Agent 稳定输出结构化数据 — https://lyxq.com.cn/en/blog/claude-structured-output-prompting

转载或引用请注明出处,商业使用请联系作者获得授权。