循序渐进 · AIP 教学 · Chatbot Studio(四)

应用状态(Application state)

聊天机器人要记住会话里的信息,才能做多轮推理。应用状态就是它的"工作记忆"

全部目录 AIP 首页 ← 上一篇 应用状态(Application state) 下一篇 →
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/chatbot-studio/application-state/
原始标题:AIP Chatbot Studio • Application state • Palantir · 所属:AIP Chatbot Studio(做对话机器人)

先记住这几条

① 状态让多轮对话成为可能
没有状态,每轮都是全新的。
② 状态可被工具读写
工具能更新状态,模型能读状态。
③ 要设计好状态结构
存什么、什么时候清,影响效果与成本。
0

写在前面

AIP Chatbot 的 application state 此前称为参数

你可以在 AIP Chatbot 上配置多个字符串或对象集应用变量,以配置 application state。当带有应用变量的 AIP Chatbot 被嵌入到 Workshop 中的 AIP Chatbot widget 时,变量列表将会显示出来。随后,你可以将每个应用变量映射到对应类型的 Workshop variable,以便在其他 widget 中展示输出。

1

在 Chatbot Studio 中配置应用状态

要点:状态变量的定义方式。

在设置 AIP Chatbot 的 application state 时,请配置以下内容:

  • 标识应用变量: 确定 LLM 应与哪些对象集或字符串变量交互。这些变量可以是 LLM 写入结果的新变量,也可能已存在于你的工作流中,例如表示用户当前选择内容的变量。
  • 为变量命名并描述: 为每个变量编写一段说明其作用的描述。该描述将被注入聊天机器人的提示词中,为 LLM 提供关于何时使用给定变量的上下文。
  • 设置值可见性: 你可以通过设置值可见性来选择聊天机器人是否可以看到变量的值。我们建议仅在必要时才允许 LLM 读取值,以减少混淆。例如,如果你使用一个对象集变量作为 Ontology context 的输入,则该变量无需对 LLM 可见;对象集值的相关内容会在每一轮循环中出现在系统提示词里。但是,如果你有一个字符串变量包含系统提示词中的动态部分,则该变量必须设置为可见,以便 LLM 能够读取该变量的内容。
  • 将变量添加为输入: 你可以选择将变量配置为 Ontology retrieval context 的输入,从而为语义搜索提供确定性输入,或将完整对象集提供给 LLM。此外,function-backed context 可以接收多个输入变量,以便在运行函数时包含有状态的信息。 Object query 工具还可以按对象类型接收一个初始对象集变量,为 LLM 应用额外的筛选或聚合提供起点。
application state 配置面板的示例外观。
application state 配置面板的示例外观。

application state 也可以在用户自定义的 System prompt 中通过键盘上的斜杠命令 / 来引用。

在提示词中引用应用变量的示例。
在提示词中引用应用变量的示例。

application state 可以使用 Debug application state 部分进行测试。你可以手动覆盖每个变量的值,并且当聊天机器人更新变量值时,调试部分会提供可视化反馈。

Debug application state 部分的示例外观。
Debug application state 部分的示例外观。
2

用聊天机器人更新应用变量

要点:运行时怎么写状态。

你配置的应用变量可以通过聊天机器人 tools 或添加到 application state 配置中的 retrieval context 进行修改。变量既可以根据工具或上下文的输出进行确定性更新,也可以通过 Update application variable 工具进行非确定性更新。

Automatic variable updates

变量可以配置为使用 Object query 工具、function-backed context 或 Ontology context 输出的值进行确定性更新。在每次执行上下文或工具后,Chatbot Studio 会记录最新的输出,并在 LLM 完成流式输出时,将映射的应用变量更新为该输出值。我们建议采用确定性更新而非非确定性更新,以避免 LLM 混淆。在某些情况下,你可能希望完全对 LLM 隐藏变量的值。

为 object query 工具配置 AIP Chatbot 的输出变量。
为 object query 工具配置 AIP Chatbot 的输出变量。

Deterministic tool inputs

ActionFunction 工具可以配置为使用来自应用变量的输入,而不是通过 LLM 动态生成输入。此功能允许你将预先确定的值直接传递给工具,从而提高一致性并减少 token 用量。

此功能仅支持字符串和对象集输入类型。所传递的值会被固定为推理循环开始时变量的初始值,这意味着同一次查询中先前工具调用产生的更新不会反映在作为确定性输入传递的值中。

配置确定性工具输入。
配置确定性工具输入。

Update variables with an LLM

如果你希望由 LLM 配置一个新变量来更新,或根据当前用户查询有条件地应用更新,请添加 Update application variable 工具。该工具支持一个可供 LLM 更新的变量列表。

为 AIP Chatbot 配置 Update application variable 工具。
为 AIP Chatbot 配置 Update application variable 工具。

Variables as citations

你还可以配置一个对象集变量,使其在用户选择 citation 时更新。所配置的对象集变量将更新为一个包含被引用对象的静态对象集。

为 AIP Chatbot 配置 ontology context citation 输出变量。
为 AIP Chatbot 配置 ontology context citation 输出变量。
3

在 Workshop 中配置

要点:在应用侧接收状态。

如果 AIP Chatbot 已配置了 application state,你可以在 Workshop 中配置该聊天机器人的应用变量。更多信息,请参阅 AIP Chatbot widget 文档。

在聊天机器人的 application state 部分将 AIP Chatbot 的应用变量配置为 Workshop 变量。
在聊天机器人的 application state 部分将 AIP Chatbot 的应用变量配置为 Workshop 变量。

延伸阅读 · 相关页面

按主题横向跳转,不必顺着目录一篇篇读。

本组其他页面 · AIP Chatbot Studio(做对话机器人)

同一主题下的相邻内容。

常见问题速答 · FAQ

关于「应用状态(Application state)」,读者最常问的几个问题。

用聊天机器人更新应用变量是什么?
运行时怎么写状态。你配置的应用变量可以通过聊天机器人 tools 或添加到 application state 配置中的 retrieval context 进行修改。
在 Workshop 中配置是什么?
在应用侧接收状态。如果 AIP Chatbot 已配置了 application state,你可以在 Workshop 中配置该聊天机器人的应用变量。更多信息,请参阅 AIP Chatbot widget 文档。