Langflow 数据类型
Langflow 组件被设计为接受和产生特定类型的输入和输出。输入和输出数据类型定义了组件之间的信息结构和流动方式。理解这些结构有助于您构建能够提供有效输入并正确预期输出格式的应用程序。
组件端口表示每个组件可以发送和接收的数据类型。某些数据类型从它们所附加的字段中可以明显看出;例如,系统消息字段接受消息数据。端口颜色也指示了端口的数据类型。例如,数据端口由 表示,它们接受或发出结构化数据对象。
在构建流程时,将输出端口连接到相同类型(颜色)的输入端口,以便在两个组件之间传输该类型的数据。
数据
数据端口 接受或产生 Data
类型,这是一种结构化数据对象,就像您可能发送到 API 的 JSON 负载。此数据类型用于在组件之间传递键值对,例如用户配置文件、设置或其他结构化信息。
Data
对象包括一个由 text_key
指示的主要文本字段和额外的元数据。
架构和属性
架构在 data.py
中定义。
以下属性可用:
data
:Data
对象在.data
属性中存储键值对。这是Data
对象的核心字典。每个键是一个字段名,值可以是任何支持的数据类型。text_key
:data
中被视为主要文本值的键。default_value
:如果text_key
缺失时的回退值。默认的text_key
是"text"
。
_10data_obj = Data(_10 text_key="text",_10 data={_10 "text": "Hello world",_10 "name": "Charlie",_10 "age": 28_10 },_10 default_value=""_10)
Data
对象可以序列化为 JSON,从 JSON 创建,或从其他字典数据创建。但是,生成的 Data
对象是一个具有验证和方法的结构化对象,而不是普通字典。例如,当序列化为 JSON 时,前面的 Python 示例变为以下 JSON 对象:
_10{_10 "text_key": "text",_10 "data": {_10 "text": "Hello world",_10 "name": "Charlie",_10 "age": 28_10 },_10 "default_value": ""_10}
DataFrame
DataFrame 端口 接受或产生 pandas DataFrames,类似于表格式的 CSV 数据。
使用 DataFrame
类型处理包含多行或多条记录的数据。
架构和属性
架构在 dataframe.py
中定义。
以下属性可用:
-
完整的 pandas 兼容性:支持所有 pandas DataFrame 方法和功能
-
Langflow 集成:接受
Data
对象 列表、字典或现有的 DataFrame。 -
便捷方法:
to_data_list()
add_row()
add_rows()
to_lc_documents()
to_data()
to_message()
-
文本键支持:为
Data
对象 兼容性维护text_key
和default_value
属性。
DataFrame 结构
DataFrame 具有带有行和列的表格数据结构。键是列,数组中的每个对象都是一行。
_12[_12 {_12 "name": "Charlie Lastname",_12 "age": 28,_12 "email": "[email protected]"_12 },_12 {_12 "name": "Alexandra Example",_12 "age": 34,_12 "email": "[email protected]"_12 }_12]
当表示为表格数据时,前面的 DataFrame 对象结构如下:
_10| name | age | email |_10|------|-----|-------|_10| Charlie Lastname | 28 | [email protected] |_10| Alexandra Example | 34 | [email protected] |
嵌入
嵌入端口 用于发出或接收向量嵌入,以支持相似性搜索等功能。
Embeddings
数据类型专门用于生成或消费向量嵌入的组件,例如 嵌入模型组件 和 向量存储组件。
例如,嵌入模型组件输出 Embeddings
数据,您可以将其连接到向量存储组件的嵌入输入端口。
有 关生成 Embeddings
的底层 Python 类的信息,请参阅 LangChain 嵌入模型文档。
语言模型
LanguageModel
类型是一种特定的数据类型,可由语言模型组件生成,并被使用 LLM 的组件接受。
当您将语言模型组件的输出类型从模型响应更改为语言模型时,组件的输出端口会从消息端口更改为语言模型端口 。
然后,您可以将输出的语言模型端口连接到兼容组件上的语言模型输入端口,例如智能函数组件。
有关在流程中使用这些组件和切换 LanguageModel
输出的更多信息,请参阅 语言模型组件。
LanguageModel 是 LangChain ChatModel 的实例
由于 Langflow 基于 LangChain 构建,LanguageModel
实际上是 LangChain 聊天模型 的一个实例,它使用源组件中设置的配置参数。
通常,组件会生成一个 集成聊天模型 的实例,该实例旨在支持特定的模型提供商,例如 ChatOpenAI
或 ChatAnthropic
。
您可以检查 组件代码 以查看它生成的特定 Chat
实例。
内存
内存端口 用于将消息历史组件与外部聊天内存存储集成。
有关更多信息,请参阅 消息历史组件。
消息
消息端口 接受或生成 Message
数据,该数据扩展了 Data
类型,添加了用于文本输入的额外字段和方法,通常用于聊天流程中。
许多组件使用此数据类型。
接受或生成 Message
数据的组件可能不会在传入或传出的 Message
数据中包含所有属性。
只要数据与 Message
模式兼容,它就是有效的。
在构建流程时,请关注工作区中每个组件上显示的字段,而不是组件之间传递的数据类型。 特定数据类型的详细信息通常只在您调试未产生预期输出的流程或组件时才相关。
例如,聊天输入组件只需要输入文本 (input_value
) 字段的内容。
然后,该组件在将数据传递给流程中的其他组件之前,会构建一个完整的 Message
对象。
架构、结构和属性
Message
架构在 message.py
中定义。
一些 Message
属性有自己的架构定义,例如 content_block.py
。
Message
数据结构化为 JSON 对象。
例如:
_10{_10 "text": "Name: Charlie Lastname, Age: 28, Email: [email protected]",_10 "sender": "User",_10 "sender_name": "Charlie Lastname",_10 "session_id": "some-session-id",_10 "timestamp": "2024-06-01T12:00:00Z",_10 "files": [],_10 "content_blocks": [],_10 "category": "message"_10}
特定 Message
对象中包含的属性取决于上下文,包括组件类型、流活动以及消息是查询还是响应。
一些常见属性包括以下内容:
text
: 主要消息内容。sender
: 标识聊天消息的发起者为User
或Language Model
。sender_name
: 发送者的显示名称。默认为User
或Language Model
。session_id
: 聊天 会话标识符。flow_id
: 消息关联的流的 ID。如果流不使用自定义会话 ID,则flow_id
和session_id
相同。timestamp
: 消息发送的 UTC 时间戳。files
: 包含在消息中的文件路径或图像列表content_blocks
: 用于富内容输入的容器,如文本、媒体或代码。如果 LLM 无法处理输入,还包含错误信息。category
:"message"
、"error"
、"warning"
或"info"
。
并非所有属性都是必需的,一些组件接受消息兼容的输入,例如原始文本输入。 严格性取决于组件。
输入和输出组件中的消息数据
在使用 聊天输入和输出 组件 的流中,Message
数据为聊天交互提供了一致的结构,非常适合聊天机器人、对话分析以及其他基于与 LLM 或代理对话的用例。
在这些流中,Playground 聊天界面仅打印与对话相关的 Message
属性,例如 text
、files
和来自 content_blocks
的错误消息。
要查看所有 Message
属性,请在 Playground 中检查消息日志。
在使用 文本输入和输出 组件 的流中,Message
数据用于传递简单的文本字符串,而不包含聊天相关的元数据。
这些组件将 Message
数据作为独立的文本字符串处理,而不是作为持续对话的一部分。
因此,仅包含 文本输入和输出 组件的流与 Playground 不兼容。
有关更多信息,请参阅 输入和输出 组件。
使用 Langflow API 时,响应包含 Message
对象以及来自流运行的其他响应数据。
Langflow API 响应可能非常冗长,因此您的应用程序必须包含代码以从响应中提取相关数据返回给用户。
有关示例,请参阅 Langflow 快速入门。
此外,发送到输入/输出组件输入端口的输入不需要是完整的 Message
对象,因为组件会构造 Message
对象,然后将其传递给流中的其他组件或作为流输出返回。
实际上,一些组件不应接收完整的 Message
对象,因为某些属性(如 timestamp
)应由组件添加以确保准确性。
工具
工具 端口 将工具连接到 代理 组件。
工具可以是您启用了 工具模式 的其他组件,可以是专用的 MCP 工具 组件,也可以是仅支持 工具模式 的其他组件。 多个工具可以同时连接到同一个 代理 组件的同一端口。
从功能上讲,Tool
数据是一个 LangChain StructuredTool
对象,可以在代理流中使用。
有关更多信息,请参阅 为代理配置工具 和 将 Langflow 用作 MCP 客户端。
未知或多种类型
如果某个端口可以接受或生成多种数据类型,它将由灰色端口图标 表示。
将鼠标悬停在端口上以查看接受或生成的数据类型。
在流程中查看数据类型
在 Langflow 中,您可以使用 检查输出 来查看各个组件的输出。 这可以帮助您了解不同的数据类型,并调试无效或格式错误的输入和输出问题。
以下示例展示了如何检查 类型转换 组件 的输出,该组件可以将数据从一种类型转换为另一种类型:
-
创建一个流程,然后将 聊天输入 组件连接到 类型转换 组件。
-
在 聊天输入 组件中,输入一些文本供类型转换器处理。
-
在 类型转换 组件上,点击 运行组件,然后点击 检查输出。
默认输出是
Message
数据,与来自 聊天输入 组件的输入相同。 要查看Message
数据转换为Data
或DataFrame
,请更改 类型转换 组件上的 输出类型,然后重新运行该组件。- Message
- Data
- DataFrame
_10Input text_30{_30"timestamp": "2025-07-15 20:56:20 UTC",_30"sender": "User",_30"sender_name": "User",_30"session_id": "a0c7e888-4fd6-4242-b8c8-e761ad690aeb",_30"text": "",_30"files": [],_30"error": false,_30"edit": false,_30"properties": {_30"text_color": "",_30"background_color": "",_30"edited": false,_30"source": {_30"id": null,_30"display_name": null,_30"source": null_30},_30"icon": "",_30"allow_markdown": false,_30"positive_feedback": null,_30"state": "complete",_30"targets": []_30},_30"category": "message",_30"content_blocks": [],_30"id": "9da72da2-efbb-4ccd-90ad-b32429b0418e",_30"flow_id": "a0c7e888-4fd6-4242-b8c8-e761ad690aeb",_30"duration": null_30}_16| Field | Value |_16|-------|-------|_16| timestamp | 2025-07-15 20:56:11 UTC |_16| sender | User |_16| sender_name | User |_16| session_id | a0c7e888-4fd6-4242-b8c8-e761ad690aeb |_16| text | (empty) |_16| files | [] |_16| error | False |_16| edit | False |_16| properties | text_color: '', background_color: '', edited: False, source: {id: None, display_name: None, source: None}, icon: '', allow_markdown: False, positive_feedback: None, state: 'complete', targets: [] |_16| category | message |_16| content_blocks | [] |_16| id | 341686eb-7a39-4b80-a90a-d8bf267815ef |_16| flow_id | a0c7e888-4fd6-4242-b8c8-e761ad690aeb |_16| duration | (empty) |