角色扮演最佳 Abliterated LLM:API 设置指南
Abliterated 模型是大语言模型,其中执行安全拒绝的机制已被移除,允许模型在不触发内容过滤器的情况下回答争议性、成人或小众问题。这种方法让开发者完全控制模型的语气和知识截止日期,对于编码、角色扮演和创意写作尤其有价值,因为标准护栏可能会阻止有用的输出。
已更新

要点
- 当模型在场景中拒绝或说教时,角色扮演就会失败,因此拒绝行为比原始基准分数更重要。
- 100,000 token 的窗口可以容纳长角色卡以及数小时的聊天记录。
- SillyTavern 通过其自定义 OpenAI 兼容源连接,使用 base URL、密钥和 model ID
uncensored。 - 50 轮会话,平均提示词 6,000 token,成本约为 $0.05。
什么样的模型擅长角色扮演
角色扮演是对语言模型的严苛测试。它必须在数百条消息中保持角色声音,记住三幕之前的情节,在故事转向黑暗时保持角色设定,且从不跳出角色来解释自己。标准助手模型通常在最后一点失败。它会写出很好的段落,然后添加免责声明或拒绝一个显然是虚构的情节转折。
去审查或无审查模型经过调整以消除这些拒绝。这有帮助,但这只是你在承诺使用提供商之前值得检查的五个特征之一:
- 拒绝行为。 它是否在没有评论的情况下遵循反派的对话或道德灰色场景?
- 上下文长度。 角色卡、世界笔记和聊天记录是否能放入一个请求中?
- 一致性。 角色在长会话中是否保持相同的说话习惯?
- 采样控制。 你可以调整 temperature、top_p、惩罚和 stop sequences 吗?
- 流式输出。 文本是否逐 token 出现,使回复感觉像对话?
没有人能诚实地为每种故事风格命名单一赢家。品味很重要,两位作家会对同一模型给出不同的排名。实际答案是运行你自己的场景,并自己评估输出。
此 API 为角色扮演提供什么
该服务运行一个开放权重模型,由独立提供商托管,并经过调整以在合法成人使用中无内容拒绝地回答。模型 ID 是 uncensored。没有供应商之间的路由,所以你在周一测试的声音就是周五得到的声音。
| 角色扮演需求 | 你获得的功能 |
|---|---|
| 长记忆 | 100,000 token 的上下文,提示词加补全 |
| 实时打字效果 | 通过 SSE 流式输出,带有 stream: true |
| 风格控制 | temperature、top_p、stop、seed 以及两种惩罚参数均透传 |
| 客户端支持 | OpenAI 兼容,因此 SillyTavern 和类似工具只需更改 URL 即可工作 |
| 隐私 | 提示词不用于训练 |
有一个硬性限制且不可协商:不允许涉及未成年人的性内容。让你的角色和场景保持在这条线的正确一侧,并在合法成人使用范围内。模型家族的详细信息在 去审查模型页面 上。
分五步连接 SillyTavern
SillyTavern 可以连接到任何 OpenAI 兼容的接口。菜单标签在不同版本之间略有变化,但流程相同。
- 创建一个账户并在 API 密钥页面 领取你的密钥。新用户只需点击一下即可获得 $0.50 的试用额度,有效期为 7 天,无需信用卡。
- 在 SillyTavern 中,打开插件图标(API 连接)并将 API 类型设置为Chat Completion。
- 选择 Custom(OpenAI 兼容) 源。
- 输入
https://api.abliterated.cc/v1作为接口 URL,并将你的密钥粘贴到 API 密钥字段中。 - 输入
uncensored作为 model ID,然后按连接。绿色状态表示对/v1/models的请求成功。
如果连接失败,请先检查 URL。它必须以 /v1 结尾,且后面没有额外路径,也没有多余的 /chat/completions。客户端会自动添加该部分。
建议的起始设置
Temperature 在 0.8 到 1.0 之间可以产生生动的散文。保持 top_p 接近 0.9。如果回复开始重复相同的短语,添加一个小的 frequency penalty,约为 0.2。设置接近真实窗口的上下文大小,但为回复留出空间。然后在几场戏后通过感觉进行调整。
在 Python 中构建你自己的角色扮演循环
如果你编写自己的前端或 Discord 机器人,OpenAI SDK 就足够了。此脚本保留完整历史记录,流式输出回复,并防止模型替你写台词。
from openai import OpenAI
client = OpenAI(
base_url="https://api.abliterated.cc/v1",
api_key="YOUR_KEY",
)
system = (
"You are Mara, a smuggler captain in a sea-faring fantasy setting. "
"Write in third person, past tense, two short paragraphs per reply. "
"Never write the actions or words of the player character."
)
history = [{"role": "system", "content": system}]
while True:
user = input("> ")
history.append({"role": "user", "content": user})
stream = client.chat.completions.create(
model="uncensored",
messages=history,
temperature=0.9,
top_p=0.9,
frequency_penalty=0.2,
stop=["\nPlayer:"],
stream=True,
)
reply = ""
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
piece = chunk.choices[0].delta.content
reply += piece
print(piece, end="", flush=True)
print()
history.append({"role": "assistant", "content": reply})
相同的调用在 Node、curl 或任何其他 OpenAI 客户端中均可使用。仅需更改 base URL、密钥和模型 ID。文档中的快速入门展示了每种变体。
编写模型可以遵循的角色卡
大多数角色扮演质量问题都是提示词问题。模糊的角色卡会产生模糊的角色。好的角色卡应控制在 300 到 600 个 token 之间,并涵盖四个方面:角色是谁、说话方式、当前目标,以及他们绝不能做的事。
具体胜过诗意。比较“Mara 神秘而危险”与“Mara 用问题回答问题,从不向陌生人透露她的真名,当有人站在她身后时,她会把一只手放在刀旁。”第二行为模型提供了可以在每一轮中重现的行为。
- 声线样本。 添加两到三行示例对话。模型从示例中模仿节奏和词汇的可靠性高于从形容词中模仿。
- 格式规则。 说明人物、时态、长度以及是否使用星号表示动作。除非明确告知一次,否则模型在格式上容易偏离。
- 场景状态。 将当前地点、时间和未结束的线索放在提示词的末尾,因为最近的信息具有最强的影响力。
- 边界。 如果故事仅涉及成年人,请在角色卡中说明。例如“所有角色均为成年人”这样的行,能让你和任何查看日志的人对设定保持清晰。
修复扁平、循环或强势的角色
这些是在第一个小时后出现的问题,以及通常的修复方法。
角色会重复自己
短语会在几次回复后再次出现。将 frequency_penalty 调高至 0.3,将 presence_penalty 调高至 0.1,将 temperature 调高 0.1,并检查你的摘要或示例对话本身是否包含该短语。模型会复制它看到的内容。
回复越来越长
长回复会让模型认为长回复是正常的。从历史记录中删除几条,重申长度规则,并将 max_tokens 设置为可接受的阈值。该字段是可选的,因此只有在设置时才会作为上限起作用。
模型决定你的角色做什么
在系统消息中添加硬性规则,并在角色名称前缀上设置停止序列,如上面的脚本所示。如果你使用前端,请检查它是否使用相同的名称标签格式化历史记录。
故事停滞
给角色设定一个目标和倒计时。“她需要在潮汐变化前拿到地图”能推动剧情。没有欲望的角色会等待你的行动,导致场景停滞。
保持长故事连贯
100,000 token 的窗口很大,但长达数月的战役会超出其容量。请提前规划。
- 锁定关键内容。 将角色卡和当前场景目标放在系统消息的顶部,这样它们就不会被截断。
- 总结旧对话。 每 30 或 40 条消息,要求模型将最旧的聊天部分浓缩为简短摘要,然后用该摘要替换这些消息。
- 使用设定列表。 将名称、地点和承诺存储在一个短块中,并在每轮刷新。模型更容易忘记 80 条消息前的次要细节,而不是最近提示词中陈述的事实。
- 调试时使用 seed。 当你调整提示词时,固定的
seed使比较更公平。
常见故障:模型替你扮演角色。在系统提示词中通过直接规则修复,并用上述类似的 stop sequence 进行辅助。另一个问题:每次回复都以相同的方式开头。稍微提高 temperature 并增加频率惩罚。
会话成本
定价为每 1M 输入 token $0.15,每 1M 输出 token $0.50,从预付额度中扣除。角色扮演是输入密集的,因为每轮都会发送整个历史记录,所以输入端占主导地位。
进行一次 50 轮会话。平均提示词为 6,000 token(角色卡加历史记录),每条回复大约 250 token。
- 输入:50 x 6,000 = 300,000 token,即 0.3 x $0.15 = $0.045
- 输出:50 x 250 = 12,500 token,即 0.0125 x $0.50 = $0.00625
- 总计:$0.05125,约五美分
$20 充值大约可支持 390 次该规模的会话。充值金额为 $20 至 $500 的整数,并享有额外奖励:满 $50 赠 5%,满 $100 赠 10%,满 $200 赠 15%。额度永不过期,失败或被拒的请求不扣费。支持加密货币(TRC20 链 USDT、Base 链 USDC)支付。完整数字详见 定价页面。
更多指南
问答
是否存在一款用于角色扮演的最佳去对齐 LLM?
没有。偏好因流派和写作风格而异。在决定之前,使用 $0.50 的免费试用额度,用你自己的场景测试候选模型。
我可以与 SillyTavern 一起使用吗?
可以。选择 Chat Completion,然后选择 Custom (OpenAI-compatible) 源,输入 base URL 和你的密钥,并将模型 ID 设置为 uncensored。
它允许任何内容吗?
它经过调整,可在合法成人用途中不进行内容拒绝。涉及未成年人的性内容始终不允许。
我可以发送多少历史记录?
上下文窗口为 100,000 token,在提示词和补全之间共享。
只差一张表单,即可获得密钥
创建账户,复制密钥,更改基础 URL。这就是全部设置。