NovelAI

中文译稿 · 由官方原文机器翻译,尚未逐句校对。对照原文 ↗

NovelAI 是一项付费订阅服务,允许每月无限制地访问其高质量的内部文本生成、图像生成和文本转语音模型。在此注册帐户以开始: https://novelai.net/

你只会得到 50代 免费评估模型。当 “不符合此型号的条件” 出现错误,这意味着您已经过了试用期,需要订阅付费计划。

API密钥

要获取您的 NovelAI API 密钥,请按照以下步骤操作:

  1. 选择左侧边栏顶部的齿轮图标。 左侧边栏

  2. 选择“用户设置”下的“帐户”。 用户设置

  3. 选择“获取持久 API 令牌”。 账户

  4. 选择复制图标将 NovelAI API token 复制到剪贴板。 持久 API 令牌

型号

如果您有 Opus,则可以使用 Erato 模型。如果您没有 Opus,那么 Kayra 是最好的可用型号。

Clio 在平板电脑/滚动层上具有更大的上下文大小,但 Kayra 的优势通常可以弥补这一差异。

设置

带有设置的文件位于此处(SillyTavern/data/<user-handle>/NovelAI Settings)。 您还可以手动添加自己的设置文件。

响应长度

您想要为每条消息生成多少文本。请注意,NovelAI 每个响应的限制为 150 token。

上下文大小

在任何给定时间,上下文中保存了多少 token 的聊天内容。您可以使用的最大上下文大小取决于模型和您的订阅层:

  • Kayra(平板电脑)- 3072 token
  • 凯拉(卷轴)- 6144 token
  • Erato(Opus 独有)、Kayra(Opus)和 Clio(所有级别)- 8192 token

序言

插入聊天正上方以修改书写风格的文本。推荐的格式是短标签列表,例如“[风格:聊天、详细、感官]”。

预设说明

根据 NovelAI 的说法,这就是默认预设的好处。

埃拉托

  • 金箭 - 优秀的全能选手。
  • Wilder - 单词选择的多样性更高,重掷之间的差异更大,更容易出错。
  • Zany Scribe - 避免错误和重复。优先考虑更复杂的单词。
  • 火龙果 - 语言多样且复杂,几乎没有重复。错误和矛盾更加频繁。
  • Shosetsu - 专为日语写作而设计。也适用于英语。

凯拉

  • Asper - 用于创意写作。期待意想不到的曲折。
  • 无忧无虑——优秀的全能选手
  • Fresh-Coffee - 让事情步入正轨。手柄指导良好。
  • Pro_Writer - 模仿畅销小说的节奏和感觉
  • Stelenes - 更有可能选择合理的替代方案。重试的多样性。
  • Tea_Time - 当它开始时它会变得很好。
  • Writers-Daemon - 极其富有想象力,有时甚至太多。

克里奥

  • Edgewise - 很好地处理各种生成样式
  • 新鲜咖啡 - 让事情步入正轨。
  • 长按 - 用于创意散文。
  • Talker Chat - 专为聊天风格生成而设计。
  • Vingt-Un - 一个良好的全能默认值,偏向于散文。

将 NovelAI 与 SillyTavern 结合使用的提示和常见问题解答

从另一个 ST 后端 API 切换到 NovelAI 时,会出现很多常见问题和疑问。差异取决于模型的训练目的。您很可能使用过 OpenAI 或 Anthropic 模型(或类似的本地模型),这些模型是围绕遵循用户的指示构建的。 NovelAI 的模型完全围绕文本完成而构建:NAI 的模型尝试继续传入的提示词,而不是将您的输入作为消息并制定响应。由于这种差异,许多适用于其他 API 的技巧和常识不适用于 NAI。

调整 NovelAI 的设置

在高级格式(A 图标)下:

  • 将“上下文模板”设置为“NovelAI”
  • 将“Tokenizer”设置为“最佳匹配”
  • 选中“始终将角色的名称添加到提示词”
  • 选中“折叠连续换行符”
  • 取消选中“指令模式”下的“启用”框

在“用户设置”下(有齿轮的人)

  • 打开“滑动切换回复”(不是 NAI 特定的,但它非常有用,您应该这样做)

为 NovelAI 构建/调整角色卡

为了针对 NovelAI 优化角色卡,有几种推荐的方法来编写角色的描述:散文和属性。

散文太简单了,感觉不太行得通:“西尔菲德是一位看起来很年轻但实际上已经有 900 岁的仙女。她身材矮小,长长的白发在她编成的侧马尾辫中逐渐变成绿色,翠绿的眼睛形状像十字架。[...]”不,真的,就是这样。只需用普通句子写出角色的外观、行为等,人工智能就会识别它。

如果您不相信自己的写作能力或者想要一种更结构化的方法来完成它,您可以使用 NovelAI 训练数据中存在的属性方法。这是不同类型的角色特征的简单列表。以下是经过 NovelAI 模型测试有效的可能属性列表:

Name:
AKA:
Type: character
Setting:
Nationality:
Species:
Gender:
Age:
Height:
Weight:
Appearance:
Clothing:
Attire:
Personality:
Mind:
Mental:
Likes:
Dislikes:
Sexuality:
Speech:
Voice:
Abilities:
Skills:
Quote:
Affiliation:
Occupation:
Reputation:
Secret:
Family:
Allies:
Enemies:
Background:
Description:
Attributes:

“Type: 角色”是用来告诉 AI 这是描述一个角色(而不是位置、物体或其他类型的事物)。其余属性是可选的,有些是多余的(例如,Personality、Mind 和 Mental 的含义基本相同),但这些属性已经过测试并且可以与 NovelAI 的模型配合良好。填写与您的角色相关的内容。属性应以小写形式书写,并用逗号分隔,不需要在单词两边加上引号。例如:

Skills: lockpicking, stealth, running away very fast

推荐使用这些方法是因为它们存在于 NovelAI 的训练数据中,因此它们特别适合模型。

示例卡

这里有几个为 NovelAI 制作的示例卡片,展示了专门为 NovelAI 创建卡片的不同方法。第一张卡“Valka”使用属性方法进行角色描述,而第二张卡“Eris”则使用散文描述,并带有大量示例对话。

瓦尔卡

阋神星

不该做什么

大多数现有的角色卡格式都不适合 NovelAI。他们会给你一些结果,甚至一些好的结果,但他们有很多问题。 W++ 是最大的罪犯之一,它与 NovelAI 模型所训练的任何内容都不相同,并且它不断使用括号/大括号/引号消耗了大量的 token,使卡片的大小膨胀而没有真正的好处。

在未融入 NovelAI 的现有格式中,AliChat 是最有可能发挥作用的一种,因为它依赖于使用示例消息来同时获取有关角色及其语音的信息,并采用您希望 AI 输出的消息类型的格式。

对于大多数其他格式,由于它们通常是列出特定角色的不同特征的方法,因此可以相当直接地将它们转换为属性方法。

我应该使用哪个模块?

可能没有模块。如果您想让角色以更华丽的方式说话,散文增强器会很有用,但要注意不要做得太过分。文本冒险对于文本冒险风格的卡片/故事可能很有用。

不是指令模块?

您可以在需要时调用 Instruct 模块。在消息中创建换行符,并将说明放在大括号中,如下所示: { CharName is offended by that seemingly innocuous statement } (空格是 必填 文本和括号之间)。这样做会在短时间内自动将人工智能切换到指令模块。您不想一直使用“指导”模块,因为当您需要强烈引导 AI 朝特定方向发展时,它往往会比其他模块产生更少的创意输出。

为什么我的回复总是被打断?

NovelAI 将响应长度限制为总计约 150 token,即使您将滑块设置得更高。当它达到滑块中 token 的数量或 150(以较低者为准)时,它将再生成最多 20 个 token,寻找停止序列或句子结尾,因此响应的有效限制为 170 token,此时它将停止,导致其中断。

如果中断,您可以选择继续选项(在文本框左侧的三行菜单中)让角色继续响应。

如果您经常希望响应长度超过 170 token,您可以像这样解决该限制:

  • 将响应长度保持在 150 token。
  • 在“高级格式化”下,启用“自动继续”。
  • 将“目标长度”设置为所需的长度。

这会将多代链接在一起,为您提供更长的消息,但如果模型决定停止,则不能保证回复将是所需长度的 100%。

如何让机器人写出更长的回复?

阅读上面有关回复被切断的内容。这将有助于确保响应不会因达到生成长度的限制而过早中断。

如果你的回答没有被切断但仍然太短,那么你可能正在处理“垃圾输入,垃圾输出” - 如果你给模型提供了错误的例子,它会产生错误的输出。如果角色卡没有示例对话或简短的示例对话,并且您发送给机器人的消息很短,则模型会接受这一点,将其视为可接受的做事方式,并且响应也会很短。因此,请向机器人编写更长的示例对话和更长的消息。 (您始终可以使用 NovelAI 为您编写一些示例对话,而不是自己编写。)

如何让机器人停止为我说话?

  • 检查角色卡的第一条消息和示例对话是否不包括角色为您采取行动 - 如果包括,则重写它们以消除它为您采取行动
  • 确保选中“始终将角色的名称添加到提示词”
  • 确保您当前使用与其余聊天相同的用户用户人设。如果您更改了用户用户人设并且没有更改回来(或者没有将用户人设锁定到该聊天),则停止为您生成的常规规则将失败
  • 将 ["\n{{user}}:"] 添加到自定义停止字符串(应该不是必需的,但有时会有所帮助)

为什么我的角色没有响应?

造成这种情况的原因有很多,所以我们需要检查以下几个地方:

  • 确保在高级格式中选中“始终将角色的名称添加到提示词”
  • 检查以确保 API 没有出现任何错误。虽然您可以通过 NAI 免费试用版使用 SillyTavern,但一旦试用完毕,您就会收到错误消息
  • 检查“自定义停止字符串”中的内容 - 如果这些字符串是在响应开始时生成的,则它可能会被过早切断

作者注释应该如何使用?

一般来说,你可能不应该这样做。它被插入到非常接近上下文末尾的位置,并且使用 NAI 的模型,它经常压倒上下文中的其他所有内容。它主要是来自旧的、较弱的模型的产物,在这些模型中它是更必要的。

如何进行场景中断/时间跳跃?

将以下内容作为系统消息或放在下一条消息开头的换行符上:

***
[ 2 days later ]

然后将其余的消息放在下一行。括号内的文本可以是时间跳跃、新位置或其他任何内容。 “***”(搞笑地命名为“dinkus”)告诉人工智能场景已经改变,括号内的文本提供了更多背景信息。

AI 不断重复特定的单词/短语,我该怎么办?

如上所述,您可以将重复惩罚滑块再推高一点,但推得太远可能会导致输出不连贯。 要更彻底地解决问题,请返回上下文,尤其是最近的消息,并删除重复的单词/短语。将其从上下文中删除可以让人工智能一开始就没有理由开始说它。