更新状态
更新状态
让智能体通过表达式在对话中更新动态变量。
概述
更新状态工具让智能体能在对话进行期间设置一个或多个动态变量。与其他系统工具一样,它只会更改对话内部状态,绝不会调用外部 API 或客户端函数。
可在通话过程中记录信息,例如标记对话是否应升级处理、存储用户提供的值,或计算从其他动态变量派生的值。
功能
- 每次通话可多次更新:单次工具调用最多可同时为 10 个动态变量赋值。
- 基于表达式的值:每个值都是表达式的结果,可组合常量、现有动态变量、LLM 从对话中提取的值和运算符。
- 仅在需要时由 LLM 提取:该工具只会要求 LLM 为需要提取的更新提取参数。完全由常量和/或现有动态变量构成的更新,不会为函数调用添加任何参数。
- 立即可用:工具运行后,更新后的动态变量可供后续对话使用,包括后续提示词、其他工具调用和覆盖设置,其使用方式与其他动态变量相同。
工作原理
每次状态更新都会将表达式结果赋给一个动态变量:
表达式可为以下类型之一,也可以相互嵌套以构建更复杂的逻辑:
例如,如果 LLM 判断用户感到沮丧,或者 retry_count 动态变量已大于 3,以下状态更新会将 should_escalate 设为 true:
如果状态更新无法求值,例如除以零,工具调用将返回错误,且该调用中的所有更新都不会生效。
配置
使用场景
- 升级标记:设置动态变量(例如
should_escalate),供下游系统或业务规则检查,如Genesys 集成指南所示。 - 记录提取的信息:将用户提供的值(订单号、偏好、所选部门)存储为动态变量,供稍后在对话中使用。
- 派生值:根据其他动态变量计算一个值,例如递增计数器,或将两个变量合并为一个。
用途:让智能体根据对话更新一个或多个动态变量,无需调用外部 API。
触发条件:LLM 应在以下情况调用此工具:
- 对话提供了应记录的信息(例如升级标记、选定选项、用户提供的值)
- 已配置的状态更新依赖于 LLM 必须从对话中判断或提取的值
参数:
函数参数取决于工具的配置。每项使用 LLM 提取值的已配置状态更新,都会在架构中添加一个属性;该属性以此更新的动态变量命名,类型为 string、number 或 boolean。仅由常量或其他动态变量构建的状态更新不会添加任何参数。
函数调用格式:
实现方式:智能体会使用提取出的参数和当前对话动态变量评估每个已配置表达式,然后将结果赋值给对应的动态变量。不会发出外部请求。
常见问题
此工具会发起外部调用吗?
不会。与所有系统工具一样,更新状态只会修改对话内部状态, 不会调用外部 API 或客户端函数。
调用此工具是否始终需要 LLM 提取参数?
不需要。该工具仅在状态更新的表达式 包含 LLM 提取的值时,才会要求 LLM 提取参数。如果所有已配置更新均由常量和/或 现有动态变量构成,函数调用将不需要参数。
此工具设置的动态变量可以在哪里使用?
可在任何支持动态变量的位置使用:系统提示词、首条消息、工具参数和 标头,以及覆盖设置。详情请参阅动态 变量。
能否通过 API 配置此工具?
更新状态目前可通过智能体控制台配置。API 和 SDK 支持 尚未提供。