指令模式

指令模式(Instruct Mode)允许你针对基于各种提示格式(如 Alpaca、ChatML、Llama2 等)训练的指令跟随模型调整提示词。

API 支持

文本补全 API

完全支持。包括:

  • 文本补全下的所有来源
  • KoboldAI Classic
  • AI Horde

选择一种格式

所选的指令模板必须与后端上实际运行的模型期望相匹配。

这通常会在 HuggingFace 的模型卡中说明,有些甚至会提供 SillyTavern 兼容的 JSON 文件。

示例:NeverSleep/Noromaid-13b-v0.1.1

聊天补全 API(OpenAI、Claude 等)

聊天补全 API 支持此功能(也不需要)。它们使用的是完全不同的提示词构建器。

NovelAI

虽然对 NovelAI 来说在技术上是受支持的,但他们的模型都没有经过理解指令格式的训练。NovelAI 模型可以使用一个特殊的指令模块,当在聊天消息中遇到用花括号包裹的指令时会自动激活它,因此对整个提示词使用指令模式会导致输出质量下降

下面这个示例会为 NovelAI 自动激活指令模块:

User: { Write a happy song about Nintendo Switch. }

指令模式设置

系统提示词

模板

提供带有序列的现成模板,适用于一些知名的指令模型。

更换模板会将未保存的设置重置为上次保存的状态!如果你做了任何不想丢失的更改,请不要忘记保存模板。

激活正则表达式

如果定义为一个有效的正则表达式,当连接到一个模型且其名称匹配此正则时,将自动选择该模板。

需要事先启用指令模式。只会选择各模板中第一个匹配到的正则结果(按字母顺序评估)。

用换行符包装序列

每个序列文本在插入到提示词中时都会用换行符包裹。Alpaca 及其衍生格式需要此选项。

如果你想完全控制行终止符,请禁用此选项。

在序列中替换宏

如果启用,消息包装序列中定义的已知 {{macro}} 替换将被执行。

此外,可以在消息前缀中使用一个特殊的 {{name}} 宏来引用附加到消息的实际名称(而不是当前活动的 {{char}} 或 {{user}}),这在使用群聊或 /sendas 命令时很有用。如果无法确定名称,将使用“System”作为回退占位符。

包含名称

如果启用,会在前缀序列之后将角色和用户名添加到聊天历史记录之前。

提供以下选项:

  • 从不:在消息内容前不添加名称前缀。
  • 群组与过往人格:仅向来自群组角色和过往人格的消息添加名称前缀。
  • 总是:总是在消息内容前添加名称前缀。

序列:故事字符串包装

定义当位置设置为“Default(上下文顶部)”时,故事字符串将如何被包装。

故事字符串前缀

插入到故事字符串之前。

故事字符串后缀

插入到故事字符串之后。

序列:聊天消息包装

这些设置定义在构建提示词时,属于不同角色的消息将如何被包装。

所有前缀序列也会自动用作停止字符串。

用户消息前缀

插入到用户消息之前,并在模拟(impersonating)时作为提示词的最后一行。

用户消息后缀

插入到用户消息之后。

助手消息前缀

插入到助手消息之前,并在生成 AI 回复时作为提示词的最后一行。

助手消息后缀

插入到助手消息之后。

系统消息前缀

插入到系统消息(由斜杠命令或扩展添加)之前。

系统消息后缀

插入到系统消息之后。

系统同用户

如果勾选为真,系统消息将使用用户角色的消息序列。

否则,系统消息会使用自己的序列(如果不为空),或者完全不做任何包装(如果为空)。

其他序列

用于更精细地调整提示词构建的各种高级配置。

首个助手前缀

插入到第一条助手消息之前。

末个助手前缀

插入到最后一条助手消息之前,或在生成 AI 回复时作为提示词的最后一行。

系统指令前缀

在后台生成中性/系统文本时(例如 Stable Diffusion 提示词或摘要),作为提示词的最后一行插入。

用户填充消息

如果聊天历史不是以用户消息开头,将插入到聊天历史的起始处。

**使用场景:**当某种指令格式严格要求提示词以用户优先,并且消息只能由交替的角色构成时,例如:Llama 2 Chat、Mistral Instruct。

停止序列

表示回复结束的文本。也会作为停止字符串发送到后端 API。

如果生成了停止序列,其之后的所有内容都将从输出中移除(包括序列本身)。