跳到主要内容

聊天输入与输出

注意

要在 Playground 中与流程对话,必须在流程里加入 Chat InputChat Output 组件。 更多说明请参阅在 Playground 中测试流程

Chat InputChat Output 组件用于处理 SkillFlaw 中的对话式输入与输出。

Chat Input

Chat Input 组件接收文本与文件输入,例如一条聊天消息或一个上传文件。 组件会把这些输入封装为 Message 数据,并附带发送者、会话 ID、时间戳、附件等聊天元数据,再传递给后续组件。

初始输入不应直接以完整 Message 对象提供,因为 Chat Input 组件本身负责构造该对象。

Chat Input 参数

有些参数在可视化编辑器中默认处于隐藏状态。 你可以通过组件标题栏菜单中的 控件 来修改全部参数。

NameDisplay NameInfo
input_valueInput Text输入参数。作为输入发送的消息文本。
senderSender Type输入参数。标识发送者类型,可为 UserLanguage Model
sender_nameSender Name输入参数。发送者名称;留空时默认取 UserLanguage Model
session_idSession ID输入参数。聊天会话的唯一标识;留空时使用当前会话 ID。
filesFiles输入参数。随消息一起发送的文件。
background_colorBackground Color输入参数。消息图标的背景色。
chat_iconIcon输入参数。消息图标。
should_store_messageStore Messages输入参数。是否将消息写入聊天历史。
text_colorText Color输入参数。发送者名称的文字颜色。

关于生成后的 Message 对象,以及哪些输入参数会被直接映射到 Message 属性,请参阅 Message 数据

Chat Input 的 Message 构造方法

ChatInput 类提供异步方法,根据输入参数创建并存储一个 Message 对象。 该对象在 ChatInput 类的 message_response 方法中,通过 Message.create() 工厂方法生成。


_12
message = await Message.create(
_12
text=self.input_value,
_12
sender=self.sender,
_12
sender_name=self.sender_name,
_12
session_id=self.session_id,
_12
files=self.files,
_12
properties={
_12
"background_color": background_color,
_12
"text_color": text_color,
_12
"icon": icon,
_12
},
_12
)

Chat Output

Chat Output 组件接收其他组件产生的 MessageDataDataFrame 数据;如有需要,它会先把输入转换成 Message,再把最终结果作为聊天消息发出。 有关这些数据类型,请参阅使用 SkillFlaw 数据类型

Playground 中,聊天输出只展示 Message 中与聊天界面直接相关的部分,例如回复文本、发送者名称和附件。 如果你想查看更完整的消息元数据,请在 Playground 中检查消息日志。

通过 SkillFlaw API 调用流程时,接口响应中会包含 Chat Output 生成的 Message 对象,以及本次流程运行的其他返回数据。 由于 API 响应通常比较详细,实际集成时应在应用侧提取需要展示给用户的字段。 可参考 SkillFlaw 快速开始

Chat Output 参数

有些参数在可视化编辑器中默认处于隐藏状态。 你可以通过组件标题栏菜单中的 控件 来修改全部参数。

NameDisplay NameInfo
input_valueInputs输入参数。作为输出发送的消息文本。
should_store_messageStore Messages输入参数。是否将消息写入聊天历史。
senderSender Type输入参数。标识发送者类型,可为 UserLanguage Model
sender_nameSender Name输入参数。发送者名称;留空时默认取 UserLanguage Model
session_idSession ID输入参数。聊天会话的唯一标识;留空时使用当前会话 ID。
data_templateData Template输入参数。把 Data 输入 转成 text 的模板;留空时会动态使用 Data 对象的 text 键。
background_colorBackground Color输入参数。消息图标的背景色。
chat_iconIcon输入参数。消息图标。
text_colorText Color输入参数。发送者名称的文字颜色。
clean_dataBasic Clean Data输入参数。启用后,在把 DataFrame 输入 转成文本时会清理空行、空单元格与多余换行。

关于生成后的 Message 对象,以及哪些输入参数会被直接映射到 Message 属性,请参阅 Message 数据

在流程中使用 Chat Input 与 Chat Output

要在流程中使用 Chat InputChat Output,请将它们与接收或输出 Message 数据 的组件连接起来。

例如,下图把 Chat InputLanguage ModelChat Output 连接起来,构成一个最基础的 LLM 对话流程。

Chat Input and Output components connected to an OpenAI component

提示

想看更完整的示例,可以参考:

  • SkillFlaw 快速开始:创建并运行基础智能体流程。
  • Basic Prompting 模板:创建一个同时接收聊天输入和额外提示词指令的 LLM 对话流程。
  • 连接应用到智能体:了解更进阶的智能体流程、Prompt 设计,以及如何从外部应用触发流程。

通过 SkillFlaw API 发送聊天输入

你可以通过 SkillFlaw API 向 Chat Input 组件发送输入,从而触发流程运行:


_10
curl --request POST \
_10
--url "http://$SKILLFLAW_SERVER_ADDRESS/api/v1/run/$FLOW_ID" \
_10
--header "Content-Type: application/json" \
_10
--header "x-api-key: $SKILLFLAW_API_KEY" \
_10
--data '{
_10
"input_value": "What's the recommended way to set up Python on macOS?",
_10
"output_type": "chat",
_10
"input_type": "chat"
_10
}'

通过 SkillFlaw API 触发流程时,请求体需要包含 Chat Input 组件对应的输入参数值,例如 input_value

并不是所有参数都必须显式提供。 例如,如果省略 session_id,系统会使用流程默认会话 ID。 如果你希望自定义会话 ID,则可以这样传入:


_10
curl --request POST \
_10
--url "http://$SKILLFLAW_SERVER_ADDRESS/api/v1/run/$FLOW_ID" \
_10
--header "Content-Type: application/json" \
_10
--header "x-api-key: $SKILLFLAW_API_KEY" \
_10
--data '{
_10
"input_value": "Whats the recommended way to set up Python on macOS",
_10
"session_id": "$USER_ID",
_10
"output_type": "chat",
_10
"input_type": "chat"
_10
}'

更多说明请参阅通过 SkillFlaw API 触发流程