人们所说的无审查文本 API
如果你搜索过 nsfw ai api,你可能只想要一件事:一个你可以从自己的代码中调用、不会在故事中途因拒绝而中断的模型。在西班牙语和葡萄牙语中,缩写为 "IA"(inteligencia artificial,inteligência artificial),这就是为什么 "ia nsfw" 之类的查询很常见。每种语言的需求都是一样的:面向成人的小说、角色扮演和伴侣应用,基于遵循你编写的系统提示词的模型构建。
主流托管模型经过调整,会拒绝大量请求。这对于通用助手来说是合理的,但会破坏故事应用。此处的模型是一个由独立提供商运行的单一开放权重模型,经过调整,可在合法的成人用途中无内容拒绝地给出回复。它不是任何大型厂商的官方 API,也不是将你的调用转发给他人模型的网关。
你与它的交互方式与 OpenAI 相同:通过 HTTPS 发送 JSON、Bearer 密钥和 messages 数组。除了两个字符串外,你的客户端无需任何更改。
你实际调用的内容
在编写代码之前,将所有事实集中在一处。
- Base URL:
https://api.nsfwia.com/v1 - 模型 ID:
uncensored - 认证:
Authorization: Bearer YOUR_KEY - 接口:
POST /v1/chat/completions、POST /v1/responses和GET /v1/models - 上下文窗口: 100,000 token,提示词和补全合计
- 功能: 基于 SSE 的流式输出、函数调用、JSON 模式,以及 temperature、top_p、stop、seed 和惩罚参数的透传
仅限文本。没有图像、音频或视频生成,没有嵌入和微调。如果你的产品需要这些功能,请将该 API 与其他服务配合使用。
发送第一个请求
创建账户,打开 API 密钥页面 并复制你的密钥。新用户可以在那里一键领取 $0.50 的试用额度,有效期为 7 天。然后运行此代码:
curl https://api.nsfwia.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You are a novelist writing for adult readers. Stay in character."},
{"role": "user", "content": "Open a noir story set in a rainy port city."}
],
"temperature": 0.9
}'
使用官方 Python SDK 的相同调用:
from openai import OpenAI
client = OpenAI(
base_url="https://api.nsfwia.com/v1",
api_key="YOUR_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a novelist writing for adult readers."},
{"role": "user", "content": "Open a noir story set in a rainy port city."},
],
temperature=0.9,
)
print(resp.choices[0].message.content)
如果调用返回文本,则设置完成。401 表示密钥错误或包含多余空格。404 通常表示 Base URL 缺少 /v1。
流式输出和系统提示词
故事和聊天应用在没有流式输出时会感觉缓慢。设置 stream: true 并在服务器发送事件到达时读取它们。使用情况数据在流结束时提供。
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.nsfwia.com/v1",
apiKey: process.env.NSFW_API_KEY,
});
const stream = await client.chat.completions.create({
model: "uncensored",
stream: true,
messages: [
{ role: "system", content: "You are the narrator of an adult interactive fiction game." },
{ role: "user", content: "Describe the tavern the player just entered." },
],
});
for await (const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content ?? "");
}
由于模型不会对该类型做出反应,系统提示词成为你拥有的主要控制手段。说明场景、基调、视角和所需的长度。也将硬性规则放在那里,例如 "禁止涉及未成年人的性内容" 或 "保持在故事范围内"。清晰系统提示词对输出质量的提升比任何采样设置都大。
结构化输出和工具
应用通常需要数据而非散文:角色表、库存、玩家的选择列表。添加 response_format: {"type": "json_object"} 并在提示词中说明你期望的键,回复将是一个你可以解析的 JSON 对象。对于游戏逻辑,传递带有函数定义的 tools。当模型用 tool_calls 回答时,在你的代码中运行该函数,并使用 role: "tool" 将结果发回。这两个功能在流式输出时均可用,因此叙述者可以在同一回合中描述场景并调用掷骰子函数。
调整输出时,每次只进行小幅更改。一次只更改一个设置,例如降低 temperature 以获得更稳定的散文,或者如果模型重复自己则添加存在惩罚,然后在相同的提示词下使用固定的 seed 比较结果。
用西班牙语或葡萄牙语编写提示词
你可以发送西班牙语或葡萄牙语的系统提示词和用户轮次。一些开发人员将系统提示词保留为英语,让用户用自己的语言编写,这样指令保持稳定,而故事保持本地化。其他人则用用户的语言编写所有内容。在你自己的示例场景上尝试这两种方法并进行比较,因为我们没有发布语言基准,正确的选择取决于你的内容。
本站文章为英文,但 API 本身并不关心 JSON 包含哪种语言。我们的 常见误区与事实文章涵盖了关于无审查模型的常见误解,包括“无审查”意味着什么以及不意味着什么。
限制和成本
| 项目 | 说明 |
|---|---|
| 输入价格 | $0.15 / 1M token |
| 输出价格 | $0.50/1M token |
| 完整密钥 | 8 个并发请求,每分钟 300 个请求 |
| 试用密钥 | 2 个并发请求,每分钟 60 个请求 |
| 最大请求体 | 8 MB |
一次典型的角色扮演回合包含 2,000 个输入 token 和 500 个输出 token,输入费用为 $0.0003,输出费用为 $0.00025,总计 $0.00055。因此,$0.50 的免费试用额度大约可以支持 900 次此类回合。失败或被拒绝的请求不收费,且预付额度永不失效。加密货币充值金额为 $20 至 $500(TRC20 上的 USDT 或 Base 上的 USDC),充值 $50 赠 5%,$100 赠 10%,$200 赠 15%。完整详情见 价格页面。
如果你超过限制,你会收到 HTTP 429。错误代码 rate_limited 表示每分钟请求过多,concurrency 表示同时请求过多。流式请求会占用其槽位直到流结束,因此请关闭你不再读取的流。
持续有效的规则
该服务仅限合法成人使用。涉及未成年人的内容为硬性限制,无论何种形式均不可接受。提示词不用于训练。请在您的产品中保留年龄验证、同意界面和本地法律义务,因为 API 仅提供一个强大的文本模型,仅此而已。完整的请求参考文档见 文档。
