WMX · 随记
·AI· 3 分钟阅读

结构化输出:能解析 JSON 只是第一层检查

模型返回一段合法 JSON,不代表字段存在、类型正确或数值范围合理。应用必须在消费结果之前验证约定。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

模型返回一段合法 JSON,不代表字段存在、类型正确或数值范围合理。应用必须在消费结果之前验证约定。

理解核心机制

解析负责语法,schema 或显式校验负责结构与约束。下面只验证一个很小的对象协议,拒绝额外字段并区分 bool 与 int,避免 Python 类型继承带来的意外。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python12 行 · 可横向滚动
import json
def validate(text):
    item = json.loads(text)
    if type(item) is not dict or set(item) != {"label", "score"}:
        raise ValueError("unexpected fields")
    if item["label"] not in ("positive", "negative"):
        raise ValueError("unknown label")
    score = item["score"]
    if type(score) not in (int, float) or not 0 <= score <= 1:
        raise ValueError("score outside range")
    return item
print(validate('{"label":"positive","score":0.8}'))

适用边界与常见误区

这不是通用 JSON Schema 实现。即使结构正确,内容仍可能不真实;跨字段关系、证据支持和业务权限应分别校验。

继续练习

测试缺字段、多字段、布尔分数和范围外分数,再补充输入长度与嵌套限制,避免异常输入消耗过多资源。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档