对象
在 Blaflow 中,对象是Pydantic模型,用作数据的结构化、功能性表示。
数据对象
Data对象是一个Pydantic模型,用作存储和操作数据的容器。它包含data——一个可以作为属性访问的字典——并使用text_key来指定字典中的哪个键应被视为主要文本内容。
- 主要属性:
text_key:指定用于检索主要文本数据的键。data:用于存储额外数据的字典。default_value:当text_key在data字典中不存在时的默认值。
创建数据对象
通过直接分配键值对来创建Data对象。例如:
_10from blaflow.schema import Data_10_10# 创建具有指定 键值对的Data对象_10data = Data(text="my_string", bar=3, foo="another_string")_10_10# 输出:_10print(data.text) # 输出:"my_string"_10print(data.bar) # 输出:3_10print(data.foo) # 输出:"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()) # 输出:"No content available",因为"content"键不在data字典中_10_10# 通过直接调用属性访问数据键_10print(data.title) # 输出:"Hello, World!",因为"title"键在data字典中
Data对象对于输出可视化也很方便,因为输出预览具有可视化元素,可以将数据作为表格检查,并将其单元格作为基本类型的弹出窗口。其目的是在 Blaflow 中创建一种统一的方式来处理和可视化复杂信息。
要在组件输入中接收Data对象,请使用DataInput输入类型。
_10inputs = [_10 DataInput(name="data", display_name="Data", info="Helpful info about the incoming data object.", is_list=True),_10]
消息对象
Message对象扩展了Data的功能,并包含用于聊天交互的额外属性和方法。
-
核心消息数据:
text:消息的主要文本内容sender:发送者的标识符("User"或"AI")sender_name:发送者的名称session_id:聊天会话的标识符(string或UUID)timestamp:消息创建时的时间戳(UTC)flow_id:流程的标识符(string或UUID)id:消息的唯一标识符
-
内容和文件:
files:与消息关联的文件或图像列表content_blocks:结构化内容块对象列表properties:包括视觉样式和源信息的额外属性
-
消息状态:
error:指示是否有错误的布尔值edit:指示消息是否被编辑的布尔值category:消息类别("message"、"error"、"warning"、"info")
Message对象可用于在 Blaflow 中发送、存储和操作聊天消息。
创建消息对象
您可以通过直接分配键值对来创建Message对象。例如:
_10from blaflow.schema.message import Message_10_10message = Message(text="Hello, AI!", sender="User", sender_name="John Doe")
要在组件输入中接收Message对象,您可以使用MessageInput输入类型,或者当目标是仅提取Message对象的text字段时使用MessageTextInput。
ContentBlock 对象
ContentBlock对象是多个ContentTypes的列表。它允许您在单个Message中包含多种类型的内容,包括图像、视频和文本。
内容类型是从 content_types.py 中的类型构造的 Pydantic 基类。
每种内容类型都有与其数据类型相关的特定字段。例如:
TextContent有一个用于存储文本字符串的text字段MediaContent有一个用于存储媒体文件 URL 的urls字段CodeContent有用于代码片段的code和language字段JSONContent有一个用于存储任意 JSON 数据的data字段ToolContent有一个用于存储工具输入参数的tool_input字段
创建 ContentBlock 对象
使用不同内容类型的列表创建ContentBlock对象。
_10content_block = ContentBlock(_10 title="Mixed Content Example",_10 contents=[_10 TextContent(text="This is a text content"),_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)
将 ContentBlocks 对象添加到消息中
在此示例中,将文本和媒体ContentBlock添加到消息中。
_23from blaflow.schema.message import Message_23from blaflow.schema.content_block import ContentBlock_23from blaflow.schema.content_types import TextContent, MediaContent_23_23message = Message(_23 text="Main message text",_23 sender="User",_23 sender_name="John Doe",_23 content_blocks=[_23 ContentBlock(_23 title="Text Block",_23 contents=[_23 TextContent(type="text", text="This is some text content")_23 ]_23 ),_23 ContentBlock(_23 title="Media Block",_23 contents=[_23 MediaContent(type="media", urls=["http://example.com/image.jpg"])_23 ]_23 )_23 ]_23)
DataFrame对象
DataFrame类是 Pandas DataFrame类的自定义扩展,专门设计用于与 Blaflow 的Data对象无缝协作。该类包括在DataFrame和Data对象列表之间转换的方法。
DataFrame对象接受各种输入格式,包括Data对象列表、字典和现有的DataFrames。
创建DataFrame对象
您可以使用不同的数据格式创建 DataFrame 对象:
_14from blaflow.schema import Data_14from blaflow.schema.data import DataFrame_14_14# 从Data对象列表创建_14data_list = [Data(data={"name": "John"}), Data(data={"name": "Jane"})]_14df = DataFrame(data_list)_14_14# 从字典列表创建_14dict_list = [{"name": "John"}, {"name": "Jane"}]_14df = DataFrame(dict_list)_14_14# From a dictionary of lists_14data_dict = {"name": ["John", "Jane"], "age": [30, 25]}_14df = DataFrame(data_dict)
主要方法
to_data_list():将 DataFrame 转换回 Data 对象列表。add_row(data):向 DataFrame 添加单行(Data 对象或字典)。add_rows(data):向 DataFrame 添加多行(Data 对象或字典列表)。
使用示例
_11# 创建DataFrame_11df = DataFrame([Data(data={"name": "John"}), Data(data={"name": "Jane"})])_11_11# Add a new row_11df = df.add_row({"name": "Alice"})_11_11# 转换回Data对象列表_11data_list = df.to_data_list()_11_11# 使用pandas功能_11filtered_df = df[df["name"].str.startswith("J")]
要在组件输入中使用 DataFrame 对象,请使用 DataFrameInput 输入类型。
_10DataFrameInput(_10 name="dataframe_input", display_name="DataFrame Input", info="Input for DataFrame objects.", tool_mode=True_10),