结构化输出
Last updated
Last updated
作为 LLM 工具链平台,Dify 支持 JSON 结构化输出功能。结构化输出功能可以确保 LLM 返回的数据格式可用、稳定、可预测,减少错误处理和格式转换的工作。
确保数据格式一致:即使由 LLM 生成内容,也必须符合预设格式,避免数据混乱。
方便后续节点处理:数据库、API 或前端可以直接解析 JSON Schema,而无需额外数据清洗。
提升低代码开发体验:开发者无需手写复杂数据校验逻辑,直接使用 JSON Schema 约束输出。
在 Dify 的操作界面中,可以通过以下两种方式实现结构化输出:
方式一:直接定义工具参数
方式二:使用 LLM 节点中的 JSON Schema 编辑器
请参阅 > 数据结构 > 返回变量定义。
请参阅 > 高级功能 > 结构化输出 与 > 使用案例 > 结构化输出。
异常情况
在使用 JSON Schema 编辑器进行结构化输出时,可能会遇到以下限制和异常情况:
模型能力限制:部分 LLM(尤其是 70B 以下的模型或 GPT-3.5 Turbo 级别模型)在指令遵循性上较弱,可能导致 JSON Schema 解析失败。
格式兼容性:部分 LLM 仅支持 JSON mode 而非 JSON Schema,导致严格的 Schema 解析失败。
错误信息:出现错误 Failed to parse structured output: output is not a valid json str
。此类错误主要源于模型生成 JSON 失败。
推荐处理方案
优先使用支持 JSON Schema 的模型。推荐列表如下:
Gemini 2.0 Flash/Flash-Lite
Gemini 1.5 Flash 8B (0827/0924)
Gemini-1.5 pro
GPT-4o
GPT-4o-mini
o1-mini/o3-mini 系列
适当调整系统提示词以增强指令遵循性,尽可能确保 LLM 输出符合 Schema 规范。假如 JSON Schema 设计用于结构化数学公式的输入与输出,而系统提示词却要求模型进行法律条文解析,这种不匹配可能会导致模型无法正确理解任务,影响生成结果的准确性。
配置异常处理策略。你可以在解析失败时考虑采取以下措施:
配置失败时重试:在节点内开启 失败时重试 功能并配置最大重试次数与重试间隔,以减少解析错误的影响。
配置异常分支:在节点内的 异常处理 中配置 失败分支。当节点发生异常时,将自动执行失败分支。
详情请参阅。