# 摘要

# 它是什么?

此扩展允许您基于聊天中发生的事件创建、存储和利用自动生成的摘要。摘要可以帮助概述故事中发生的一般细节,这可以被解释为长期记忆,但请谨慎对待这一说法。由于摘要是由语言模型生成的,输出可能会丢失一些重要细节或包含幻觉,因此建议您始终跟踪摘要状态,并在需要时手动更正。

# 通用配置

摘要扩展默认安装在 SillyTavern 中,因此它会显示在 ST 的扩展面板(堆叠立方体图标)列表中,如下所示:

摘要配置面板
摘要配置面板

  • 当前摘要 - 显示并提供修改当前摘要的能力。摘要会更新并嵌入到聊天文件元数据中,该元数据对应于生成摘要时上下文中的最后一条消息。删除或编辑聊天中附加了摘要的消息将使状态恢复到最后一个有效摘要。
  • 恢复上一个 - 删除当前摘要,将其回滚到上一个状态。如果摘要器在任何给定点表现不佳,这很有用。
  • 暂停 - 选中此项以防止摘要自动更新。如果您想提供自己的自定义摘要或通过清除框并停止更新来有效禁用摘要,这很有用。
  • 弹出窗口 - 允许将摘要分离到侧边栏上的可移动 UI 面板。对于桌面布局,可以轻松访问摘要设置,而无需浏览扩展菜单。
  • 注入模板 - 定义摘要在插入常规聊天提示时如何包装。应使用特殊的 {{summary}} 宏来表示当前摘要状态在提示注入文本中的确切位置。
  • 注入位置 - 设置提示注入的位置。选项与作者笔记相同:在主提示之前或之后,或在指定深度的聊天中。

# 支持的摘要源

# 主 API

摘要将由您当前选择的 AI 后端、模型和设置驱动。此方法不需要额外的设置,只需要一个有效的 API 连接。

此选项具有以下子模式,具体取决于摘要提示的构建方式:

  1. 原始,阻塞。摘要将仅使用摘要提示和聊天历史记录生成。后续提示还将包括上一个摘要以及在摘要生成后发送的消息(参见示例)。此模式可以(并且会)生成在它们之间具有很多可变性的提示,因此不建议在具有慢提示处理时间的后端(如 llama.cpp 及其衍生品)上使用它。
  2. 原始,非阻塞。与上述相同,但在摘要生成期间不会阻塞聊天生成。并非所有后端都支持同时请求,因此如果摘要失败,请切换到阻塞模式。
  3. 经典,阻塞。摘要提示将在您的常规生成提示的末尾发送,作为中性系统指令,不省略角色卡、主提示、示例对话和聊天提示的其他部分。这通常会产生与重用处理提示良好配合的提示,因此建议与 llama.cpp 及其兄弟一起使用。

# 摘要设置解释

  1. 摘要提示 - 定义将用于创建摘要的提示。可以包括任何已知的宏,以及特殊的 {{words}} 宏(见下文)。
  2. 目标摘要长度(单词) - 定义可以插入到摘要提示中的 {{words}} 宏的值。此设置完全是可选的,如果未使用宏,则完全没有效果。
  3. API 响应长度(令牌) - 允许设置覆盖 API 响应长度,以生成与全局设置值不同的摘要。
  4. 每个请求的最大消息数 (仅原始模式) - 设置以限制将包含在一个摘要提示中的最大消息数。0 表示没有明确限制,但最终要摘要的消息数量仍将取决于最大上下文大小,使用公式计算:最大摘要缓冲区 = 上下文大小 - 摘要提示 - 上一个摘要 - 响应长度。当您想在具有大上下文大小的模型上获得更集中的摘要时使用此设置。
  5. 无 WI/AN - 从要摘要的文本中省略世界信息和作者笔记。仅在使用经典提示构建器时有效。原始提示构建器始终省略 WI/AN。
  6. 每 X 条消息更新一次 - 设置生成摘要的间隔。0 表示禁用自动摘要,但您仍可以通过单击"立即摘要"按钮手动触发它。应根据提示缓冲区完全填满聊天消息的速度来调整此设置。理想情况下,您希望在消息开始被踢出提示时生成第一个摘要。
  7. 每 X 个单词更新一次 - 与上述相同,但使用单词(而不是令牌!)而不是消息,理论上由于聊天消息内容通常的不可预测性,这可能是更准确的测量,但您的经验可能有所不同。

如果"每 X 更新一次"滑块都设置为非零值,那么两者将根据先发生的情况在其各自的间隔触发摘要更新。强烈建议在切换到具有不同上下文大小的另一个模型时相应地更新这些值,否则,摘要生成可能触发太频繁或根本不触发。

如果您不确定间隔设置,可以单击"每 X 更新一次"滑块上方的"魔杖"按钮,尝试基于一些简单的启发式方法猜测最佳值。算法的简要描述如下:

  1. 计算所有聊天消息的令牌和单词数
  2. 根据所需的提示单词确定目标摘要长度
  3. 根据平均消息长度计算可以放入提示的最大消息数
  4. 如果设置了"最大消息",调整平均值以考虑不符合摘要限制的消息
  5. 将调整后的每提示平均消息数向下舍入为 5 的倍数

# 示例提示

原始提示

系统:
[摘要提示]

上一个摘要。

用户:
消息 foo。

角色:
消息 bar。

经典提示

[主提示]

[角色卡]

[示例对话]

用户:
消息 foo。

角色:
消息 bar。

系统:
[摘要提示]

# Extras API

带有 summarize 模块的 Extras 服务器可以运行辅助摘要模型(BART)。

它具有非常小的上下文大小(约 1024 个令牌),因此它处理大型摘要的能力相当有限。

要配置 Extras 摘要源,请执行以下操作:

  1. Extras 安装或更新到最新版本。
  2. 使用启用的 summarize 模块运行 Extras:python server.py --enable-modules=summarize

# 更改摘要模型

默认情况下,摘要使用 Qiliang/bart-large-cnn-samsum-ChatGPT_v3 模型进行摘要。

这可以通过使用命令行参数 --summarization-model=(###Hugging-Face-Model-URL-Here###) 来更改。

已知的替代摘要模型是 Qiliang/bart-large-cnn-samsum-ElectrifAi_v10