Langflow 对象
在 Langflow 中,对象是充当数据结构化、功能性表示的 Pydantic 模型。
Data 对象
Data
对象是充当数据存储和操作容器的 Pydantic 模型。它包含 data
——一个可以作为属性访问的字典——并使用 text_key
指定字典中哪个键应被视为主文本内容。
- 主要属性
text_key
: 指定用于检索主文本数据的键。data
: 用于存储额外数据的字典。default_value
: 当text_key
不存在于data
字典中时的默认值。
创建 Data 对象
通过直接为其分配键值对来创建 Data
对象。例如
_10from langflow.schema import Data_10_10# 使用指定的键值对创建 Data 对象_10data = Data(text="my_string", bar=3, foo="another_string")_10_10# 输出_10print(data.text) # Outputs: "my_string"_10print(data.bar) # Outputs: 3_10print(data.foo) # Outputs: "another_string"
text_key
指定 data
字典中哪个键应被视为主文本内容。如果 text_key
不存在,default_value
提供了一个备用值。
_10# 创建具有特定 text_key 和 default_value 的 Data 对象_10data = Data(data={"title": "Hello, World!"}, text_key="content", default_value="No content available")_10_10# 使用 text_key 和 default_value 访问主文本_10print(data.get_text()) # Outputs: "No content available" because "content" key is not in the data dictionary_10_10# 通过直接调用属性访问数据键_10print(data.title) # Outputs: "Hello, World!" because "title" key is in the data dictionary
Data
对象也便于输出的可视化,因为输出预览具有可视元素,可以将数据作为表格进行检查,并将其单元格作为基本类型的弹出窗口。这样做的目的是创建一个统一的方式来处理和可视化 Langflow 中的复杂信息。
要在组件输入中接收 Data
对象,请使用 DataInput
输入类型。
_10inputs = [_10DataInput(name="data", display_name="数据", info="关于传入数据对象的有用信息。", is_list=True),_10]
Message 对象
Message
对象扩展了 Data
的功能,并包含了用于聊天交互的额外属性和方法。
-
核心消息数据
text
: 消息的主要文本内容sender
: 发送者标识符(“用户”或“AI”)sender_name
: 发送者名称session_id
: 聊天会话标识符(string
或UUID
)timestamp
: 消息创建时的时间戳(UTC)flow_id
: 流程标识符(string
或UUID
)id
: 消息的唯一标识符
-
内容和文件
files
: 与消息关联的文件或图像列表content_blocks
: 结构化内容块对象列表properties
: 包括视觉样式和源信息的额外属性
-
消息状态
error
: 布尔值,指示是否存在错误edit
: 布尔值,指示消息是否被编辑category
: 消息类别(“消息”、“错误”、“警告”、“信息”)
Message
对象可用于在 Langflow 中发送、存储和操作聊天消息。
创建 Message 对象
您可以通过直接为其分配键值对来创建 Message
对象。例如
_10from langflow.schema.message import Message_10_10message = 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
字段用于存储媒体文件 URLCodeContent
有code
和language
字段用于代码片段JSONContent
有一个data
字段用于存储任意 JSON 数据ToolContent
有一个tool_input
字段用于存储工具的输入参数
创建 ContentBlock 对象
使用不同内容类型的列表创建 ContentBlock
对象。
_10content_block = ContentBlock(_10title="混合内容示例",_10contents=[_10TextContent(text="这是文本内容"),_10MediaContent(urls=["http://example.com/image.jpg"]),_10JSONContent(data={"key": "value"}),_10CodeContent(code="print('Hello')", language="python")_10 ],_10media_url=["http://example.com/additional_image.jpg"]_10)
向消息添加 ContentBlock 对象
在此示例中,将文本和媒体 ContentBlock
添加到消息中。
_23from langflow.schema.message import Message_23from langflow.schema.content_block import ContentBlock_23from langflow.schema.content_types import TextContent, MediaContent_23_23message = Message(_23text="主消息文本",_23sender="User",_23sender_name="John Doe",_23content_blocks=[_23ContentBlock(_23title="文本块",_23contents=[_23TextContent(type="text", text="这是一些文本内容")_23 ]_23 ),_23ContentBlock(_23title="媒体块",_23contents=[_23MediaContent(type="media", urls=["http://example.com/image.jpg"])_23 ]_23 )_23 ]_23)
DataFrame 对象
DataFrame
类是 Pandas DataFrame 类的自定义扩展,专门设计用于与 Langflow 的 Data
对象无缝协作。该类包含用于在 DataFrame
和 Data
对象列表之间进行转换的方法。
DataFrame
对象接受各种输入格式,包括 Data
对象列表、字典和现有 DataFrame
。
创建 DataFrame 对象
您可以使用不同的数据格式创建 DataFrame 对象
_31from langflow.schema import Data_31from langflow.schema.data import DataFrame_31_31# 从 Data 对象列表创建_31data_list = [Data(data={"name": "John"}), Data(data={"name": "Jane"})]_31df = DataFrame(data_list)_31_31# 从字典列表创建_31dict_list = [{"name": "John"}, {"name": "Jane"}]_31df = DataFrame(dict_list)_31_31# 从列表字典创建_31data_dict = {"name": ["John", "Jane"], "age": [30, 25]}_31df = DataFrame(data_dict)_31关键方法_31to_data_list()
: 将 DataFrame 转换回 Data 对象列表。_31add_row(data)
: 向 DataFrame 添加单行(可以是 Data 对象或字典)。_31add_rows(data)
: 向 DataFrame 添加多行(Data 对象或字典列表)。_31使用示例_31python_31# 创建 DataFrame_31df = DataFrame([Data(data={"name": "John"}), Data(data={"name": "Jane"})])_31_31# 添加新行_31df = df.add_row({"name": "Alice"})_31_31# 转换回 Data 对象列表_31data_list = df.to_data_list()_31_31# 使用 pandas 功能_31filtered_df = df[df["name"].str.startswith("J")]
要在组件输入中使用 DataFrame 对象,请使用 DataFrameInput
输入类型。
_10DataFrameInput(_10name="dataframe_input", display_name="DataFrame 输入", info="DataFrame 对象的输入。", tool_mode=True_10),