AI工具参数校验:required与additionalProperties

为AI工具定义JSON Schema时,properties描述已有字段怎样校验,并不自动要求字段出现。需要必填就写required,需要拒绝未知字段则配置additionalProperties;三者承担不同职责。

浅色数据表格与JSON结构卡片
浅色主题概念配图,选自本站AI生成图库;非事件现场或产品实测截图。

先用一个没有副作用的查询参数做练习

自拟工具只有query字段,要求它是非空字符串,不接受其他字段。Schema采用2020-12草案。下面代码需在隔离Python环境安装jsonschema包;本站已用该包运行这些断言,没有调用真实工具。

from jsonschema import Draft202012Validator

schema = {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {"query": {"type": "string", "minLength": 1}},
    "required": ["query"],
    "additionalProperties": False,
}
Draft202012Validator.check_schema(schema)
v = Draft202012Validator(schema)
assert v.is_valid({"query": "CSV"})
assert not v.is_valid({})
assert not v.is_valid({"query": ""})
assert not v.is_valid({"query": None})
assert not v.is_valid({"query": "CSV", "debug": True})
print("five cases passed")
输入 拒绝原因
{} 缺少required中的query
{"query":""} 字符串长度不足
{"query":null} 类型不符合string
额外带debug字段 不允许未声明字段

每去掉一项,允许范围都会变化

删去required后,空对象可以通过其余约束;删去additionalProperties限制后,额外的debug不会仅因未声明而失败;删去minLength则空字符串仍是合法字符串。检查模型输出时,应针对这些分支分别准备反例。

Schema通过之后还有业务检查

非空字符串也可能只是空格,或者包含超出业务允许范围的查询。身份、数据访问范围、速率限制和工具的真实执行条件不能交给Schema包办。AI提供的字段要当作输入数据处理,验证通过也不自动获得敏感操作权限。

复杂Schema使用allOf等组合时,额外字段的判定还涉及声明范围,不能把这个最小对象模板机械套用。接入不同模型平台前,也应核对其支持的Schema子集。

资料来源与继续学习

资料查阅日期:2026年10月15日。示例、阅读练习与操作建议由本站整理。

资料查阅与编辑日期:2026年10月15日。作者:玖柒。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享