裸json.loads介绍(指直接使用Python标准库的json.loads()来解析返回的JSON字符串,而没有借助任何结构化验证框架(如Pydantic)进行schema校验)数据模型
发布时间:2026/7/12 16:01:24
分类:文化教育
浏览:1234
来解析返回的JSON字符串,而没有借助任何结构化验证框架(如Pydantic)进行schema校验)数据模型)
LLM 输出校验graphs/llm_outputs.py三个图中全部 5 处裸 json.loads 改为 Pydantic model_validate_jsonschema 与 prompt文章目录裸 json.loads 是什么意思具体来说为什么裸用是个问题一句话总结“裸json.loads” 是什么意思“裸json.loads” 是指直接使用 Python 标准库的json.loads()来解析 LLM 返回的 JSON 字符串而没有借助任何结构化验证框架如 Pydantic进行 schema 校验。具体来说# ❌ 裸 json.loads —— 只做语法解析不做结构/类型校验datajson.loads(llm_output)# data 是个 dict字段是否存在、类型是否正确全靠后续代码祈祷namedata[name]# 可能 KeyErroragedata[age]# 可能是 str 而不是 int不会报错# ✅ Pydantic model_validate_json —— 解析 校验一步到位classUserSchema(BaseModel):name:strage:intuserUserSchema.model_validate_json(llm_output)# 字段缺失、类型不对、多余字段等都会立即抛出 ValidationError为什么裸用是个问题问题json.loadsPydanticmodel_validate_jsonJSON 语法错误✅ 抛异常✅ 抛异常字段缺失❌ 不报错运行时才KeyError✅ 立即ValidationError类型不对如int变str❌ 不检查✅ 自动校验/转换多余字段❌ 静默接受✅ 可配置拒绝嵌套结构校验❌ 需要手写大量if✅ 嵌套 Model 自动递归校验与 Prompt 的 schema 对齐❌ 靠人肉保证✅ Prompt 和 Model数据模型可共用一份 schema一句话总结“裸json.loads” 只验证了「这是合法 JSON」但不验证「JSON 的内容是否符合预期结构」。在 LLM 输出不可控的场景下这相当于把校验责任全推给了后续业务代码容易出现隐蔽的运行时错误。