结构化输出
Structured Output 组件使用 LLM 根据自然语言格式说明和输出 Schema,把任意输入转换为结构化数据(Data 或 DataFrame)。
例如,它可以从邮件、报告或科研文献中提取你真正关心的字段。
在流程中使用 Structured Output
要在流程中使用 Structured Output,请按以下方式配置:
-
提供 Input Message,也就是你希望从中提取结构化数据的源文本。 它几乎可以来自任意组件,但最常见的是 Chat Input、Read File 等能产生非结构化或半结构化内容的组件。
提示不是所有源内容都必须完整转成结构化输出。 Structured Output 的价值在于:你可以明确指定“要抽取什么信息”,即使这些信息没有被显式标注,或者不是简单关键词匹配,LLM 仍可根据你 的说明提取并整理成目标结构。 不相关内容不会被纳入最终输出。
-
定义 Format Instructions 和 Output Schema,说明要从源文本中提取哪些字段,以及最终要组织成什么结构。
Format Instructions 本质上是一段 Prompt,用于告诉 LLM:提取什么、如何格式化、如何处理异常,以及其他与结构化整理相关的规则。
Output Schema 则是一张表,用于定义字段(键)及其类型,决定最终
Data或DataFrame输出的结构。 更多说明请参阅Output Schema 选项。 -
连接一个输出类型为
LanguageModel的语言模型组件。LLM 会使用 Structured Output 中的 Input Message 与 Format Instructions 来抽取输入文本中的目标信息。 然后再按 Output Schema 把模型结果映射为最终的
Data或DataFrame结构化对象。 -
可选:通常情况下,结构化结果会继续传给下游组件,用于进一步处理,例如 Parser 或 Data Operations。

Structured Output 示例:Financial Report Parser 模板
Financial Report Parser 模板展示了 Structured Output 如何从非结构化文本中提取结构化数据。
该模板中的 Structured Output 组件配置如下:
-
Input Message 来自一个预填了财报摘录的 Chat Input 组件
-
Format Instructions 示例如下:
_10You are an AI that extracts structured JSON objects from unstructured text._10Use a predefined schema with expected types (str, int, float, bool, dict)._10Extract ALL relevant instances that match the schema - if multiple patterns exist, capture them all._10Fill missing or ambiguous values with defaults: null for missing values._10Remove exact duplicates but keep variations that have different field values._10Always return valid JSON in the expected format, never throw errors._10If multiple objects can be extracted, return them all in the structured format. -
Output Schema 中定义了
EBITDA、NET_INCOME和GROSS_PROFIT等字段
生成的结构化 Data 会再传给 Parser 组件,后者使用模板中的变量把这些字段转成文本:
_10EBITDA: {EBITDA} , Net Income: {NET_INCOME} , GROSS_PROFIT: {GROSS_PROFIT}
在 Playground 中输出时,变量会被 Structured Output 提取出的实际值替换,例如:
_10EBITDA: 900 million , Net Income: 500 million , GROSS_PROFIT: 1.2 billion
Structured Output 参数
有些参数在可视化编辑器中默认处于隐藏状态。 你可以通过组件标题栏菜单中的 控件 来修改全部参数。
| Name | Type | Description |
|---|---|---|
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 | 输入参数。描述目标结构化输出的表结构,最终决定 Data 或 DataFrame 输出内容。详见Output Schema 选项。 |
Structured Output (structured_output) | Data or DataFrame | 输出参数。组件生成的最终结构化结果。你可以在输出端口附近选择 Structured Output Data 或 Structured Output DataFrame 两种输出形式。 |
Output Schema 选项
在 LLM 根据 Input Message 与 Format Instructions 完成抽取后,结果会按照 Output Schema 进行组织。
Schema 是一张表,用来定义最终 Data 或 DataFrame 输出中的字段(键)和数据类型。
默认 Schema 只有一个名为 field 的字符串字段。
如果你想新增字段,请点击 Add a new row,然后依次填写各列:
-
Name:输出字段名称,通常对应一个你想抽取的具体键。
这些键可以在下游组件中继续作为变量使用,例如在 Parser 模板里引用。 比如 Schema 中的
NET_INCOME就可以通过{NET_INCOME}访问。 -
Description:可选的元数据说明,用于描述字段的含义与用途。
-
Type:字段值的数据类型。 支持
str(默认)、int、float、bool和dict。 -
As List:若启用,则该字段保存为列表,而不是单值。
对于简单场景,你可能只需要抽取少量 string 或 int 字段。
对于更复杂的 Schema(例如包含列表和字典),建议结合 SkillFlaw 数据类型 中对 Data 与 DataFrame 的说明一起理解。
你也可以先输出一个较粗粒度的 Data 或 DataFrame,再通过下游组件继续细化,例如 Data Operations