跳至主要内容

组装提示节点

概述

Chat Node接收一个Prompt输入,可以是一条消息或构成消息链的消息数组。Assemble Prompt Node用于将多条聊天消息组合成单个提示。它接收多条聊天消息或字符串作为输入,并输出包含所有消息的单个提示。

如果字符串连接到任何输入,它将被转换为用户类型的聊天消息,其中字符串作为消息内容。

Assemble Prompt Node Screenshot

输入项

标题数据类型描述默认值备注
消息 [i]chat-message, chat-message[]要组装的第i个聊天消息输入N/A基于连接数量的动态输入数量

示例:组装多条聊天消息

假设您有两个Prompt节点:一个包含AI的文本"今天我能为您提供什么帮助?",另一个是用户的回复"你好"。如果您想将这两条消息合并成一个提示语输入到聊天节点中,可以按照以下步骤操作:

  1. 在您的图表中添加一个Assemble Prompt节点。
  2. 将第一个Prompt节点(AI的消息)的输出连接到Assemble Prompt节点的Message 1
  3. 将第二个Prompt节点(用户响应)的输出连接到Assemble Prompt节点的Message 2
  4. 将Assemble Prompt节点的输出连接到Chat节点的Prompt输入。

示例:在循环中追加聊天消息

Assemble Prompt Node 的一个常见用例是在循环中追加聊天消息。这可以通过将 Loop Controller Node 与 Assemble Prompt Node 结合使用来实现。

以下是设置方法:

  1. 向您的图表添加一个循环控制器节点。
  2. 在您的图表中添加一个Assemble Prompt节点。
  3. 将循环控制器节点的Output 1连接到组装提示节点的Input 1。这样可以将循环的输出反馈回组装提示节点。
  4. 将Assemble Prompt节点的Output 1连接到Loop Controller节点的Input 1。这将有效地创建一个反馈循环,使Assemble Prompt节点能够反馈到自身。
  5. 将你的第一条消息连接到循环控制器节点的Input 1 Default。这将是启动循环的初始消息。
  6. 每次循环迭代时您想要附加的任何额外消息都可以连接到Assemble Prompt节点的Input 2Input 3等输入端口。

Assemble Prompt节点会将输出扁平化,生成当前消息的列表。在每次循环迭代期间,该节点会将连接到其输入端的任何额外消息追加到列表中。

此设置允许您在循环中动态追加聊天消息,这在多种场景下非常有用,例如创建一个能与用户持续对话的聊天机器人。

注意: 如果您想控制循环迭代次数,可以通过设置Loop Controller Node的Max Iterations属性来实现。

以下是一张帮助可视化设置的示意图:

Loop Controller with Assemble Prompt Node

这个示例展示了Rivet基于节点系统的强大功能和灵活性,只需几个节点就能创建复杂的行为。

处理缺失输入

如果某个输入缺失或不是聊天消息,Assemble Prompt Node 在组装过程中会直接忽略它。这在处理可能并不总是存在的可选输入时非常有用。

错误处理

如果没有提供有效的聊天消息输入,输出将是一个空数组。

问:如果我将非聊天消息连接到Assemble Prompt节点会发生什么?

A: Assemble Prompt 节点设计用于处理聊天消息输入。如果连接的是非聊天消息输入,该节点会尝试将其转换为聊天消息。在大多数情况下,这会是一个用户类型的消息,其中消息内容是将数据转换为字符串的结果。如果无法完成此转换,在组装过程中将忽略该输入。

问:我可以将Array节点连接到Assemble Prompt节点吗?

A: 是的,您可以将Array节点连接到Assemble Prompt节点。数组的每个元素都将被视为要组装的单独聊天消息(数组会被展平)。

问:Assemble Prompt 节点如何处理空字符串或空值?

A: Assemble Prompt 节点将忽略任何为 null 或非聊天消息的输入。但是,空的聊天消息将被包含在组装操作中。

另请参阅