使用 AI 构建软件的最大挑战在于不可预测性。要求 AI 提供一个 “JSON 列表”可能会导致代码块、Markdown 表格或带有尾随逗号的文本。结构化输出 (Structured Outputs) 强制 AI 遵守严格的架构 (schema),确保您的代码始终可以解析结果。
“原始” AI 响应的问题
当您要求 AI “返回 5 个城市的列表”时,您可能会得到:
- 编号列表。
- 项目符号列表。
- 一段文字。
在生产应用程序中可靠地解析这些几乎是不可能的。
解决方案:JSON Schema 与结构化输出
ModelRiver 使用行业标准的 JSON Schema 来定义预期输出。当您通过启用结构化输出的 工作流 (Workflow) 发送请求时,ModelRiver 会:
- 注入 Schema 指令:自动格式化提示词,准确告诉 AI JSON 的样式。
- 验证输出:在 AI 的响应到达您的应用程序之前,根据您的架构 (schema) 对其进行检查。
- 自动重试:如果 AI 产生格式错误的 JSON,ModelRiver 可以自动重试或尝试修复格式。
设计稳健的 AI 架构 (Schema)
良好的架构 (schema) 是可靠 AI 功能的基础。
1. 明确类型
不要只使用 string,对于选项有限的字段使用 enum(例如,status: "approved" | "pending" | "rejected")。
2. 使用说明 (Descriptions)
JSON 架构中的每个字段都可以有一个 description。ModelRiver 将这些作为上下文传递给 AI,从而显着提高准确性。
3. 要求基本字段
将关键字段标记为 required,以确保 AI 在不确定的情况下不会跳过它们。
生产应用程序的优势
类型安全(TypeScript/类型化语言)
通过接收有保证的 JSON,您可以使用自动化工具生成 TypeScript 接口,为您提供从 AI 响应到 UI 组件的完整类型安全性。
减少幻觉
通过将输出空间限制在特定的架构 (schema) 内,模型不太可能进入无关的文本或提供不存在的数据。
无缝后端集成
结构化数据可以直接插入数据库、发送到 webhooks 或用于触发逻辑,而无需复杂的正则表达式或二次 “清理” 提示。
如何实现结构化输出
使用 ModelRiver,您无需编写复杂的系统提示词。
- 在控制台中通过提供示例 JSON 对象定义结构 (Structure)。
- 将结构附加到工作流中。
- 在代码中调用该工作流。
SDK 将返回解析后的 JavaScript 对象,而不是原始字符串。