会话变量系统 (Session Variables)
除了宏系统提供的临时变量外,LLM Chat 还支持一套持久化的会话变量 (Session Variables) 系统。它允许你定义复杂的数值或状态(如 RPG 游戏中的“生命值”、“金钱”、“好感度”),并自动追踪其变化历史。
1. 核心特性
- 持久化: 变量值存储在数据库中,跨消息轮次和应用重启依然有效。
- 快照机制: 每一条消息发送时,系统都会记录下当时的变量状态快照。
- 可视化: 支持在聊天界面中以进度条、数值等形式展示变量。
- 宏联动: 可以在提示词中通过
{{var_name}}引用,或通过特定宏进行修改。
2. 配置变量树
在 Agent 编辑器 -> 会话变量 (Variables) 面板中进行配置:
- 启用变量系统: 开启总开关。
- 定义变量:
- 名称: 变量的唯一 ID。
- 显示名称: UI 中展示的标签。
- 初始值: 变量的起始数值或文本。
- 范围约束: 可选。设置最小值和最大值(如生命值 0~100)。
- 组织结构: 支持创建分组,将相关变量组织在一起(如“基础属性”、“技能等级”)。
3. 运行与交互
变量快照 (Snapshot)
每当 LLM 生成回复或用户发送消息后,系统会自动保存当前的变量状态。
- 查看历史: 在上下文分析器中,你可以选择任意历史消息,查看该时刻的变量数值。
- 回滚感应: 当你删除消息或从历史节点重新开始分支时,变量值会自动恢复到该节点对应的快照状态。
UI 展示
如果配置了 UI 样式,变量会显示在聊天界面的侧边栏或消息上方,实时反馈状态变化。
4. 变量操作宏
| 生命周期 | 宏名称 | 说明 |
|---|---|---|
| 局部 (单次请求) | {{setvar}} / {{getvar}} | 仅在本次 Prompt 组装过程中有效,用于跨预设消息传递中间状态。 |
| 持久 (会话级) | {{set_session_var}} | 直接修改数据库中的会话变量值。 |
| 全局 (进程级) | {{setglobalvar}} | 在整个应用运行期间有效,不随会话切换而改变。 |
5. 最佳实践:RPG 属性系统
- 定义变量: 创建
hp(初始 100),gold(初始 0)。 - 提示词注入: 在系统提示词中加入:
当前状态:生命值 {{hp}}, 金币 {{gold}}。 - 动态修改: 在快捷操作或正则管道中,根据 LLM 的输出(如“你受到了 10 点伤害”)触发
{{decvar::hp::10}}。