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),