#
NovelAI
NovelAI 是一项付费订阅服务,允许无限量访问其高质量的内部文本生成、图像生成和文本转语音模型。在此注册账户开始使用:https://novelai.net/
您将仅获得 50 次生成 的免费评估模型。当出现 "不符合此模型的资格" 错误时,这意味着您的试用期已用完,需要订阅付费计划。
#
API 密钥
要获取您的 NovelAI API 密钥,请按照以下步骤操作:
选择左侧边栏顶部的齿轮图标。
左侧边栏 在"用户设置"下选择"账户"。
用户设置 选择"获取持久 API 令牌"。
账户 选择复制图标将您的 NovelAI API 令牌复制到剪贴板。
持久 API 令牌
#
模型
如果您有 Opus,那么 Erato 是要使用的模型。如果您没有 Opus,那么 Kayra 是可用的最佳模型。
Clio 在 Tablet/scroll 层级上有更大的上下文大小,但 Kayra 的强度通常会弥补这种差异。
#
设置
设置文件位于此处(SillyTavern/data/<user-handle>/NovelAI Settings)。
您也可以手动添加自己的设置文件。
#
响应长度
您希望每条消息生成多少文本。请注意,NovelAI 每个响应限制为 150 个令牌。
#
上下文大小
在任何给定时间保留在上下文中的聊天令牌数量。您可以使用的最大上下文大小取决于模型和您的订阅层级:
- Kayra (Tablet) - 3072 令牌
- Kayra (Scroll) - 6144 令牌
- Erato (Opus 专属)、Kayra (Opus) 和 Clio (所有层级) - 8192 令牌
#
前言
插入聊天上方以修改写作风格的文本。推荐的格式是短标签列表,如"[风格:聊天、详细、感官]"。
#
预设描述
根据 Novel AI 的说法,以下是默认预设的用途。
#
Erato
- Golden Arrow - 一个好的全能型。
- Wilder - 更高的词汇选择多样性,重试之间的差异更大,更容易出错。
- Zany Scribe - 避免错误和重复。优先考虑更复杂的词汇。
- Dragonfruit - 多样化和复杂的语言,重复很少。更频繁的错误和矛盾。
- Shosetsu - 专为日语写作设计。对英语也很有效。
#
Kayra
- Asper - 用于创意写作。期待意外的转折。
- Carefree - 一个好的全能型
- Fresh-Coffee - 保持事情在正轨上。很好地处理指令。
- Pro_Writer - 模仿畅销小说的节奏和感觉
- Stelenes - 更可能选择合理的替代方案。重试时的多样性。
- Tea_Time - 开始后效果很好。
- Writers-Daemon - 极富想象力,有时过于丰富。
#
Clio
- Edgewise - 很好地处理各种生成风格
- Fresh Coffee - 保持事情在正轨上。
- Long-Press - 用于创意散文。
- Talker Chat - 专为聊天风格生成设计。
- Vingt-Un - 一个良好的全能默认值,偏向散文。
#
在 SillyTavern 中使用 NovelAI 的技巧和常见问题
当从另一个 ST 后端 API 切换到 NovelAI 时,会出现许多常见问题和疑问。差异归结为模型的训练目的。很可能,您使用的是 OpenAI 或 Anthropic 模型(或模仿这些模型的本地模型),这些模型围绕遵循用户指令构建。NovelAI 的模型完全围绕文本完成构建:NAI 的模型不是将您的输入作为消息并制定响应,而是尝试继续传入的提示。由于这种差异,许多适用于其他 API 的技巧和常识对 NAI 不起作用。
#
为 NovelAI 调整设置
在高级格式设置(A 图标)下:
- 将"上下文模板"设置为"NovelAI"
- 将"分词器"设置为"最佳匹配"
- 勾选"始终将角色名称添加到提示中"
- 勾选"折叠连续的换行符"
- 取消勾选"指令模式"下的"启用"框
在用户设置下(带齿轮的人)
- 打开"滑动"(不是 NAI 特定的,但它非常有用,您应该这样做)
#
构建/适应 NovelAI 的角色卡
为了优化您的角色卡以用于 NovelAI,有几种推荐的方法来编写角色的描述:散文和属性。
散文如此简单,感觉不应该起作用:"Sylpheed 是一个看起来年轻但实际上 900 岁的仙女。她矮小娇小,长长的白发在她编织的侧马尾中渐变成绿色渐变,翠绿色的眼睛形状像十字。[...]" 不,真的,就是这样。只需用正常的句子写出角色的外观、行为等,AI 就会理解。
如果您不相信自己的写作能力或想要更有条理的方法,您可以使用属性方法,该方法存在于 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: character" 的存在是为了告诉 AI 这是在描述角色(而不是位置、对象或其他类型的东西)。其余属性是可选的,有些是冗余的(例如,Personality、Mind 和 Mental 基本上意思相同),但这些已经过测试,并且与 NovelAI 的模型很好地配合。填写与您的角色相关的那些。属性应该用小写书写,并用逗号分隔,单词周围不需要引号。例如:
Skills: lockpicking, stealth, running away very fast
推荐这些方法是因为它们存在于 NovelAI 的训练数据中,因此它们特别适合模型。
#
示例卡
这里有几个为 NovelAI 制作示例卡,展示了专门为 NovelAI 创建卡的不同方法。第一张卡 Valka 使用属性方法进行角色描述,而第二张卡 Eris 使用散文描述,以及大量的示例对话。
#
不应该做什么
大多数现有的角色卡格式不适合 NovelAI。它们会给您一些结果,甚至一些好的结果,但它们有很多问题。W++ 是最大的问题之一,它与 NovelAI 模型训练的任何内容都不相似,并且它不断使用括号/大括号/引号会消耗大量令牌,使卡的大小膨胀而没有真正的好处。
在现有格式中,AliChat 是最可能有效的格式,因为它依赖于使用示例消息来同时传达角色信息和他们的声音,以您希望 AI 输出的消息类型格式。
对于大多数其他格式,由于它们通常是列出特定角色不同特征的方法,它们可以相当直接地转换为属性方法。
#
我应该使用哪个模块?
可能不需要模块。如果您希望角色以更华丽的方式说话,Prose Augmenter 很有用,但要小心不要过度。Text Adventure 可能对文本冒险风格的卡/故事有用。
#
不是指令模块?
您可以在需要时调用指令模块。在您的消息中创建一个换行符,并将您的指令放在大括号中,如下所示:{ CharName is offended by that seemingly innocuous statement }(文本和括号之间的空格是_必需的_)。这样做会自动将 AI 短暂切换到指令模块。您不想一直使用指令模块,因为它往往比其他模块产生较少的创意输出,只是在您需要强烈引导 AI 朝特定方向时。
#
为什么我的响应不断被截断?
NovelAI 将响应长度限制为总共约 150 个令牌,即使您将滑块设置得高于此值。当它达到滑块中的令牌数量或 150 个令牌时(以较低者为准),它将生成最多 20 个更多令牌,寻找停止序列或句子结尾,因此响应的有效限制为 170 个令牌,此时它将停止,导致截断。
如果被截断,您可以选择继续选项(在文本框左侧的三行菜单中)让角色继续他们的响应。
如果您经常想要超过 170 个令牌的响应,您可以这样绕过限制:
- 将响应长度保持在 150 个令牌。
- 在高级格式设置下,启用自动继续。
- 将"目标长度"设置为所需的长度。
这将链接多个生成以给您更长的消息,但不保证如果模型决定停止,回复将是所需长度的 100%。
#
如何让机器人写更长的响应?
阅读上述关于响应被截断的内容。这将有助于确保响应不会因为遇到生成长度限制而过早被截断。
如果您的响应没有被截断但仍然太短,很可能您遇到的是"垃圾进,垃圾出" - 如果您给模型坏的示例,它会产生坏的输出。如果角色卡没有示例对话或简短的示例对话,并且您发送给机器人的消息很短,模型会理解这一点,将其作为接受的方式,响应会很短。因此,编写更长的示例对话和更长的消息给机器人。(您总是可以使用 NovelAI 为您编写一些示例对话,而不是自己编写。)
#
如何让机器人停止为我说话?
- 检查角色卡的第一条消息和示例对话是否不包括角色为您采取行动 - 如果包括,则重写它们以摆脱它为您行动的部分
- 确保"始终将角色名称添加到提示中"已勾选
- 确保您当前使用的用户角色与聊天的其余部分相同。如果您更改了用户角色并且没有更改回来(或者没有锁定到该聊天的角色),停止为您生成的通常规则将失败
- 将 ["\n{{user}}:"] 添加到自定义停止字符串(应该不是必需的,但有时有帮助)
#
为什么我的角色没有响应?
很多事情可能导致这种情况,因此我们需要查看几个地方:
- 确保在高级格式设置中勾选了"始终将角色名称添加到提示中"
- 检查确保 API 没有出现任何错误。虽然您可以在 NAI 免费试用期间使用 SillyTavern,但一旦用完,您只会得到错误
- 检查您在"自定义停止字符串"中的内容 - 如果这些在响应开始时生成,可能会过早被截断
#
我应该如何使用作者注释?
一般来说,您可能不应该。它插入在上下文的非常接近末尾的地方,对于 NAI 的模型,它经常压倒上下文中的所有其他内容。它主要是来自较旧、较弱模型的遗留物,在那里它更必要。
#
如何进行场景中断/时间跳跃?
将以下内容作为系统消息或放在下一条消息开头的新行中:
***
[ 2天后 ]
然后将您的消息的其余部分放在下一行。括号中的文本可以是时间跳跃、新位置或其他任何内容。"***"(有趣地称为"dinkus")告诉 AI 场景已经改变,括号中的文本提供更多上下文。
#
AI 不断重复特定的单词/短语,我该怎么办?
如上所述,您可以将重复惩罚滑块推高一点,但推得太远可能会使输出不连贯。 要更彻底地解决问题,请回顾上下文,特别是最近的消息,并删除重复的单词/短语。从上下文中删除它给 AI 更少的理由开始说它。