跳到主要内容

Langflow 对象

在 Langflow 中,对象是充当数据结构化、功能性表示的 Pydantic 模型。

Data 对象

Data 对象是充当数据存储和操作容器的 Pydantic 模型。它包含 data——一个可以作为属性访问的字典——并使用 text_key 指定字典中哪个键应被视为主文本内容。

  • 主要属性
    • text_key: 指定用于检索主文本数据的键。
    • data: 用于存储额外数据的字典。
    • default_value: 当 text_key 不存在于 data 字典中时的默认值。

创建 Data 对象

通过直接为其分配键值对来创建 Data 对象。例如


_10
from langflow.schema import Data
_10
_10
# 使用指定的键值对创建 Data 对象
_10
data = Data(text="my_string", bar=3, foo="another_string")
_10
_10
# 输出
_10
print(data.text) # Outputs: "my_string"
_10
print(data.bar) # Outputs: 3
_10
print(data.foo) # Outputs: "another_string"

text_key 指定 data 字典中哪个键应被视为主文本内容。如果 text_key 不存在,default_value 提供了一个备用值。


_10
# 创建具有特定 text_key 和 default_value 的 Data 对象
_10
data = Data(data={"title": "Hello, World!"}, text_key="content", default_value="No content available")
_10
_10
# 使用 text_key 和 default_value 访问主文本
_10
print(data.get_text()) # Outputs: "No content available" because "content" key is not in the data dictionary
_10
_10
# 通过直接调用属性访问数据键
_10
print(data.title) # Outputs: "Hello, World!" because "title" key is in the data dictionary

Data 对象也便于输出的可视化,因为输出预览具有可视元素,可以将数据作为表格进行检查,并将其单元格作为基本类型的弹出窗口。这样做的目的是创建一个统一的方式来处理和可视化 Langflow 中的复杂信息。

要在组件输入中接收 Data 对象,请使用 DataInput 输入类型。


_10
inputs = [
_10
DataInput(name="data", display_name="数据", info="关于传入数据对象的有用信息。", is_list=True),
_10
]

Message 对象

Message 对象扩展了 Data 的功能,并包含了用于聊天交互的额外属性和方法。

  • 核心消息数据

    • text: 消息的主要文本内容
    • sender: 发送者标识符(“用户”或“AI”)
    • sender_name: 发送者名称
    • session_id: 聊天会话标识符(stringUUID
    • timestamp: 消息创建时的时间戳(UTC)
    • flow_id: 流程标识符(stringUUID
    • id: 消息的唯一标识符
  • 内容和文件

    • files: 与消息关联的文件或图像列表
    • content_blocks: 结构化内容块对象列表
    • properties: 包括视觉样式和源信息的额外属性
  • 消息状态

    • error: 布尔值,指示是否存在错误
    • edit: 布尔值,指示消息是否被编辑
    • category: 消息类别(“消息”、“错误”、“警告”、“信息”)

Message 对象可用于在 Langflow 中发送、存储和操作聊天消息。

创建 Message 对象

您可以通过直接为其分配键值对来创建 Message 对象。例如


_10
from langflow.schema.message import Message
_10
_10
message = Message(text="Hello, AI!", sender="User", sender_name="John Doe")

要在组件输入中接收 Message 对象,您可以使用 MessageInput 输入类型,或者当目标是仅提取 Message 对象的 text 字段时,使用 MessageTextInput

ContentBlock 对象

ContentBlock 对象是多个 ContentType 的列表。它允许您在单个 Message 中包含多种类型的内容,包括图像、视频和文本。

内容类型是根据 content_types.py 中的类型构建的 Pydantic 基类。

每种内容类型都有与其数据类型相关的特定字段。例如

  • TextContent 有一个 text 字段用于存储文本字符串
  • MediaContent 有一个 urls 字段用于存储媒体文件 URL
  • CodeContentcodelanguage 字段用于代码片段
  • JSONContent 有一个 data 字段用于存储任意 JSON 数据
  • ToolContent 有一个 tool_input 字段用于存储工具的输入参数

创建 ContentBlock 对象

使用不同内容类型的列表创建 ContentBlock 对象。


_10
content_block = ContentBlock(
_10
title="混合内容示例",
_10
contents=[
_10
TextContent(text="这是文本内容"),
_10
MediaContent(urls=["http://example.com/image.jpg"]),
_10
JSONContent(data={"key": "value"}),
_10
CodeContent(code="print('Hello')", language="python")
_10
],
_10
media_url=["http://example.com/additional_image.jpg"]
_10
)

向消息添加 ContentBlock 对象

在此示例中,将文本和媒体 ContentBlock 添加到消息中。


_23
from langflow.schema.message import Message
_23
from langflow.schema.content_block import ContentBlock
_23
from langflow.schema.content_types import TextContent, MediaContent
_23
_23
message = Message(
_23
text="主消息文本",
_23
sender="User",
_23
sender_name="John Doe",
_23
content_blocks=[
_23
ContentBlock(
_23
title="文本块",
_23
contents=[
_23
TextContent(type="text", text="这是一些文本内容")
_23
]
_23
),
_23
ContentBlock(
_23
title="媒体块",
_23
contents=[
_23
MediaContent(type="media", urls=["http://example.com/image.jpg"])
_23
]
_23
)
_23
]
_23
)

DataFrame 对象

DataFrame 类是 Pandas DataFrame 类的自定义扩展,专门设计用于与 Langflow 的 Data 对象无缝协作。该类包含用于在 DataFrameData 对象列表之间进行转换的方法。

DataFrame 对象接受各种输入格式,包括 Data 对象列表、字典和现有 DataFrame

创建 DataFrame 对象

您可以使用不同的数据格式创建 DataFrame 对象


_31
from langflow.schema import Data
_31
from langflow.schema.data import DataFrame
_31
_31
# 从 Data 对象列表创建
_31
data_list = [Data(data={"name": "John"}), Data(data={"name": "Jane"})]
_31
df = DataFrame(data_list)
_31
_31
# 从字典列表创建
_31
dict_list = [{"name": "John"}, {"name": "Jane"}]
_31
df = DataFrame(dict_list)
_31
_31
# 从列表字典创建
_31
data_dict = {"name": ["John", "Jane"], "age": [30, 25]}
_31
df = DataFrame(data_dict)
_31
关键方法
_31
to_data_list(): 将 DataFrame 转换回 Data 对象列表。
_31
add_row(data): 向 DataFrame 添加单行(可以是 Data 对象或字典)。
_31
add_rows(data): 向 DataFrame 添加多行(Data 对象或字典列表)。
_31
使用示例
_31
python
_31
# 创建 DataFrame
_31
df = DataFrame([Data(data={"name": "John"}), Data(data={"name": "Jane"})])
_31
_31
# 添加新行
_31
df = df.add_row({"name": "Alice"})
_31
_31
# 转换回 Data 对象列表
_31
data_list = df.to_data_list()
_31
_31
# 使用 pandas 功能
_31
filtered_df = df[df["name"].str.startswith("J")]

要在组件输入中使用 DataFrame 对象,请使用 DataFrameInput 输入类型。


_10
DataFrameInput(
_10
name="dataframe_input", display_name="DataFrame 输入", info="DataFrame 对象的输入。", tool_mode=True
_10
),

Search