Open WebUI v0.12.4 不再要求每次都发送技能指令,而是支持按需加载,并让用户在聊天中查看长对话的压缩过程。使用多种技能的用户和持续进行长对话的开发者,可以减少不必要的指令传输,并查看哪些对话已被摘要。

1. 按需发送技能的完整指令

技能是供模型执行任务时使用的一组指令。此前,在聊天中选择或关联到模型的技能,其完整指令会随每条消息一起发送。开启延迟加载后,系统先只发送列表,模型需要时再加载完整指令。这就像不再每次都递上整本指南,而是先看目录,再取出所需的指南。

管理员可以在管理员设置的通用选项中,开启按需加载所选技能的设置,或通过环境变量启用此方式。用户可以先在聊天中选好技能,再在消息中直接提及需要立即应用的技能。消息中提及的技能会立即加载,无需等待。

此功能默认关闭,且需要内置技能工具。如果不开启设置,技能的完整指令仍会像以前一样随每条消息一起发送。相关环境变量名称如下。

ENABLE_SKILL_LAZY_LOADING

2. 显示已压缩的消息和摘要内容

上下文压缩是将先前消息概括成摘要,用于后续对话的方式。执行压缩后,对话中生成摘要的位置会出现压缩标记。用户可以展开标记查看摘要内容,也能在聊天控制的概览界面找到带标记的消息。

如果在生成回答时,工具调用之间执行了压缩,回答中也会留下标记。用户无需等对话结束后再到单独的界面查看,而是可以在阅读回答的过程中确认压缩发生的位置。

压缩进行中或发生错误时,状态会直接显示在对话中,而不是通过弹窗呈现。因此,用户无需离开聊天,就能查看长对话中哪个时间点的消息被摘要,以及压缩是否正常进行。

3. 临时对话和已超限的上下文也能压缩

上下文压缩现在也适用于临时对话。即便是只有一个问题和一条包含大量工具输出的回答的短对话,只要已超过压缩阈值,也会执行压缩,避免后续提问或重新生成、编辑回答因上下文长度错误而失败。

用量指示条会按照设定的压缩触发标准显示。该标准就是在单个模型或默认模型参数中设置的压缩阈值。此前,指示条未反映模型上设置的较低阈值,可能让人误以为距离实际压缩时点还有更多余量。

现在,指示条和实际压缩采用相同标准,用户可以更容易地从显示内容判断距离压缩还有多远。关闭压缩功能后,不再适用的阈值设置也会从界面中隐藏。

4. 减少重复传输,摘要改变对话历史

这两项功能减少发送给模型的内容的方式不同。延迟加载将原本重复发送的技能指令改为在需要时加载。上下文压缩则在帮助长对话继续进行的同时,将后续对话所用的先前消息内容从完整原文替换为摘要。

工具服务器中的工具在重启后也会以相同形式传递给模型,从而保留提供商的提示词缓存,也就是保存输入以供复用的功能,避免从头重新处理长对话。不过,发行说明并未给出此改动节省的 token 数量或处理时间。

本次更新的核心在于调整技能指令和长对话的处理时机,并让用户直接查看压缩结果。