中文 ▾
获取 API 密钥

使用 API 构建无审查 AI 聊天机器人

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

更新于

发光的聊天气泡旁有一个终端立方体的等距插图,代表在开放 API 上构建聊天机器人

“无审查”能意味着什么,不能意味着什么

想要无审查聊天机器人的搜索者通常指一件事:他们想要一个在话题合法且用户是成年人时,不会用警告、说教或拒绝来打断对话的聊天机器人。这对于小说、伴侣应用、黑色幽默、辩论练习和直率建议对话来说是合理的需求。

此 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 中的密钥可以被任何打开开发者工具的人读取,你的额度也会随之流失。文档列出了接口接受的每个参数。

赋予机器人持久的角色

无审查模型仍然需要引导。如果没有引导,它们会以平淡、中立的说话风格回答。聊天机器人的良好系统提示词包含五个简短部分:

  1. 身份。 姓名、角色、一个或两个显著特征。
  2. 语气。 句子长度、词汇、幽默、正式程度。给出一行示例。
  3. 你选择的边界。 该角色避免的话题(如果有)。这些是你的产品决策。
  4. 格式。 回复长度、是否使用列表、是否保持第一人称。
  5. 事实。 机器人必须记住的关于用户或世界的任何信息。

保持在约 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 是无状态的,因此你的应用必须在每一轮对话中存储并重新发送对话内容。

只差一张表单,即可获得密钥

创建账户,复制密钥,更改基础 URL。这就是全部设置。