世界书
世界书(也称为 Lorebooks 或 Memory Books)是 ST 中提供的强大工具,可将提示词动态插入您的聊天中,以帮助指导 AI 回复。
通常,世界书(简称WI)用于增强AI对虚构世界中细节的理解,但是您可以使用世界书条目插入您想要插入到提示词中的任何内容。
它的功能类似于动态字典,仅当消息文本中存在与条目关联的关键字时,才从世界书条目插入相关信息。
SillyTavern 引擎激活适当的知识并将其无缝集成到提示词中,为 AI 提供背景信息。
值得注意的是,虽然世界书有助于引导 AI 找到所需的内容,但它不能保证其出现在生成的输出消息中。这取决于您的模型在利用附加信息方面的能力!
专业提示
- 世界书引擎是一个非常强大的提示词管理工具。不要只专注于添加角色传说,请随意尝试。
- 激活关键字、标题和其他不在其中的信息 内容 字段不会插入到上下文中,因此每个世界书条目都应该有一个全面的、独立的描述。
- 为了创建丰富而详细的世界传说,条目可以通过使用递归激活相互链接和引用。查看更多内容 递归 下面。
- SillyTavern 为插入的背景信息提供灵活的上下文预算。为了节省提示词 token,建议保持条目内容简洁。
进一步阅读
- 世界书百科:世界书和 Lorebooks 的详尽深入指南。作者:kingbri、Alicat、Trappu。
特定上下文的来源
除了全局世界书选择器之外,知识手册还可以分配给特定的上下文 - 角色、用户人设或个人聊天。当相关的角色、用户人设或聊天处于活动状态时,这些特定于上下文的源会自动激活。
角色传说
或者,可以将世界书文件分配给角色,以充当与该角色(包括群组)的所有聊天中的专用知识源。
一个角色可以绑定一本主要世界书。打开角色管理面板,点击地球按钮,从下拉列表中选择世界书,再点击“确定(Ok)”。导出角色时,这份文件也会嵌入到角色卡数据中。
要取消绑定、更改或分配其他世界书文件作为角色 lore,请按住 Shift 键并单击地球按钮或单击“更多...”,然后单击“链接世界书”。请注意,只有主世界书文件会随角色一起导出。
重命名世界书文件时,系统会询问是否为所有引用它的角色重新关联该世界书。这样可以在重命名后保留现有的角色世界书绑定关系。
用户人设世界书
可以将世界书文件分配给当前活动的 用户人设。只要选择用户人设,无论打开哪个角色或聊天,都会激活此世界书中的条目。
要将世界书分配给用户人设,请打开 用户人设管理 面板并单击 用户人设传说 按钮。从下拉列表中选择一个世界书文件。如果已经绑定了世界书,则单击按钮直接打开世界书编辑器。
要在世界书已绑定时重新打开分配弹出窗口,请使用 长按 (在移动设备上)或 Shift+单击 / Alt+单击 (在桌面上)用户人设 Lore 按钮上。
聊天世界书
世界书文件也可以分配给个人聊天。来自聊天绑定世界书的条目仅在该特定对话中有效,不会转移到具有相同角色的其他聊天中。
要将世界书分配给聊天,请单击 聊天传说 角色管理面板中的按钮。从下拉列表中选择世界书文件。如果已经绑定了世界书,则单击按钮直接打开世界书编辑器。
要在世界书已绑定时重新打开分配弹出窗口,请使用 长按 (在移动设备上)或 Shift+单击 / Alt+单击 (在桌面上)“聊天传说”按钮上。
知识插入策略
生成 AI 回复时,来自角色、世界书和其他辅助源的条目将与来自全局世界书选择器的条目合并。默认情况下,条目将按以下顺序插入:
均匀排序(默认)
所有条目将根据其插入顺序进行排序,就好像它们是一个大文件的一部分一样,忽略源。
角色绝杀第一
来自角色世界书的条目将首先包含在其插入订单中,然后包含来自全局世界书的条目。
全球传说第一
来自全局世界书的条目将首先包含在其插入订单中,然后包含来自角色世界书的条目。
世界书条目
钥匙
触发世界书条目激活的关键字列表。默认情况下,按键不区分大小写(这是 可配置).
正则表达式 (Regex) 作为键
键通过支持正则表达式提供更灵活的匹配方法。这使得可以将更多动态内容与可选单词或角色、间距以及正则表达式提供的所有其他实用程序相匹配。
如果定义的键是有效的正则表达式(Javascript 正则表达式样式,带有 / 作为分隔符。所有标志都是允许的),在检查是否应该触发条目时将如此对待。多个正则表达式可以作为单独的键输入,并且可以彼此协同工作。在正则表达式中,可以使用逗号。明文键不支持逗号,因为它们被视为键分隔符。
高级正则表达式匹配的用例示例:
当 char 正在执行与天气相关的操作时应插入的条目/指令
/(?:{{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
关于正则表达式语法与用途的更多信息: 正则表达式- JavaScript | MDN
高级正则表达式每条消息匹配
ST 在 WI 扫描缓冲区中为每条聊天消息添加前缀 character name: 在 v1.12.6 之后,使用角色值 1 将它们添加到前面(\x01).
这意味着您可以使用与该分隔角色相关的正则表达式来匹配来自某个角色的特定输入或输出。
例如,要仅匹配说“hello”的用户,您可以使用以下正则表达式:
/\x01{{user}}:[^\x01]*?hello/
按键输入
有两种输入关键字的模式,每种模式的用户界面略有不同。在⌨️ 明文模式 (默认),可以在单个文本字段中以逗号分隔的列表形式输入密钥。也可以包含正则表达式,但它们没有任何特殊的突出显示。在✨ 奇特模式,键显示为单独的元素,并且正则表达式将如此突出显示。该控件支持编辑和删除按键。可以通过输入控件内的内联按钮切换模式。
可选过滤器
与主键结合的附加关键字的逗号分隔列表。 如果未提供参数,则忽略此标志。 支持 AND ANY、NOT ANY 或 NOT ALL 逻辑
- AND ANY = 仅当主键和任何一个可选过滤器键位于扫描上下文中时才激活条目。
- AND ALL = 仅当主键和所有可选过滤器键都存在时才激活条目。
- NOT ANY = 仅当主键和可选过滤器键均不在扫描上下文中时才激活条目。
- NOT ALL = 如果所有可选过滤器都在扫描上下文中,则尽管有主键触发,仍会阻止激活条目。
这些键还支持 正则表达式.
参赛内容
输入激活后插入提示词的文本。
广告订单
数值。如果同时激活多个条目,则定义条目的优先级。具有较大订单号的条目将被插入到靠近上下文末尾的位置,因为它们将对输出产生更大的影响。例如,订单号为 100 的条目将出现在上下文中订单号为 250 的条目之前。
插入位置
- 在字符定义之前: 世界书条目插入在角色的描述和场景之前。对谈话有中等影响。
- 字符定义后: 世界书条目插入在角色的描述和场景之后。对谈话的影响较大。
- 示例消息之前: 世界书条目被解析为示例对话块并插入到角色卡提供的示例之前。
- 示例消息之后: 世界书条目被解析为示例对话块并插入到角色卡提供的示例之后。
- AN 顶部: 世界书条目插入到作者注释内容的顶部。根据作者注释位置的不同,影响也不同。
- AN 底部: 世界书条目插入到作者注释内容的底部。根据作者注释位置的不同,影响也不同。
- @D: 世界书条目插入到聊天中的特定深度(深度 0 是提示词的底部)。
- ⚙️ - 作为系统角色消息
- 👤 - 作为用户角色消息
- 🤖 - 作为助理角色消息
- 出口: 世界书条目不会自动注入。相反,它的内容存储在一个命名的插座下,因此您可以通过使用以下命令调用它来准确决定它在提示词中出现的位置:
{{outlet::Name}}宏.
示例消息条目将根据提示词构建设置进行格式化:指令模式或聊天补全提示词管理器。它们还遵循示例消息行为规则:在完整上下文中逐渐推出、始终保留或完全禁用。
如果您的作者注释被禁用(插入频率 = 0),则 A/N 位置中的世界书条目将被忽略!
店铺名称
当 出口 选择插入位置后,附加 店铺名称 字段可供输入。您在此处提供的名称将条目分组在一起,并定义 token,您将使用该名称将它们手动拉入提示词。
使用 {{outlet::YourName}} 宏中的 提示词管理器 或 高级格式设置 提示词字段。构建提示词时,宏将替换为共享相同插座名称的每个世界书条目的组合内容,以换行符分隔,按其排序 广告订单 值。
如果出口条目缺少名称,它将在生成过程中被跳过,因此请务必填写该字段。插座名称支持根据您已使用的名称自动完成,以便轻松重复使用一致的标签。
限制和注意事项
- 不支持将插座宏放置在世界书条目内,并且不会起作用。这与世界书的求值顺序冲突,可能导致无限循环。
- 不支持嵌套插座。您不能将插座宏放置在另一个插座的内容中。与上面相同,这可能会导致无限循环。
- 角色卡字段(描述、个性、场景等)无法扩展网点。这些字段会被尽早解析,因此它们可以充当 额外的匹配源 对于世界书触发器,这意味着处理文本时插座不可用。如果您需要将插座内容放置在提示词主体中,请使用另一个宏感知字段。
- 作者注释编辑器也无法解析插座。要将插座内容放置在作者注释周围,请将条目分配给 AN 顶部 或 AN 底部 插入位置而不是依赖宏。
- 插座名称区分大小写。的
{{outlet::}}宏必须使用与条目完全相同的大小写 店铺名称,否则不返回任何内容。 - 当您调用宏时,插座名称中的前导或尾随空格将被忽略,因此使用额外空格保存的名称将不匹配。避免填充名称,以便正确解析它们。
- 没有分配内容的插座宏将被替换为空字符串。
参赛作品标题/备注
一个文本字段,方便您标记您的条目,AI 或任何触发逻辑都不会使用该文本字段。
如果为空,可以通过单击“填充空备忘录”按钮,使用条目的第一个键进行回填。
策略
- 🔵(蓝色圆圈)=该条目不需要任何关键字,无论内容如何都会触发。
- 🟢(绿色圆圈)= 仅当存在关键字时才会触发输入。
- 🔗(链链接)=允许通过嵌入相似性来插入条目。
每个条目还有一个切换开关,允许您启用或禁用该条目。
概率(触发%)
该值的作用就像一个附加过滤器,当通过任何方式(常量、主键、递归)激活条目时,该过滤器增加了条目不被插入的机会。
- 概率 = 100 表示该条目将在每次激活时插入。
- 概率 = 50 表示该条目将以 1:1 的机会插入。
- 概率 = 0 意味着该条目不会被插入(本质上是禁用它)。
使用它可以在聊天中创建随机事件。例如,如果消息中提到了古神的名字,则每条消息都有 1% 的机会唤醒古神的名字。
共融集团
包含组控制同时触发具有相同组标签的多个条目时如何选择条目。如果激活了具有相同组标签的多个条目,则只有一个条目将被插入到提示词中。
默认情况下,所选条目是根据其组权重(默认为 100 分)随机选择的 - 数字越大,选择的概率越高。这允许在触发的条目中进行随机选择,为交互添加惊喜和多样性的元素。
如果将多个包含组定义为以逗号分隔的列表,则单个条目可以是多个包含组的一部分。将适用与上面解释的相同的逻辑。如果该条目被触发,它将 禁用 属于其任何组的所有其他条目。因此,如果任何组被激活,则该条目将不会被激活。
优先考虑包容性
为了更好地控制哪些条目被激活 共融集团,您可以使用“优先包含”设置。此选项允许您确定性地指定选择哪个条目,而不是随机滚动组权重机会。
如果激活了具有相同组标签且打开此设置的多个条目,则将选择“顺序”值最高的条目。这对于通过包含组创建后备序列非常有用。例如,更加重视低深度条目的优先级,或者如果两者都有效,则选择关于设置场景的特定指令而不是另一个指令。
使用小组评分
当全局或每个条目启用此设置时,激活的条目键的数量决定了组获胜者的选择。只有关键匹配数量最多的组子集才会被组权重或包含优先级激活 - 其余的将被停用并从组中删除。
使用它可以为大组中的单个条目提供更多特异性。例如,它们可以具有公共密钥和特定密钥。当未提供特定密钥时,将插入随机条目,反之亦然。
主键的得分计算逻辑是1个匹配=1分。
对于辅助键,交互取决于所选的选择性逻辑:
- 和任意:1 次次要比赛 = 1 分。
- AND ALL:如果所有辅助键都匹配,则每个辅助键得 1 分。
- 不是任何也不是全部:没有变化。
示例:
- 条目 1. 调:歌曲、歌唱、黑猫。组: 歌曲
- 条目 2. 调:歌曲、歌唱、鬼魂。组: 歌曲
输入 sing me a song 可以激活任一条目(均激活 2 个键),但是 sing me a song about Ghosts 将仅激活条目 2(激活 3 个键)。
自动化ID
允许将世界书条目与 ST脚本 来自快速回复扩展。如果快速回复命令和WI条目具有相同的Automation ID,则当激活具有匹配ID的条目时,将自动执行该命令。
自动化按照触发的顺序执行,遵循您指定的排序策略,结合 角色知识插入策略 通过“优先级”排序。这导致 蓝色圆圈 首先处理条目,然后按照指定的“顺序”处理其他条目。递归触发的条目将按照相同的顺序进行处理。
如果激活具有相同自动化 ID 的多个条目,则脚本命令将仅运行一次。
角色过滤器
可以激活此条目的角色名称列表。如果此列表不为空,则仅对名称在列表中的角色激活该条目。选择标签后,只有具有该特定标签的角色才会激活该条目。
“排除”模式反转过滤器,这意味着将为所有角色激活条目,但添加到列表中或具有选定标签的条目除外。
触发器
可以激活此世界书条目的生成类型。如果未选择任何内容,则可为所有生成类型激活该条目。如果选择一项或多项,则仅针对这些特定生成类型激活该条目:
- 正常: 定期消息生成请求。
- 继续: 当按下继续按钮时。
- 冒充: 当按下模拟按钮时。
- 滑动: 当通过滑动触发生成时。
- 再生: 在单人聊天中按下“重新生成”按钮时。
- 安静: 后台生成请求,通常由 扩展 或 ST脚本 命令。
“重新生成”触发器在群聊中不可用,因为它使用不同的重新生成逻辑:最后回复的所有消息都将被删除,并且根据所选的“正常”生成类型对消息进行排队 群组回复策略.
其他匹配来源
默认情况下,世界书条目仅与当前对话中的内容进行匹配。这些选项允许您将条目与聊天中未显示的不同角色信息甚至用户人设信息进行匹配。当您想要在多个角色之间使用多种条目,但又不想管理大型标签列表,或者不想每次创建新过滤器列表时都更新角色过滤器列表时,这非常有用。这还允许您根据您拥有的活动用户人设来匹配条目。
- 角色说明:与角色描述匹配。
- 角色个性:与角色个性摘要匹配,可在高级定义下找到。
- 场景:与角色指定场景匹配,可在高级定义下找到。
- 用户人设说明:与当前选定的用户人设的描述匹配。
- 角色的备注:与角色的注释匹配,可以在“高级定义”下找到该注释。
- 创作者笔记:与角色创建者的注释匹配,可以在“高级定义”下找到该注释。 提示词中通常不包含创建者的注释。
矢量存储匹配
矢量存储扩展通过利用最近的聊天消息和世界书条目内容之间的相似性,提供了关键字匹配的替代方法。
要启用和使用此功能,需要满足以下先决条件:
- 矢量存储扩展已启用并配置为使用可用的嵌入源之一。
- 在矢量存储扩展设置中勾选了“启用世界书”复选框。
- 允许无密钥匹配的世界书条目具有“矢量化”(🔗) 状态,或者在矢量存储设置中选中“对所有条目启用”选项。
扩展中矢量化模型的选择以及术语“嵌入”背后的理论含义将不在这里讨论。查看 资料库 如果您需要有关此主题的更多信息,请指导。
矢量存储匹配遵循这组规则:
- 允许与矢量存储匹配的最大条目数可以通过“最大条目”设置进行调整。该数字仅设置限制,不会影响世界书激活设置中设置的 token 预算。所有预算规则仍然适用。
- 此功能仅取代关键字检查。要插入的条目必须满足所有附加检查:trigger%、角色过滤器、包含组等。
- 不使用激活设置或条目覆盖中的“扫描深度”设置。相反,使用矢量存储“查询消息”值来获取要匹配的文本。这允许将“扫描深度”等配置设置为 0,因此不会进行常规关键字匹配,但条目仍然可以由向量激活。
- “矢量化”状态只是一个附加标记。该条目的行为仍然类似于正常的、启用的、非常量的记录,如果设置了关键字,则该记录将被关键字激活。如果您希望它们仅由向量激活,请删除关键字。
注意事项
由于检索质量完全取决于嵌入模型的输出,因此不可能准确预测将插入哪些条目。如果您想要确定性和可预测的结果,请坚持关键字匹配。
定时效果
通常,世界书评估是无状态的,这意味着评估的结果是相同的,仅取决于当前的聊天上下文。但是,随着定时效果的引入,您可以创建具有激活延迟、触发后保持活动状态或激活后无法触发的条目。
定时效果规则
- 影响的时间范围以消息(而不是成对的消息/交换)来衡量,0 表示没有影响。
- 效果仅适用于激活该条目的聊天。分支继承父聊天的状态。
- 如果聊天没有进展,则活动的定时效果将被删除,例如如果最后一条消息被刷或删除。
- 对当前处于定时效果的条目进行任何更改都会导致该效果被强制删除。
- 如果关键字已经处于活动状态,则后续触发关键字不会刷新效果持续时间。
定时效果的类型
- 粘性 - 该条目在激活后将保持活动状态 N 条消息。粘性条目会忽略后续扫描的概率检查,直到它们过期。
- 冷却-该条目激活后N条消息无法激活。可以与粘滞一起使用:当粘滞持续时间结束时,条目会进入冷却状态。
- 延迟 - 除非评估时聊天中至少有 N 条消息,否则条目无法激活。
- 延迟 = 0 -> 该条目可以随时激活。
- Delay = 1 -> 如果聊天为空(无问候语),则无法激活该条目。
- Delay = 2 -> 如果聊天中只有零条消息或只有一条消息等,则无法激活该条目。
定时效果示例
进入配置:粘滞= 3,冷却时间= 2,延迟= 2。
Message 0: delay
Message 1: entry activated
Message 2: sticky
Message 3: sticky
Message 4: sticky
Message 5: cooldown
Message 6: cooldown
Message 7: entry can be activated again
激活设置
世界书屏幕顶部的可折叠菜单。
扫描深度
可以在入门级别覆盖。
定义应扫描聊天历史记录中的多少条消息来查找世界书密钥。
- 如果设置为 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?
背景 % / 预算
定义世界书条目一次可以使用多少个 token。 您可以定义相对于 API 的最大上下文设置(上下文百分比)的阈值或目标 token 阈值(预算)
如果预算用尽,则即使提示词中存在密钥,也不会激活更多条目。
将首先插入常量条目。然后是订单号较大的条目。
通过直接提及其键插入的条目比其他条目内容中提及的条目具有更高的优先级。
最少激活次数
此设置与最大递归步骤互斥。
最小激活数:如果设置为非零值,则将忽略“扫描深度”的限制,从最新消息向后查找所有聊天日志中的关键字,直到触发了最小激活数中指定的条目。这仍然会受到最大深度设置或总体预算上限的限制。
由最小激活触发的额外扫描不会检查先前步骤中递归添加的条目。只有聊天消息和分机提示词可以触发这些额外的激活。然而,由“最小激活”激活的条目可以照常触发其他条目。
最大深度
使用“最小激活”设置时要扫描的最大深度。
递归扫描
递归扫描允许条目激活其他条目或被其他条目激活,从而实现不同世界书条目之间的复杂交互和依赖关系。此功能可以显着增强创意场景的动态特性。
是否启用递归扫描可以通过全局设置来控制 递归扫描.
可以使用三个选项来控制每个条目的递归:
8 不可递归:选中此复选框后,该条目将不会被其他条目激活。这对于不应更改或受其他世界书条目影响的静态信息很有用。
-
防止进一步递归:选择此选项可确保一旦激活此条目,就不会触发任何其他条目。这有助于避免意外的激活链。
-
延迟直到递归:此条目仅在递归检查期间被激活,这意味着它不会在初始阶段被触发,但可以被其他启用了递归的条目激活。现在,随着添加 递归级别 对于这些延迟,条目按级别分组。最初,只有第一级(最小的数字)会匹配。一旦找不到匹配项,下一个级别就有资格进行匹配,重复该过程直到检查完所有级别。这样可以更好地控制在递归过程中如何以及何时显示更深层次的信息,特别是与“不是任何”或“不是全部”键匹配组合等标准结合使用。
条目可以通过在内容文本中提及其他条目的关键字来激活其他条目。
例如,如果您的世界书包含两个条目:
Entry #1
Keyword: Bessie
Content: Bessie is a cow and is friends with Rufus.
Entry #2
Keyword: Rufus
Content: Rufus is a dog.
两者都 如果消息文本提到,其中的一些将被拉入上下文 只是贝西.
最大递归步数
此设置与最小激活数互斥。
当设置为零时,递归嵌套仅受提示词预算的限制。当设置为非零值时,将扫描总数限制为所需的最大“嵌套级别”。
示例值:
- 1 有效地禁用递归,因为检查在第一步后停止。
- 2 只能激活递归条目一次。
- 3 可以触发递归两次...
区分大小写的按键
可以在入门级别覆盖。
要进入上下文,输入键需要与世界书条目中定义的大小写匹配。
当您的关键字是常用单词或常用单词的一部分时,这非常有用。
例如,当此设置处于活动状态时,按键“rose”和“Rose”将根据输入进行不同的处理。
匹配整个单词
可以在入门级别覆盖。
仅当搜索文本中存在整个单词时,才会匹配键仅包含一个单词的条目。默认启用。
例如,启用该设置且条目关键词为“king”时,“long live the king”会匹配,而“it's not to my liking”不会匹配。
重要: 当与不使用空格分隔单词的语言(例如日语或中文)一起使用时,此设置可能会产生不利影响。如果您用这些语言撰写条目,建议不要使用。
溢出警报
如果激活的世界书超出分配的 token 预算,则显示警报。