模型返回字符串 。
您的组件需要一个对象 。
这两个句子之间的一切都是AI的特性在生产中断裂的地方,一个Zod schema可以拥有它的全部:发送到模型的束缚,对回来的东西的验证,驱动修复的出错文本,以及组件所消耗的TypeScript类型.
一个计划,四个工作 该宣言现在有四件事。
这是运行时间验证器 。
它是编译时间类型,通过.,所以类型和检查不能相去甚远——这是Zod在手写接口上加上手写后卫的整个论据.
它会生成作为模型输出约束的 JSON Schema 。
当验证失败时,它会产生一个结构化错误,精确到足以作为修理指令交还.
佐德四号舰是内置的 Zod 3没有,通常的答案是单独的包.
请检查date=中的日期值 (帮助) 哪些主要版本位于您 : 有多个表面在二者之间移动,包括字符串格式验证器的住址 。
这是页面上一个版本敏感行.
字段是针对提供者的,其形状因提供者和版本而异——这是本页面上第二个对照当前文档而不是复制.
没有什么不同的原则是:当一个提供者支持对照一个计划进行受约束的解码时,使用它,因为它使得JSON的畸形不可能,而不是不可能.
本页的其余部分是针对那些完全不可能的模型。
解析边界 两个失败在这里存在,它们需要不同的处理:字符串不是JSON,或者是JSON不匹配.
充气意味着修理提示告诉模型错误的事情.
而不是故意地: 扔入路由处理器 变成了500个和堆积的痕迹, 当你实际拥有的是一个可收回的情况 与已知的下一步。
平整成行并不是表面的——这个文本是修理后发回的,所以值得读取.
修复:将错误反馈回 一个产生近乎正确的JSON的模型,当被准确告知错误时,通常会产生正确的JSON.
修道会转会是便宜的:它只重新发送被破损的输出和出错,而不是原始文档,所以它的输入是几百个符号,而不是几千个.
一个修复尝试,不是一个循环。
针对同一明确错误消息的两个失败几乎从不成为第三个成功:模型对格式没有混淆,它不同意计划或者文档没有包含信息.
循环在那里会把快故障变成一个缓慢而昂贵的故障,这是回旋成本的一般形状.
升级梯子,费用上限 天花板是函数的点.
没有它,这个模型真正不能从中提取的文档——被扫描粘贴为"bber",这个字段在源头中并不存在——成为了针对付费API的无约束回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回旋回 3次努力用硬制止方式 将最坏的情况限制在 3 倍的最好情况上, 这是你能预算的数字。
返回一个无效的结果 而不是扔。
呼叫者有真正的决定:排队进行人文审查,显示部分结果,或者要求用户重述.
一个例外 迫使所有三进一。
Schemas 一个模型实际上可以满足所有计划失败的一半是计划的错.
限制模式可以可靠地满足,它们不能可靠地分开。
规则描述平地被击倒 筑巢的三级产生的结构出错比单独取出的三个顶级物体要多.
深度成本精度为表达性无益.
Enums 击败了自由字符串 z.enum([.]) 给模型一个关闭的集.
一个类别的自由z.string()在一千个文档中产生十四个相同事物的拼写.
无效跳动可选 缺失的密钥在不适用和未找到之间含糊不清。
一个明显的无效是决定模式,你可以采取行动。
描述每一个 fie