智构学堂人工智能应用工程
返回路线

人工智能(AI)与大语言模型(LLM)基础

结构化输出:JSON、字段约束与解析

35 分钟 · 入门 · 公开章节

公开章节可直接阅读。登录后可同步阅读进度、保存笔记与高亮、完成章节测验。

学习目标

  • 理解为什么产品中不能只依赖自然语言回答。
  • 能设计一个简单的 JSON 输出契约。
  • 知道解析模型输出时需要做字段和业务校验。

核心概念

自然语言适合给人读,结构化输出适合给程序用。当人工智能功能需要进入搜索、分类、派单、创建任务或更新数据库时,模型输出必须变成可解析的数据结构。

结构化输出的关键是 schema。你需要明确字段名、字段类型、是否必填、枚举范围、默认行为和错误处理。例如 priority 只能是 lowmediumhigh,不能让模型自由发挥成“比较紧急”。

模型输出即使是 JSON,也仍然是外部输入。程序必须解析、校验和拒绝不合法结果。不要因为内容来自模型,就绕过校验。

示例与拆解

场景:把用户反馈分类,供客服系统创建工单。

提示词中的输出要求可以写成:

1只返回 JSON,不要输出额外解释。 2字段: 3- category: "bug" | "billing" | "feature_request" | "other" 4- urgency: "low" | "medium" | "high" 5- summary: 不超过 40 字的中文摘要 6- evidence: 从用户原文提取的关键证据

期望输出:

1{ 2 "category": "billing", 3 "urgency": "high", 4 "summary": "用户被重复扣费", 5 "evidence": "这个月同一个套餐扣了我两次钱" 6}

解析时还要做校验:

1const categories = new Set(["bug", "billing", "feature_request", "other"]); 2 3function validateTicketDraft(value: any) { 4 if (!categories.has(value.category)) { 5 throw new Error("Invalid category"); 6 } 7 if (typeof value.summary !== "string" || value.summary.length > 40) { 8 throw new Error("Invalid summary"); 9 } 10 return value; 11}

常见误区

  • 误区一:JSON 一定合法。模型可能输出多余说明、缺字段或错误类型。
  • 误区二:只在提示词里写“严格返回 JSON”就够了。程序端仍要解析失败处理。
  • 误区三:字段越多越完整。字段过多会提高出错率,先保留业务必需字段。

小练习

为“学习笔记自动整理”设计一个 JSON 输出结构,至少包含标题、关键词、待复习问题和推荐下一步。为每个字段写出类型和限制。

实操检查点

写完 schema 后,补 2 个负例:一个缺字段,一个字段类型错误。再写出程序应该如何处理它们。结构化输出的关键不是“模型能生成”,而是“不合法时系统知道怎么拒绝”。

1{ 2 "invalid_case": "keywords is a string, but schema requires string[]", 3 "expected_handling": "reject_and_retry_once", 4 "user_visible_message": "笔记整理失败,请稍后重试或手动保存。" 5}

随堂测验

完成本章测验,重点检查你是否能把自然语言输出转成程序契约。

本章总结

结构化输出把模型接入应用流程。关键不是让模型“像 JSON”,而是定义清楚 schema,并在程序端做严格校验。

下一步学习指引

下一章学习模型选择,理解质量、成本、延迟和任务复杂度之间的取舍。