使用 API 构建无审查 AI 聊天机器人
无审查 AI 聊天机器人是指其模型响应合法的成人请求而不是拒绝它们的应用。你可以用约 40 行 Node 代码构建它,或使用 SillyTavern 等前端零代码构建,本指南涵盖这两种方式以及记忆、成本和限制。
更新于

“无审查”能意味着什么,不能意味着什么
想要无审查聊天机器人的搜索者通常指一件事:他们想要一个在话题合法且用户是成年人时,不会用警告、说教或拒绝来打断对话的聊天机器人。这对于小说、伴侣应用、黑色幽默、辩论练习和直率建议对话来说是合理的需求。
此 API 上的模型是一个开放权重模型,由独立提供商运行,并经过调整以在不进行内容拒绝的情况下响应合法的成人用途。它不是 Meta、Mistral、Qwen、DeepSeek、OpenAI、xAI、Google 或 Anthropic 的官方 API。有一个硬性限制无法通过提示词改变:禁止涉及未成年人的性内容。作为应用构建者,你还承担模型无法为你承担的责任,例如确保你的用户是成年人,并遵守你运营所在地的法律。
本指南的其余部分将“无审查”视为你刻意做出的设计选择。你的聊天机器人将执行系统提示和你的用户所要求的操作,因此机器人的质量主要取决于提示词和周围的代码。
选择你的路径:代码或无代码
| 路径 | 最佳适用场景 | 耗时 |
|---|---|---|
| 带有自定义接口的前端(SillyTavern 或类似工具) | 个人使用、角色聊天、快速尝试提示词 | 5 分钟 |
| 使用 OpenAI SDK 的小型脚本 | 学习、命令行机器人、Discord 或 Telegram 机器人 | 20 分钟 |
| 你自己的后端和 Web UI | 供他人使用的产品 | 一个周末或更长时间 |
所有三种路径都需要相同的要素:密钥、基础 URL 和模型 ID。在通过 Google 或电子邮件和密码注册后,你可以在 API 密钥页面获取密钥。新用户可以在那里一键领取 $0.50 的试用额度,有效期 7 天,无需付款。后续的充值仅限加密货币:TRC20 网络上的 USDT 或 Base 网络上的 USDC。
用 Node.js 搭建能运行的聊天机器人
安装官方 OpenAI 包,将密钥设置为环境变量,并将此保存为 bot.mjs。.mjs 扩展名让你可以使用 import 而无需额外配置。
# base URL https://api.nofilterapi.com/v1, model uncensored
npm install openai
export NOFILTER_API_KEY="YOUR_API_KEY"
node bot.mjs
import OpenAI from "openai";
import readline from "node:readline/promises";
import { stdin as input, stdout as output } from "node:process";
const client = new OpenAI({
baseURL: "https://api.nofilterapi.com/v1",
apiKey: process.env.NOFILTER_API_KEY,
});
const history = [
{
role: "system",
content:
"You are Dex, a blunt, funny late-night radio host. Speak plainly, " +
"keep replies under 120 words, and never lecture. All users are adults.",
},
];
const rl = readline.createInterface({ input, output });
while (true) {
const text = await rl.question("you> ");
if (text.trim() === "") break;
history.push({ role: "user", content: text });
const stream = await client.chat.completions.create({
model: "uncensored",
messages: history,
temperature: 0.8,
max_tokens: 400,
stream: true,
});
let reply = "";
process.stdout.write("dex> ");
for await (const chunk of stream) {
const piece = chunk.choices[0]?.delta?.content ?? "";
reply += piece;
process.stdout.write(piece);
}
process.stdout.write("\n");
history.push({ role: "assistant", content: reply });
}
rl.close();
这就是整个机器人。history 数组是对话记忆,因为 API 本身在调用之间不保留任何状态。每个轮次都会发送整个数组,因此模型可以看到之前发生的一切。流式输出会在生成时打印回复,使用量数据会在流结束时到达。
如果你想将此放在网页后面,请将密钥保留在你的服务器上。构建一个小型接口,接收用户的消息,将其添加到该用户的历史记录中,调用 API 并返回回复。放在浏览器 JavaScript 中的密钥可以被任何打开开发者工具的人读取,你的额度也会随之流失。文档列出了接口接受的每个参数。
赋予机器人持久的角色
无审查模型仍然需要引导。如果没有引导,它们会以平淡、中立的说话风格回答。聊天机器人的良好系统提示词包含五个简短部分:
- 身份。 姓名、角色、一个或两个显著特征。
- 语气。 句子长度、词汇、幽默、正式程度。给出一行示例。
- 你选择的边界。 该角色避免的话题(如果有)。这些是你的产品决策。
- 格式。 回复长度、是否使用列表、是否保持第一人称。
- 事实。 机器人必须记住的关于用户或世界的任何信息。
保持在约 400 词以内。长提示词不是更强的提示词,并且你在每次请求时都要为其付费,因为它是每次输入的一部分。每 1M 输入 token 成本为 $0.15,600 token 的系统提示词每次调用成本为 $0.00009,对于一次聊天来说很小,但在 100,000 次调用时变得显著:$9。
采样也很重要。0.7 到 0.9 左右的 temperature 适合对话。参数 top_p、stop、seed 以及频率和存在惩罚都会传递给模型,因此你可以调整重复性而无需使用技巧。
使用 SillyTavern 的无代码路径
SillyTavern 是一个免费的自托管聊天前端,在角色对话中很受欢迎,它允许你添加 OpenAI 兼容的接口。打开 API 连接面板,选择聊天完成类型,然后选择自定义或 OpenAI 兼容源。输入:
- 接口或基础 URL:
https://api.nofilterapi.com/v1 - API 密钥:你账户中的密钥
- 模型:
uncensored
菜单标签在不同版本之间有所不同,因此请使用这三个值并按照你版本的提示操作。连接后,创建或导入角色,在其描述中编写角色,然后开始对话。其他社区前端具有相同类型的选项,通常标记为自定义 OpenAI 接口或代理。
如果你想在选择路径之前了解此服务如何处理你的数据,请阅读 No Log AI API:常见误区与事实。我们这边的事实很简单:提示词不用于训练。
记忆:100,000 token 窗口及应对方法
上下文窗口为 100,000 token,涵盖提示词和补全。这足以支持非常长的对话,但随着历史消息的重新发送,成本会随之增加。包含 10,000 token 历史消息和 300 token 回复的轮次成本为 10,000 x $0.15 / 1M 加上 300 x $0.50 / 1M,即 $0.0015 加上 $0.00015,总计 $0.00165。$0.50 的免费试用额度大约可以覆盖 303 次这样的轮次。
实用的记忆设计使用两层。保留最后 15 到 20 条消息的原文,并在系统提示词中保留长期事实的紧凑列表。你可以让模型使用 JSON 模式为你维护该列表,这将输出限制为有效的 JSON:
curl https://api.nofilterapi.com/v1/chat/completions \
-H "Authorization: Bearer $NOFILTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"response_format": {"type": "json_object"},
"messages": [
{"role": "system", "content": "Extract durable facts about the user from the chat. Reply as JSON: {\"facts\": [string]}."},
{"role": "user", "content": "User: I work night shifts at a bakery and my cat is called Biscuit."}
]
}'
每 10 或 20 轮对最新消息运行此操作,将新事实合并到你存储的列表中,并将列表放入系统提示词中。模型的工作保持简单,你的机器人似乎能记住几个月的对话。
费用、限制与上线
价格为每 1M 输入 token $0.15,每 1M 输出 token $0.50,从预付额度中扣除,无订阅。你可以充值任意整额,金额从 $20 到 $500,充值 $50 及以上获得 +5% 奖励,$100 及以上获得 +10%,$200 及以上获得 +15%。额度永不过期,失败或被拒绝的请求不收费。定价页面有完整详情。
一个拥有 200 名用户、每人每天发送 30 条消息的机器人,按上述每次对话 $0.00165 计算,每天会产生 6,000 次调用,花费约 $9.90。较短的历史记录会迅速降低费用,因为输入端占主导。
当机器人规模扩大时,请遵守限制。完整密钥允许 8 个并发请求和每分钟 300 次请求。超出限制后,API 返回 HTTP 429 状态码,错误代码为 rate_limited 或 concurrency;在临时过载时,返回带有 Retry-After: 5 头的 429 响应。OpenAI SDK 默认重试 429 响应,你可以通过 maxRetries 客户端选项增加重试次数。流式输出会占用并发槽位直到结束,因此如果预期有突发流量,请针对每个密钥对传入消息进行排队。
在你的代码中为每个用户添加每日上限。这可以保护你的预付额度免受单个话多用户或脚本的影响,且只需十行代码。
更多指南
问答
运行无审查聊天机器人合法吗?
模型会响应合法的成人请求而不进行内容拒绝,但你要对你的应用、用户以及你运营所在地的法律负责。涉及未成年人的色情内容永远不允许。
我需要编写代码才能使用它吗?
不需要。SillyTavern 等前端接受 OpenAI 兼容的接口。输入基础 URL https://api.nofilterapi.com/v1、你的 API 密钥和模型 ID uncensored。
我如何为额度付费?
使用加密货币(TRC20 上的 USDT 或 Base 上的 USDC)充值任意整额,金额从 $20 到 $500。新用户可先体验 $0.50 的免费试用额度。
我的聊天记录会被用于训练吗?
不会。提示词不用于训练。该 API 是无状态的,因此你的应用必须在每一轮对话中存储并重新发送对话内容。