跳到主要内容

结构化输出 (Structured Output)

结构化输出 (Structured Output) 组件使用 LLM,通过自然语言格式化指令和输出模式定义,将任何输入转换为结构化数据(DataDataFrame)。 例如,您可以从邮件消息或科学论文等文档中提取特定细节。

在流中使用结构化输出组件

要在流中使用 结构化输出 (Structured Output) 组件,请执行以下操作:

  1. 提供 输入消息 (Input Message),这是您想要从中提取结构化数据的源材料。 这几乎可以来自任何组件,但通常是 聊天输入 (Chat Input)读取文件 (Read File) 或其他提供非结构化或半结构化输入的组件。

    提示

    并非所有源材料都必须变成结构化输出。 结构化输出 组件的强大之处在于您可以指定想要提取的信息,即使该数据没有明确标记或不是精确的关键词匹配。 然后,LLM 可以使用您的指令分析源材料,提取相关数据,并根据您的规格进行格式化。 任何不相关的源材料都不会包含在结构化输出中。

  2. 定义 格式化指令 (Format Instructions)输出模式 (Output Schema),以指定要从源材料中提取的数据以及如何在最终的 DataDataFrame 输出中对其进行结构化。

    指令是告诉 LLM 提取什么数据、如何格式化、如何处理异常以及与准备结构化数据相关的任何其他指令的提示词。

    模式是一个表格,定义了将 LLM 提取的数据组织成结构化 DataDataFrame 对象所需的字段(键)和数据类型。 更多信息请参阅 输出模式选项

  3. 连接一个设置为发出 LanguageModel 输出的 语言模型组件

    LLM 使用来自 结构化输出 组件的 输入消息 (Input Message)格式化指令 (Format Instructions) 从输入文本中提取特定的数据片段。 输出模式应用于模型的响应,以生成最终的 DataDataFrame 结构化对象。

  4. 可选:通常,结构化输出会传递给下游组件,这些组件将提取的数据用于其他流程,例如 解析器 (Parser)数据操作 (Data Operations) 组件。

包含结构化输出、语言模型、类型转换以及聊天输入和输出组件的基础流。

结构化输出示例:财务报告解析器模板

财务报告解析器 (Financial Report Parser) 模板提供了一个如何使用 结构化输出 组件从非结构化文本中提取结构化数据的示例。

该模板的 结构化输出 组件配置如下:

  • 输入消息 (Input Message) 来自一个预加载了样本财务报告引用的 聊天输入 (Chat Input) 组件。

  • 格式化指令 (Format Instructions) 如下:


    _10
    你是一个从非结构化文本中提取结构化 JSON 对象的 AI。
    _10
    使用具有预期类型(str、int、float、bool、dict)的预定义模式。
    _10
    提取所有匹配模式的相关实例 - 如果存在多个模式,请全部捕获。
    _10
    对于缺失或模糊的值,使用默认值填充:缺失值填充为 null。
    _10
    删除完全重复的内容,但保留具有不同字段值的变体。
    _10
    始终以预期格式返回有效的 JSON,切勿抛出错误。
    _10
    如果可以提取多个对象,请以结构化格式全部返回。

  • 输出模式 (Output Schema) 包含 EBITDANET_INCOMEGROSS_PROFIT 的键。

结构化 Data 对象传递给 解析器 (Parser) 组件,该组件通过将模式键映射到解析模板中的变量来生成文本字符串:


_10
EBITDA: {EBITDA} , 净收入 (Net Income): {NET_INCOME} , 毛利 (GROSS_PROFIT): {GROSS_PROFIT}

当打印到 游乐场 (Playground) 时,生成的 Message 会将变量替换为 结构化输出 组件提取的实际值。例如:


_10
EBITDA: 9 亿 , 净收入 (Net Income): 5 亿 , 毛利 (GROSS_PROFIT): 12 亿

结构化输出参数

Some parameters are hidden by default in the visual editor. You can modify all parameters through the Controls in the component's header menu.

名称类型描述
语言模型 (llm)LanguageModel输入参数。来自 语言模型 组件的 LanguageModel 输出,定义了用于分析、提取和准备结构化输出的 LLM。
输入消息 (input_value)字符串输入参数。包含用于提取的源材料的输入消息。
格式化指令 (system_prompt)字符串输入参数。给语言模型用于提取和格式化输出的指令。
模式名称 (schema_name)字符串输入参数。输出模式 (Output Schema) 的可选标题。
输出模式 (output_schema)表格输入参数。描述所需结构化输出模式的表格,最终决定 DataDataFrame 输出的内容。请参阅 输出模式选项
结构化输出 (structured_output)Data or DataFrame输出参数。组件生成的最终结构化输出。在组件输出端口附近,您可以选择输出数据类型为 结构化输出数据 (Structured Output Data)结构化输出数据框 (Structured Output DataFrame)。输出的具体内容和结构取决于输入参数。

输出模式选项

在 LLM 从 输入消息 (Input Message)格式化指令 (Format Instructions) 中提取相关数据后,数据将根据 输出模式 (Output Schema) 进行组织。

模式是一个表格,定义了 结构化输出 组件最终输出的 DataDataFrame 的字段(键)和数据类型。

默认模式是单个 field 字符串。

要向模式添加键,请点击 添加新行,然后编辑每一列以定义模式:

  • 名称 (Name):输出字段的名称。通常是您想要提取值的特定键。

    您可以在下游组件中将这些键作为变量引用,例如 解析器 (Parser) 组件的模板。 例如,模式键 NET_INCOME 可以通过变量 {NET_INCOME} 引用。

  • 描述 (Description):字段内容和用途的可选元数据描述。

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

  • 作为列表 (As List):如果您希望该字段包含值列表而不是单个值,请启用此设置。

对于简单的模式,您可能只需提取几个 stringint 字段。 对于包含列表和字典的更复杂的模式,参考 DataDataFrame 的结构和属性可能会有所帮助,如 Langflow 数据类型 中所述。 您也可以发出一个粗略的 DataDataFrame,然后使用下游组件进行进一步细化,例如 数据操作 (Data Operations) 组件。

Search