组装提示节点
概述
Chat Node接收一个Prompt输入,可以是一条消息或构成消息链的消息数组。Assemble Prompt Node用于将多条聊天消息组合成单个提示。它接收多条聊天消息或字符串作为输入,并输出包含所有消息的单个提示。
如果字符串连接到任何输入,它将被转换为用户类型的聊天消息,其中字符串作为消息内容。
- 输入
- 输出
- 编辑器设置
示例:组装多条聊天消息
假设您有两个Prompt节点:一个包含AI的文本"今天我能为您提供什么帮助?",另一个是用户的回复"你好"。如果您想将这两条消息合并成一个提示语输入到聊天节点中,可以按照以下步骤操作:
- 在您的图表中添加一个Assemble Prompt节点。
- 将第一个Prompt节点(AI的消息)的输出连接到Assemble Prompt节点的
Message 1
。 - 将第二个Prompt节点(用户响应)的输出连接到Assemble Prompt节点的
Message 2
。 - 将Assemble Prompt节点的输出连接到Chat节点的
Prompt
输入。
示例:在循环中追加聊天消息
Assemble Prompt Node 的一个常见用例是在循环中追加聊天消息。这可以通过将 Loop Controller Node 与 Assemble Prompt Node 结合使用来实现。
以下是设置方法:
- 向您的图表添加一个循环控制器节点。
- 在您的图表中添加一个Assemble Prompt节点。
- 将循环控制器节点的
Output 1
连接到组装提示节点的Input 1
。这样可以将循环的输出反馈回组装提示节点。 - 将Assemble Prompt节点的
Output 1
连接到Loop Controller节点的Input 1
。这将有效地创建一个反馈循环,使Assemble Prompt节点能够反馈到自身。 - 将你的第一条消息连接到循环控制器节点的
Input 1 Default
。这将是启动循环的初始消息。 - 每次循环迭代时您想要附加的任何额外消息都可以连接到Assemble Prompt节点的
Input 2
、Input 3
等输入端口。
Assemble Prompt节点会将输出扁平化,生成当前消息的列表。在每次循环迭代期间,该节点会将连接到其输入端的任何额外消息追加到列表中。
此设置允许您在循环中动态追加聊天消息,这在多种场景下非常有用,例如创建一个能与用户持续对话的聊天机器人。
注意: 如果您想控制循环迭代次数,可以通过设置Loop Controller Node的Max Iterations
属性来实现。
以下是一张帮助可视化设置的示意图:
这个示例展示了Rivet基于节点系统的强大功能和灵活性,只需几个节点就能创建复杂的行为。
处理缺失输入
如果某个输入缺失或不是聊天消息,Assemble Prompt Node 在组装过程中会直接忽略它。这在处理可能并不总是存在的可选输入时非常有用。
错误处理
如果没有提供有效的聊天消息输入,输出将是一个空数组。
问:如果我将非聊天消息连接到Assemble Prompt节点会发生什么?
A: Assemble Prompt 节点设计用于处理聊天消息输入。如果连接的是非聊天消息输入,该节点会尝试将其转换为聊天消息。在大多数情况下,这会是一个用户类型的消息,其中消息内容是将数据转换为字符串的结果。如果无法完成此转换,在组装过程中将忽略该输入。
问:我可以将Array节点连接到Assemble Prompt节点吗?
A: 是的,您可以将Array节点连接到Assemble Prompt节点。数组的每个元素都将被视为要组装的单独聊天消息(数组会被展平)。
问:Assemble Prompt 节点如何处理空字符串或空值?
A: Assemble Prompt 节点将忽略任何为 null 或非聊天消息的输入。但是,空的聊天消息将被包含在组装操作中。