跳到主要内容

聊天输入与输出

注意

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

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

Chat Input​

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

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

Chat Input 参数​

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

NameDisplay NameInfo
input_valueInput Text输入参数。作为输入发送的消息文本。
senderSender Type输入参数。标识发送者类型,可为 User 或 Language Model。
sender_nameSender Name输入参数。发送者名称;留空时默认取 User 或 Language 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 组件接收其他组件产生的 Message、Data 或 DataFrame 数据;如有需要,它会先把输入转换成 Message,再把最终结果作为聊天消息发出。 有关这些数据类型,请参阅使用 SkillFlaw 数据类型。

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

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

Chat Output 参数​

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

NameDisplay NameInfo
input_valueInputs输入参数。作为输出发送的消息文本。
should_store_messageStore Messages输入参数。是否将消息写入聊天历史。
senderSender Type输入参数。标识发送者类型,可为 User 或 Language Model。
sender_nameSender Name输入参数。发送者名称;留空时默认取 User 或 Language 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 Input 与 Chat Output,请将它们与接收或输出 Message 数据 的组件连接起来。

例如,下图把 Chat Input、Language Model 与 Chat 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 触发流程。