---
title: 结构化输出
---

## 简介

作为 LLM 工具链平台，Dify 支持 JSON 结构化输出功能。结构化输出功能可以确保 LLM 返回的数据格式可用、稳定、可预测，减少错误处理和格式转换的工作。

## 价值

-   **确保数据格式一致**：即使由 LLM 生成内容，也必须符合预设格式，避免数据混乱。

-   **方便后续节点处理**：数据库、API 或前端可以直接解析 JSON Schema，而无需额外数据清洗。

-   **提升低代码开发体验**：开发者无需手写复杂数据校验逻辑，直接使用 JSON Schema 约束输出。

## 如何实现结构化输出？

在 Dify 的操作界面中，可以通过以下两种方式实现结构化输出：

-   **方式一：直接定义工具参数**

-   **方式二：使用 LLM 节点中的 JSON Schema 编辑器**

### 方式一：直接定义工具参数

请参阅 **[Tool](https://docs.dify.ai/zh-hans/plugins/schema-definition/tool) > 数据结构 > 返回变量定义**。

### 方式二：使用 LLM 节点中的 JSON Schema 编辑器

请参阅 **[LLM](https://docs.dify.ai/zh-hans/guides/workflow/node/llm) > 高级功能 > 结构化输出** 与 **[LLM](https://docs.dify.ai/zh-hans/guides/workflow/node/llm) > 使用案例 > 结构化输出**。

## 异常处理方案

**异常情况**

在使用 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 失败。

**推荐处理方案**

1.  **优先使用支持 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 系列

2.  **适当调整系统提示词以增强指令遵循性，尽可能确保 LLM 输出符合 Schema 规范**。假如 JSON Schema 设计用于结构化数学公式的输入与输出，而系统提示词却要求模型进行法律条文解析，这种不匹配可能会导致模型无法正确理解任务，影响生成结果的准确性。

3.  **配置异常处理策略**。你可以在解析失败时考虑采取以下措施：

    1.  **配置失败时重试**：在节点内开启 **失败时重试** 功能并配置最大重试次数与重试间隔，以减少解析错误的影响。

    2.  **配置异常分支**：在节点内的 **异常处理** 中配置 **失败分支**。当节点发生异常时，将自动执行失败分支。

详情请参阅[异常处理](https://docs.dify.ai/zh-hans/guides/workflow/error-handling)。

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[编辑此页面](https://github.com/langgenius/dify-docs/edit/main/zh-hans/guides/workflow/structured-outputs.mdx) | [提交问题](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)

