跳到主要内容

结构化输出

Structured Output 组件使用 LLM 根据自然语言格式说明和输出 Schema,把任意输入转换为结构化数据(DataDataFrame)。 例如,它可以从邮件、报告或科研文献中提取你真正关心的字段。

在流程中使用 Structured Output

要在流程中使用 Structured Output,请按以下方式配置:

  1. 提供 Input Message,也就是你希望从中提取结构化数据的源文本。 它几乎可以来自任意组件,但最常见的是 Chat InputRead File 等能产生非结构化或半结构化内容的组件。

    提示

    不是所有源内容都必须完整转成结构化输出。 Structured Output 的价值在于:你可以明确指定“要抽取什么信息”,即使这些信息没有被显式标注,或者不是简单关键词匹配,LLM 仍可根据你的说明提取并整理成目标结构。 不相关内容不会被纳入最终输出。

  2. 定义 Format InstructionsOutput Schema,说明要从源文本中提取哪些字段,以及最终要组织成什么结构。

    Format Instructions 本质上是一段 Prompt,用于告诉 LLM:提取什么、如何格式化、如何处理异常,以及其他与结构化整理相关的规则。

    Output Schema 则是一张表,用于定义字段(键)及其类型,决定最终 DataDataFrame 输出的结构。 更多说明请参阅Output Schema 选项

  3. 连接一个输出类型为 LanguageModel语言模型组件

    LLM 会使用 Structured Output 中的 Input MessageFormat Instructions 来抽取输入文本中的目标信息。 然后再按 Output Schema 把模型结果映射为最终的 DataDataFrame 结构化对象。

  4. 可选:通常情况下,结构化结果会继续传给下游组件,用于进一步处理,例如 ParserData Operations

A basic flow with Structured Output, Language Model, Type Convert, and Chat Input and Output components.

Structured Output 示例:Financial Report Parser 模板

Financial Report Parser 模板展示了 Structured Output 如何从非结构化文本中提取结构化数据。

该模板中的 Structured Output 组件配置如下:

  • Input Message 来自一个预填了财报摘录的 Chat Input 组件

  • Format Instructions 示例如下:


    _10
    You are an AI that extracts structured JSON objects from unstructured text.
    _10
    Use a predefined schema with expected types (str, int, float, bool, dict).
    _10
    Extract ALL relevant instances that match the schema - if multiple patterns exist, capture them all.
    _10
    Fill missing or ambiguous values with defaults: null for missing values.
    _10
    Remove exact duplicates but keep variations that have different field values.
    _10
    Always return valid JSON in the expected format, never throw errors.
    _10
    If multiple objects can be extracted, return them all in the structured format.

  • Output Schema 中定义了 EBITDANET_INCOMEGROSS_PROFIT 等字段

生成的结构化 Data 会再传给 Parser 组件,后者使用模板中的变量把这些字段转成文本:


_10
EBITDA: {EBITDA} , Net Income: {NET_INCOME} , GROSS_PROFIT: {GROSS_PROFIT}

Playground 中输出时,变量会被 Structured Output 提取出的实际值替换,例如:


_10
EBITDA: 900 million , Net Income: 500 million , GROSS_PROFIT: 1.2 billion

Structured Output 参数

有些参数在可视化编辑器中默认处于隐藏状态。 你可以通过组件标题栏菜单中的 控件 来修改全部参数。

NameTypeDescription
Language Model (llm)LanguageModel输入参数。来自 Language Model 组件的 LanguageModel 输出,用于指定执行抽取与格式化的 LLM。
Input Message (input_value)String输入参数。用于提取的源文本。
Format Instructions (system_prompt)String输入参数。指导语言模型如何抽取和格式化输出的说明。
Schema Name (schema_name)String输入参数。Output Schema 的可选标题。
Output Schema (output_schema)Table输入参数。描述目标结构化输出的表结构,最终决定 DataDataFrame 输出内容。详见Output Schema 选项
Structured Output (structured_output)Data or DataFrame输出参数。组件生成的最终结构化结果。你可以在输出端口附近选择 Structured Output DataStructured Output DataFrame 两种输出形式。

Output Schema 选项

在 LLM 根据 Input MessageFormat Instructions 完成抽取后,结果会按照 Output Schema 进行组织。

Schema 是一张表,用来定义最终 DataDataFrame 输出中的字段(键)和数据类型。

默认 Schema 只有一个名为 field 的字符串字段。

如果你想新增字段,请点击 Add a new row,然后依次填写各列:

  • Name:输出字段名称,通常对应一个你想抽取的具体键。

    这些键可以在下游组件中继续作为变量使用,例如在 Parser 模板里引用。 比如 Schema 中的 NET_INCOME 就可以通过 {NET_INCOME} 访问。

  • Description:可选的元数据说明,用于描述字段的含义与用途。

  • Type:字段值的数据类型。 支持 str(默认)、intfloatbooldict

  • As List:若启用,则该字段保存为列表,而不是单值。

对于简单场景,你可能只需要抽取少量 stringint 字段。 对于更复杂的 Schema(例如包含列表和字典),建议结合 SkillFlaw 数据类型 中对 DataDataFrame 的说明一起理解。 你也可以先输出一个较粗粒度的 DataDataFrame,再通过下游组件继续细化,例如 Data Operations