# CFG(无分类器引导)

页面作者:kingbri

贡献者:kingbri, Guillaume "Vermeille" Sanchez, AliCat

# 这是什么?

CFG(classifier-free guidance,无分类器引导)是一种用于帮助使提示词的某些部分变得更不突出或更突出的方法。

# 支持的后端 API

目前支持的后端包括 oobabooga 的 textgen WebUI、NovelAI 和 TabbyAPI。 NovelAI 有其自己的 CFG 文档

警告:由于需要处理多个提示词,CFG 会增加显存使用量!如果在使用 CFG 生成提示词时 GPU 内存耗尽,请考虑减小上下文大小、使用参数较少的模型或完全关闭 CFG。


# 配置

访问 CFG 设置的方式与访问作者注释相同:

CFGhamburgermenupng
CFGhamburgermenupng

以下是 CFG 面板的样子:

CFGchatpanelpng
CFGchatpanelpng

CFG 面板中有四个下拉菜单:

  • 聊天 CFG

    • 将 CFG 比例和提示词的范围限定在当前聊天中
  • 角色 CFG

    • 将 CFG 比例和提示词的范围限定在指定角色
  • 全局 CFG

    • 全局覆盖 CFG 比例和提示词(也会覆盖模型预设!)
  • CFG 高级设置(以前称为 CFG 提示词级联)

    • 用于组合前三个下拉菜单中的提示词并设置插入深度的位置。

注意:如果引导比例设置为 1,由于这是 CFG 的"关闭"状态,因此不会发送任何内容。

# 群聊

在群聊中,CFG 比例面板看起来是这样的:

CFGpanelgcpng
CFGpanelgcpng

主要变化是移除了角色 CFG,并在聊天 CFG 下拉菜单中添加了一个名为"使用角色 CFG 比例"的复选框。这允许使用当前角色的引导比例,而不是聊天 CFG 比例设置的值。

此功能的主要用途是根据每个角色的个别需求来调整比例。

此外,在提示词级联中勾选"角色负面提示词"框将会在聊天提示词(如果启用)的基础上附加独立的角色负面提示词。


# 概念

# 这不是在 Stable Diffusion 中使用的吗?

是也不是。LLM 中的 CFG 的工作方式与 Stable Diffusion 中的不同。基于 LLM 的 CFG 基于"提示词混合"原理工作。CFG 公式接受一个正面提示词和一个负面提示词,然后混合它们之间的差异。之后,发送组合的提示词并生成响应!

这里有一个插图帮助理解这个概念。红色代表负面提示词,蓝色代表中性提示词,紫色代表被解释的混合结果。所有三个提示词中相同的白色空间不会用于 CFG 混合。

stcfgdiagrampng
stcfgdiagrampng

如果您想了解更多关于 CFG 和 LLM 的信息,Vermifuge 的原始论文在这里。建议您阅读/收听:

# 我需要 CFG 提示词吗?

不需要!CFG 提示词完全是可选的。仅仅将引导比例调整到 1 以上也会对响应产生影响,这可以突出聊天和角色互动。

# 什么是好的 CFG 提示词?

我们已经确定 CFG 提示词与 Stable Diffusion 的负面标签和嵌入不同。那么我们如何制作提示词呢?

警告:这假设您使用 PLists 和 Ali:Chat 创建了一个角色。如果没有,请随意尝试各种提示词技巧。

假设我有一个名叫"John"的角色。从他的示例对话中可以看出,John 应该一直感到快乐和兴奋。然而,在与 John 聊天时,他有时会表现得悲伤和沮丧。

为了消除这种情况,CFG 来救场!只需将负面提示词设为 [John's feelings: sad, depressed] 来帮助消除悲伤部分。您可以选择将正面提示词设为 [John's feelings: happy, joyful] 来进一步突出 John 的快乐部分。

# 正面提示词

我在上一节中提到了这一点,但我想再详细说明一下。正面提示词用于进一步突出角色的某些部分。让我们再次以 John 为例。通过使用正面提示词 [John's feelings: happy, joyful] 使他更快乐,John 应该会开始输出比不包含正面提示词时更快乐的对话。

# 但是...

这些只是基于特定角色格式经验的宽松指南。还有许多其他方法可以创建提示词,您应该进行实验。请随意与其他用户分享您的想法!

# 引导比例

这里有一个经验法则。引导比例为 1 意味着 CFG 被禁用。实际上,如果引导比例为 1,SillyTavern 不会向后端发送任何内容。引导比例 >1 将在不同程度上产生其他部分所示的结果。

然而,引导比例 <1 将产生相反的效果,因为这里负面提示词被用作主要提示词。

让我们再次以 John 为例。负面提示词是 [John's feelings: sad, depressed],正面提示词是 [John's feelings: happy, joyful],引导比例为 0.8

这将反过来更多地突出负面提示词,您会看到 John 开始表现得比正常情况更悲伤,而不是更快乐。

简而言之:使用引导比例 1.5,然后根据您的输出向上或向下调整。

# 提示词级联

负面和正面提示词可以在 CFG 类型之间级联(类型包括每次聊天、每个角色和全局覆盖)。有关更多信息,请参见配置标题。

# 插入深度

遵循基本规则:在提示词中位置越低,对响应的影响就越大。对于聊天,我建议使用默认深度 1,因为它与 SillyTavern 的其他组件非常灵活。

然而,如果您想要实验,插入深度 0 是开放的。但是,这些可能会显著改变您的响应的外观,并且不建议在这里使用提示词级联!