# 世界信息

World Info(也称为 Lorebooks 或 Memory Books)是 ST 中的一个强大工具,可以动态地将提示词插入到您的聊天中,以帮助引导 AI 回复。

通常,World Info(简称 WI)用于增强 AI 对您的虚拟世界细节的理解,但您也可以使用 World Info 条目来插入任何您想要插入到提示词中的内容。

它的功能类似于一个动态字典,只有当与条目相关的关键词出现在消息文本中时,才会插入来自 World Info 条目的相关信息。

SillyTavern 引擎会激活并无缝地将适当的设定整合到提示词中,为 AI 提供背景信息。

需要注意的是,虽然 World Info 有助于引导 AI 生成所需的内容,但它不能保证这些内容一定会出现在生成的输出消息中。这取决于您的模型在利用额外信息方面的能力!

# 专业提示

  • World Info 引擎是一个非常强大的提示词管理工具。不要仅仅局限于添加角色设定,可以自由尝试。
  • 激活关键词、标题和其他不在内容字段中的信息不会插入到上下文中,因此每个 World Info 条目都应该有一个全面、独立的描述。
  • 要创建丰富详细的世界设定,条目可以通过使用递归激活相互链接和引用。更多信息请参见下面的递归
  • SillyTavern 为插入的背景信息提供灵活的上下文预算。为了节省提示词 token,建议保持条目内容简洁。

# 延伸阅读

# 角色设定

可选地,一个 World Info 文件可以分配给一个角色,作为该角色在所有聊天(包括群组)中的专用设定来源。

要做到这一点,导航到角色管理面板并点击地球按钮,然后从下拉列表中选择 World Info 并点击"确定"。

# 角色设定插入策略

在生成 AI 回复时,来自角色 World Info 的条目将与来自全局 World Info 选择器的条目使用以下策略之一进行组合:

# 均匀排序(默认)

所有条目将根据它们的插入顺序进行排序,就像它们是一个大文件的一部分一样,忽略来源。

# 角色设定优先

来自角色 World Info 的条目将根据它们的插入顺序首先包含,然后是来自全局 World Info 的条目。

# 全局设定优先

来自全局 World Info 的条目将根据它们的插入顺序首先包含,然后是来自角色 World Info 的条目。

# World Info 条目

# 关键词

触发 World Info 条目激活的关键词列表。默认情况下,关键词不区分大小写(这是可配置的)。

# 正则表达式(Regex)作为关键词

关键词通过支持 regex 提供了更灵活的匹配方法。这使得可以匹配更多动态内容,包括可选的词或字符、间距以及 regex 提供的所有其他实用工具。 如果定义的关键词是有效的 regex(Javascript regex 风格,使用 / 作为分隔符。允许所有标志),在检查条目是否应该被触发时,它将被视为 regex。多个 regex 可以作为单独的关键词输入,并且可以相互配合工作。在 regex 内部,可以使用逗号。纯文本关键词不支持逗号,因为它们被视为关键词分隔符。

高级 regex 匹配的一个用例示例: 当角色执行与天气相关的动作时应该插入的条目/指令

/(?:{{char}}|he|she) (?:is talking about|is noticing|is checking whether|observes) (?:the )?(rainy weather|heavy wind|it is going to rain|cloudy sky)/i

有关 Regex 语法和可能性的更多信息:Regular expressions - JavaScript | MDN

# 高级 Regex 每条消息匹配

ST 在 WI 扫描缓冲区中的每条聊天消息前加上 角色名称:,在 v1.12.6 之后,使用字符值 1(\x01)进行连接。 这意味着您可以使用与该分隔字符相关的 regex 来匹配特定角色的输入或输出。

例如,要仅匹配用户说"hello",您可以使用以下 regex:

/\x01{{user}}:[^\x01]*?hello/
# 关键词输入

有两种输入关键词的模式,每种模式的 UI 略有不同。在 ⌨️ 纯文本模式(默认)中,关键词可以在单个文本字段中以逗号分隔的列表形式输入。也可以包含 regex,但它们没有任何特殊高亮显示。在 花哨模式中,关键词显示为单独的元素,regex 将被高亮显示。该控件支持编辑和删除关键词。可以通过输入控件内的内联按钮切换模式。

# 可选过滤器

与主关键词一起使用的补充关键词列表。请参见可选过滤器。这些关键词也支持regex

# 条目内容

条目激活时插入到提示词中的文本。

# 插入顺序

数值。定义当多个条目同时激活时的优先级。具有更高顺序数字的条目将被插入到上下文的末尾,因为它们对输出的影响更大。

# 插入位置

控制条目插入到提示词的位置。可用选项:

  • 角色定义之前:在角色描述和场景之前插入此条目。对对话有中等影响。
  • 角色定义之后:在角色描述和场景之后插入此条目。对对话有更大影响。
  • 示例消息之前:将 World Info 条目解析为示例对话块,并插入到角色卡提供的示例之前。
  • 示例消息之后:将 World Info 条目解析为示例对话块,并插入到角色卡提供的示例之后。
  • 作者笔记顶部:将 World Info 条目插入到作者笔记内容的顶部。影响程度取决于作者笔记的位置。
  • 作者笔记底部:将 World Info 条目插入到作者笔记内容的底部。影响程度取决于作者笔记的位置。
  • @ D:将 World Info 条目插入到聊天中的特定深度(深度 0 为提示词底部)。
    • ⚙️ - 作为系统角色消息
    • 👤 - 作为用户角色消息
    • 🤖 - 作为助手角色消息

示例消息条目将根据提示词构建设置进行格式化:指令模式或聊天完成提示词管理器。它们也遵循示例消息行为规则:在完整上下文时逐渐被推出、始终保留或完全禁用。

如果您的作者笔记被禁用(插入频率 = 0),则位于作者笔记位置的 World Info 条目将被忽略!

# 条目标题/备注

一个方便您标记条目的文本字段,不会被 AI 或任何触发逻辑使用。

如果为空,可以通过点击"填充空备注"按钮使用条目的第一个关键词进行回填。

# 策略

  1. 🔵 (蓝圈) = 该条目将始终存在于提示词中。
  2. 🟢 (绿圈) = 该条目仅在存在关键词时触发。
  3. 🔗 (链条) = 该条目允许通过嵌入相似性插入。

每个条目还有一个切换开关,允许您启用或禁用该条目。

# 选择性

这些选项决定了主关键词与可选过滤器之间的逻辑关系:

  • AND ANY:要激活此条目,必须匹配一个主关键词 并且 至少匹配一个可选过滤器关键词。
  • AND ALL:要激活此条目,必须匹配一个主关键词 并且 匹配所有可选过滤器关键词。
  • NOT ANY:要激活此条目,必须匹配主关键词 并且 不匹配任何可选过滤器关键词。
  • NOT ALL:如果匹配了所有可选过滤器关键词,即使匹配主关键词,也不会激活此条目。否则,只要匹配主关键词,就会激活。

这些逻辑规则允许创建复杂的包含和排除组合,以精确控制何时激活条目。如果未提供可选过滤器参数,则忽略此功能。所有选项都支持正则表达式匹配。

这些选项允许创建包含和排除的复杂组合,以准确控制何时激活条目。

# 触发百分比

如果设置为小于 100 的值,只有在达到该随机几率时,该条目才会被激活。这是一种极好的在插入和排除提示词内容方面添加随机性的方法。例如,设置为 10% 意味着即使匹配了所有关键词,该条目的内容也只有大约十分之一的聊天消息会被包含在内。

使用此功能在您的聊天中创建随机事件。例如,每条消息都有 1% 的机会在提到上古神的名字时唤醒它。

# 包含组

包含组控制当多个具有相同组标签的条目同时触发时如何选择条目。如果激活了多个具有相同组标签的条目,只有一个会被插入到提示词中。

默认情况下,根据它们的组权重(默认为 100 点)随机选择选定的条目 — 数字越高,被选择的概率越高。这允许在触发的条目之间进行随机选择,为互动添加惊喜和变化元素。

如果将多个组定义为逗号分隔的列表,单个条目可以是多个包含组的一部分。上述相同的逻辑将适用。如果该条目被触发,它将禁用属于其任何组的所有其他条目。因此,如果激活了任何组,该条目将不会被激活。

# 优先包含

为了对通过包含组激活的条目提供更多控制,您可以使用"优先包含"设置。此选项允许您确定性地指定要选择的条目,而不是随机掷组权重机会。

如果激活了多个具有相同组标签且启用此设置的条目,将选择具有最高"顺序"值的条目。这对于通过包含组创建回退序列很有用。例如,优先考虑低深度条目以获得更多强调,或者在两者都有效时选择特定的场景设置指令而不是另一个。

# 使用组评分

当此设置全局启用或每个条目启用时,激活的条目关键词数量决定组胜者选择。只有具有最高关键词匹配数的组子集将被留下以通过组权重或包含优先级激活 - 其余的将被停用并从组中移除。

使用此功能为大组中的单个条目提供更多特异性。例如,它们可以有一个共同的关键词和一个特定的关键词。当没有提供特定关键词时,将插入随机条目,反之亦然。

主关键词的分数计算逻辑是 1 个匹配 = 1 分。

对于次要关键词,交互取决于所选的选择性逻辑:

  1. AND ANY:1 个次要匹配 = 1 分。
  2. AND ALL:如果所有次要关键词都匹配,则每个次要关键词得 1 分。
  3. NOT ANY 和 NOT ALL:无变化。

示例:

  • 条目 1. 关键词:song, sing, Black Cat. 组:songs
  • 条目 2. 关键词:song, sing, Ghosts. 组:songs

输入 sing me a song 可以激活任一条目(都激活了 2 个关键词),但 sing me a song about Ghosts 将只激活条目 2(激活了 3 个关键词)。

# 自动化 ID

允许将 World Info 条目与快速回复扩展中的 STscripts 集成。如果快速回复命令和 WI 条目具有相同的自动化 ID,当具有匹配 ID 的条目被激活时,该命令将自动执行。

自动化按照它们被触发的顺序执行,遵循您指定的排序策略,将角色设定插入策略与"优先级"排序相结合。这导致蓝圈条目首先处理,然后是其他按照指定的"顺序"处理。递归触发的条目将按照相同的顺序在之后处理。

如果激活了多个具有相同自动化 ID 的条目,脚本命令将只运行一次。

# 向量存储匹配

Vector Storage 扩展通过使用最近聊天消息和 World Info 条目内容之间的相似性,提供了关键词匹配的替代方案。

要启用和使用此功能,需要满足以下先决条件:

  1. Vector Storage 扩展已启用,并配置为使用可用的嵌入源之一。
  2. Vector Storage 扩展设置中的"为 World Info 启用"复选框已勾选。
  3. 要么允许无关键词匹配的 World Info 条目具有"向量化"(🔗)状态,要么在 Vector Storage 设置中勾选了"为所有条目启用"选项。

这里不会涉及扩展中的向量化模型选择和"嵌入"这个术语背后的理论含义。如果您需要更多关于这个主题的信息,请查看数据库指南。

Vector Storage 匹配遵循以下规则:

  • 可以通过"最大条目数"设置调整允许通过 Vector Storage 匹配的最大条目数。这个数字只设置限制,不影响 World Info 激活设置中设置的 token 预算。所有预算规则仍然适用。
  • 此功能仅替换关键词检查。所有额外检查都必须满足才能插入条目:触发%、角色过滤器、包含组等。
  • 不使用激活设置或条目覆盖中的"扫描深度"设置。而是使用 Vector Storage 的"查询消息"值来获取要匹配的文本。这允许像"扫描深度"设置为 0 这样的配置,因此不会进行常规关键词匹配,但条目仍然可以通过向量激活。
  • "向量化"状态只是一个额外的标记。如果设置了关键词,条目仍然会像正常的、启用的、非常量记录一样,通过关键词激活。如果您希望它们只通过向量激活,请删除关键词。

# 定时效果

通常,World Info 评估是无状态的,这意味着评估的结果是相同的,只取决于当前的聊天上下文。但是,通过引入定时效果,您可以创建具有激活延迟、在触发后保持活动或在激活后无法触发的条目。

# 定时效果规则

  1. 效果的时间框架以消息为单位测量(不是消息对/交换),0 表示没有效果。
  2. 效果仅适用于激活条目的聊天。分支继承父聊天的状态。
  3. 如果聊天没有前进,例如如果最后一条消息被滑动或删除,则会删除活动的定时效果。
  4. 对当前处于定时效果的条目进行任何更改都会导致效果被强制删除。
  5. 如果效果已经处于活动状态,后续触发关键词不会刷新效果持续时间。

# 定时效果类型

  1. 粘性 - 条目在激活后保持活动 N 条消息。粘性条目在到期之前的后续扫描中忽略概率检查。
  2. 冷却 - 条目在激活后的 N 条消息内无法激活。可以与粘性一起使用:当粘性持续时间结束时,条目进入冷却。
  3. 延迟 - 除非在评估时聊天中至少有 N 条消息,否则条目无法激活。
    • 延迟 = 0 -> 条目可以在任何时候激活。
    • 延迟 = 1 -> 条目不能在聊天为空时激活(无问候语)。
    • 延迟 = 2 -> 条目不能在聊天中有零条或只有一条消息时激活,以此类推。

# 定时效果示例

条目配置:粘性 = 3,冷却 = 2,延迟 = 2。

消息 0:延迟
消息 1:条目激活
消息 2:粘性
消息 3:粘性
消息 4:粘性
消息 5:冷却
消息 6:冷却

# 激活设置

位于 World Info 屏幕顶部的可折叠菜单。

# 扫描深度

可以在条目级别上覆盖。

定义应该扫描聊天历史中的多少条消息以查找 World Info 关键词。

  • 如果设置为 0,则只评估递归条目和作者注释。
  • 如果设置为 1,则 SillyTavern 只扫描最后一条消息。
  • 2 = 最后两条消息,以此类推。

# 包含名称

定义聊天参与者的名称是否应该作为消息前缀包含在扫描的文本缓冲区中。这允许激活使用名称作为关键词的条目,而无需在消息中直接提到名称。

假设聊天参与者名为 Alice 和 Bob,请参见下面要扫描的文本示例。

启用(默认):

Alice: Hello! Good to see you.
Bob: How is the weather today?

禁用:

Hello! Good to see you.
How is the weather today?

# 上下文 % / 预算

定义 World Info 条目一次可以使用多少 token。 您可以相对于 API 的最大上下文设置定义阈值(上下文 %)或定义一个客观的 token 阈值(预算)。

如果预算用尽,即使提示词中存在关键词,也不会激活更多条目。

常量条目将首先插入。然后是具有更高顺序号的条目。

通过直接提到关键词插入的条目比那些在其他条目内容中提到的条目具有更高的优先级。

# 最小激活数

此设置与最大递归步骤互斥。

最小激活数:如果设置为非零值,这将忽略"扫描深度"的限制,从最新消息向后搜索整个聊天记录中的关键词,直到触发了指定数量的条目。这仍然会受到最大深度设置或总预算上限的限制。

由最小激活数触发的额外扫描不会检查在前面步骤中由递归添加的条目。只有聊天消息和扩展提示词可以触发这些额外激活。但是,由最小激活数激活的条目可以像往常一样触发其他条目。

# 最大深度

使用最小激活数设置时要扫描的最大深度。

# 递归扫描

递归扫描允许条目激活其他条目或被其他条目激活,从而实现不同 World Info 条目之间的复杂交互和依赖关系。此功能可以显著增强您创意场景的动态性。
是否启用递归扫描可以通过全局设置递归扫描来控制。
每个条目有三个选项可以控制递归:

  • 不可递归:选中此复选框时,该条目不会被其他条目激活。这对于不应改变或不受其他世界信息条目影响的静态信息很有用。

  • 防止进一步递归:选择此选项可确保一旦此条目被激活,它将不会触发任何其他条目。这有助于避免意外的激活链。

  • 延迟直到递归:此条目将仅在递归检查期间激活,这意味着它不会在初始传递中触发,但可以被启用了递归的其他条目激活。现在,通过为这些延迟添加的递归级别,条目按级别分组。最初,只有第一级(最小数字)会匹配。一旦找不到匹配项,下一级就有资格匹配,重复此过程直到检查完所有级别。这允许更好地控制在递归过程中如何以及何时揭示更深层的信息,特别是在与 NOT ANY 或 NOT ALL 关键词匹配组合等条件结合使用时。

条目可以通过在内容文本中提到其他条目的关键词来激活它们。

例如,如果您的 World Info 包含两个条目:

条目 #1
关键词:Bessie
内容:Bessie 是一头奶牛,是 Rufus 的朋友。
条目 #2
关键词:Rufus
内容:Rufus 是一只狗。

如果消息文本仅提到 Bessie两个条目都会被拉入上下文中。

# 最大递归步骤

此设置与最小激活数互斥。

当设置为零时,递归嵌套仅受您的提示词预算限制。当设置为非零值时,将总扫描次数限制为所需的最大"嵌套级别"。

示例值:

  • 1 实际上禁用了递归,因为检查在第一步后停止。
  • 2 只能激活一次递归条目。
  • 3 可以触发两次递归...

# 区分大小写关键词

可以在条目级别上覆盖。

要被拉入上下文中,条目关键词需要与它们在 World Info 条目中定义的大小写匹配。

当您的关键词是常见词或常见词的一部分时,这很有用。

例如,当此设置激活时,关键词 'rose' 和 'Rose' 将根据输入被区别对待。

# 匹配整词

可以在条目级别上覆盖。

只包含一个词的条目关键词只有在搜索文本中出现完整词时才会匹配。默认启用。

例如,如果启用此设置且条目关键词是 "king",则文本 "long live the king" 会匹配,但 "it's not to my liking" 不会。

重要: 此设置在用于不使用空格分隔词的语言(如日语或中文)时可能会产生不利影响。如果您用这些语言编写条目,建议保持关闭。

# 溢出警告

如果激活的 World Info 超过分配的 token 预算,则显示警告。