← 返回题库
第 164 题 · 工程实践 · 中等

如何让大模型稳定输出结构化数据,并安全地驱动业务动作?

核心必会 这代表什么?
✓ 资料核验 来源说明:公开 AI 工程面试题库;依据 JSON Schema 与模型官方文档原创整理
Structured OutputsJSON Schema工具调用
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

先分清“语法合法”和“业务可执行”。约束解码或 Schema 能保证 JSON 结构,仍不能保证日期、金额、权限或工具参数语义正确。完整链路应包含生成约束、解析校验、业务规则、重试或降级。

涉及真实动作时再加幂等键、最小权限、审计和高风险人工确认。追问 Prompt Injection 时,强调模型输出始终是不可信输入,不能直接拼接命令。

可以这样答:

稳定结构化输出需要多层防线:解码阶段按 JSON Schema 限制可选 Token,生成后再做类型、枚举和必填字段校验,随后检查金额范围、资源权限等业务语义。校验失败可带错误信息有限重试,仍失败则转人工或安全降级。若输出要触发工具,必须使用参数化接口、最小权限、幂等键和审计日志;模型返回内容不能直接当作可信命令执行。

核心回答

优先使用模型或服务端支持的 Schema 约束解码,明确字段类型、枚举、必填项和是否允许额外字段;收到结果后仍要做 JSON Schema 校验和独立的业务校验。Schema 只能提高结构符合度,不能证明字段内容真实、用户有权限,或某个操作应该执行。真正的业务动作必须在可信代码中做鉴权、参数边界检查、幂等和审计,高风险动作还应二次确认。

还要显式处理拒答、内容截断、Schema 不支持、超时和供应商错误。重试应有次数上限并携带幂等键,不能把“再次让模型修 JSON”当成无限循环。

展开说明

完整链路可以分成四道边界:

  1. 生成约束:用支持范围内的 Schema 限制候选 token,减少语法和类型错误。
  2. 结构校验:验证必填字段、类型、枚举、长度和额外属性,区分不可解析与不合 Schema。
  3. 语义校验:检查日期范围、资源是否存在、金额关系等模型不了解的实时业务规则。
  4. 执行授权:根据登录用户和当前状态重新鉴权,工具只暴露最小权限,副作用操作使用幂等键。

Schema 应保持小而清晰。一次要求巨大且深层嵌套的对象会增加生成成本与失败面;可以把“识别意图”和“执行参数补全”拆成可观测的两步。

工程实践

为 Schema 本身建立版本号和兼容策略,在 Trace 中记录 Schema 版本、校验失败路径、模型版本和终止原因。测试集应包含缺字段、超长值、错误枚举、拒答、截断以及恶意字符串;只有在确定调用没有产生副作用时才自动重试。向前端渲染模型字符串时仍需正确转义,避免把合法 JSON 中的内容当可信 HTML。

常见追问

  1. 结构化输出已经符合 Schema,为什么还要做业务校验? Schema 只能保证类型和形状,无法保证账户存在、金额合理、用户有权限或动作符合当前状态,业务不变量必须另验。
  2. Function Calling 和普通 JSON 输出的安全边界有何不同? Function Calling 改善参数协议和约束,但模型输出仍是不可信输入;两者都必须做鉴权、校验、审计、幂等和高风险确认。
  3. Schema 升级时怎样避免旧客户端或旧任务失败? 使用版本字段与向后兼容的可选字段,保留旧解析器和迁移窗口,并用录制请求做契约回归后再逐步切流。

一句话复习

Schema 负责约束形状,可信业务代码负责校验含义、权限与副作用。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…