Qwen Abliterated API:调用托管模型,无需 GPU

你可以使用已有的 OpenAI SDK 通过 HTTP 调用无审查聊天模型,无需下载权重或租用 GPU。本指南展示了设置方法、可用代码及精确成本。
要点
- 将任何 OpenAI SDK 指向 base URL,并将模型设置为 uncensored。
- 流式输出、工具调用和 JSON 模式通过标准参数工作。
- 限制:完整密钥支持 8 个并发请求和每分钟 300 个请求。
- 按 token 付费:输入每 1M token $0.15,输出每 1M token $0.50。
简短回答:更改 base URL
如果你正在寻找 Qwen Abliterated API,实用的方案是使用支持 OpenAI 协议的托管接口。你只需保留客户端代码,修改两个值,即可向运行该模型的服务器发送请求。无需下载 GGUF,无需选择量化,无需考虑显存预算。
关于命名的必要说明:这是一个独立服务,并非官方 Qwen API,托管模型的标识为 uncensored,而非 Qwen 检查点名称。这是一个开放权重模型,由独立提供商运行,经过调整可在合法成人用途中无内容拒绝地回答问题。如果你需要某个特定的去审查模型文件,请在本地运行该文件。如果你需要一个用于应用的可靠聊天接口,请继续阅读。
| 设置 | 说明 |
|---|---|
| Base URL | https://api.qwenabliterated.top/v1 |
| 模型 | uncensored |
| Auth 头 | Authorization: Bearer YOUR_API_KEY |
| 接口 | POST /v1/chat/completions,GET /v1/models |
| 上下文窗口 | 100,000 token,包含提示词和补全 |
获取密钥
使用 Google 或邮箱密码注册,然后打开 API 密钥页面。新用户可一键领取 $0.50 试用额度,每人限领一次,有效期 7 天,无需绑定银行卡。这足以让你多次运行下面的所有示例。
试用密钥的限制低于完整密钥:并发请求限制为 2,每分钟请求限制为 60,而完整密钥分别为 8 和 300。如果你使用并发工作线程进行测试,请牢记这一点。
将密钥存储在环境变量中,而不是源代码控制中:
export QWENABL_KEY="paste-your-key-here"Python 中的首次请求
使用 pip install openai 安装官方 SDK,然后:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.qwenabliterated.top/v1",
api_key=os.environ["QWENABL_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a blunt technical assistant."},
{"role": "user", "content": "Explain what a KV cache is in three sentences."},
],
temperature=0.7,
)
print(resp.choices[0].message.content)
print(resp.usage)
响应包含标准的 usage 块,因此你可以记录提示词和补全 token 并自行计算支出。响应头包含 X-Request-Id 用于支持查询,以及 X-Balance-USD 以便你在不打开仪表板的情况下查看剩余额度。
为何使用 API 而非 GGUF 文件
通常获取无审查模型的路径是找到量化文件,在本地运行时加载它,并与本地服务器通信。这可行,对于实验来说,这是学习的好方法。但当从实验转向其他人使用的产品时,摩擦就会显现。
首先是硬件。适合你桌面显卡的短上下文文件,在长上下文时可能无法运行,因为注意力缓存随每个 token 增长。其次是并发。单个本地进程可以舒适地处理一到两个聊天,但十个用户同时使用会导致排队。第三是可用性。家庭电脑会休眠、断电或在错误的时间进行驱动更新。托管 API 将这些变成他人的工作,你只需为使用的 token 付费。
你放弃的是选择特定检查点的自由,以及保证字节不离开你网络的保证。在做出选择之前,决定哪一点对你的项目更重要。
Node.js 和 curl
Node SDK 采用相同的两个选项:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.qwenabliterated.top/v1",
apiKey: process.env.QWENABL_KEY,
});
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Give me five names for a fantasy tavern." }],
});
console.log(resp.choices[0].message.content);
使用 curl 也是如此,这在连接任何内容之前检查密钥很方便:
curl -s https://api.qwenabliterated.top/v1/models \
-H "Authorization: Bearer $QWENABL_KEY"
成功的调用返回包含 uncensored 的 JSON 列表。401 表示密钥错误或缺失。文档详细介绍了错误格式。
流式输出、JSON 模式和工具
流式输出
设置 stream: true 并读取服务器发送的事件。使用情况在流结束时报告。
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Write a short scene on a night train."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
流式请求会占用其并发槽位,直到流结束,因此打开流后离开的客户端将阻塞容量。务必消费或关闭流。
JSON 模式
传递 response_format={"type": "json_object"} 并在提示词中提及 JSON。无论如何都要进行防御性解析;没有模型能每次都完美遵循模式。
函数调用
发送 tools 和可选的 tool_choice。当模型请求工具时,运行它并将输出作为带有 role: "tool" 的消息返回。工具调用也支持流式输出。采样参数 temperature、top_p、stop、seed 以及频率和存在惩罚会透传。
将其集成到实际应用中
单个脚本很容易。应用程序需要养成一些习惯,这些习惯与你使用任何 OpenAI 风格 API 时相同。
将密钥保留在服务器端
切勿将密钥发布到浏览器代码或移动应用中。从后端调用 API,并向前端暴露你自己的路由,以便添加认证和按用户限制。任何在包中找到密钥的人都可以消耗你的额度。
设置超时并限制输出
补全可以使用 100,000 token 窗口中剩余的任何部分,max_tokens 是可选的。对于聊天功能,设置与界面匹配的上限,以防止异常长的回答导致账单激增。将其与客户端超时结合使用,即可为每次调用设定时间和金钱的上限。
记录请求 ID
每个响应都包含 X-Request-Id。将其存储在您自己的调用记录旁边。当结果看起来错误或请求失败时,该标识符是支持人员找到确切请求的关键。X-Balance-USD 标头对于简单警报很有用:如果数字低于阈值,在任务耗尽前发送消息给自己。
在启动时检查模型列表
调用 GET /v1/models 的健康检查不消耗 token,并一步确认密钥、URL 和网络路径。在服务启动时运行它,如果返回错误则明确报错。
限制和错误处理
超过限制的请求返回 HTTP 429。错误代码告诉您触发了哪个限制:rate_limited 表示每分钟请求过多,concurrency 表示同时请求过多。在临时过载期间,API 还会返回带有 Retry-After: 5 标头的 429。最大主体为 8 MB。
尊重标头并退避:
import time
from openai import OpenAI, RateLimitError
def ask(client, messages, tries=5):
for attempt in range(tries):
try:
return client.chat.completions.create(model="uncensored", messages=messages)
except RateLimitError as e:
wait = int(e.response.headers.get("Retry-After", 5))
time.sleep(wait * (attempt + 1))
raise RuntimeError("still rate limited")
如果你运行工作线程池,请将完整密钥的线程数限制为 8。超过此限制只会将工作转换为 429 错误。失败或被拒绝的请求不会收费,因此失败时的重试不会额外花费。
请求成本
输入 token 每 1M 为 $0.15,输出 token 每 1M 为 $0.50。一些精确计算的示例:
- 一次包含 2,000 个提示词 token 和 500 个补全 token 的对话轮次:2,000 x $0.15 / 1M = $0.0003,加上 500 x $0.50 / 1M = $0.00025,总计 $0.00055。一千次轮次的费用为 $0.55。
- 一个发送 10M 输入 token 并接收 2M 输出 token 的批处理作业:$1.50 加上 $1.00,总计 $2.50。
- 一次长上下文调用,包含 90,000 个提示词 token 和 1,000 个输出 token:$0.0135 加上 $0.0005,总计 $0.014。
额度为预付制,永不过期,无订阅。充值任意整数金额,范围从 $20 到 $500;充值 $50 可获 5% 奖励,即充值 $50 获得 $52.50 额度。支持加密货币(TRC20 上的 USDT、Base 上的 USDC)支付。查看 定价页面 获取完整奖励表。
托管服务与本地文件:哪种更适合
本地 GGUF 通过隔离提供隐私,并让你完全控制精确权重。托管 API 无需硬件运维,支持长上下文,并提供其他服务可调用的 URL。大多数构建机器人、写作工具或游戏后端的团队发现托管更简单,因为备用 GPU 盒子是另一件需要维护的事物。
若要更广泛地了解按 token 付费与获取 Qwen 风格模型的其他方式的比较,请参阅 对比指南。发送给 API 的提示词不用于训练。该模型仅支持文本,且在任何情况下均不允许涉及未成年人的色情内容。
更多指南
问答
我需要 GPU 才能使用它吗?
不需要。模型在提供商服务器上运行。你的代码仅发送 HTTP 请求,因此笔记本电脑或小型 VPS 即可满足需求。
我应该发送哪个模型名称?
将 uncensored 作为模型值发送。你可以通过向 /v1/models 发送 GET 请求来确认。
是否支持 OpenAI Python 和 Node SDK?
支持。将 Base URL 设置为站点的 /v1 地址并使用你的 API 密钥即可。通过正常参数即可使用聊天补全、流式输出、函数调用和 JSON 模式。
如果我发送的请求过多会发生什么?
你会收到 HTTP 429 响应,错误代码为 rate_limited 或 concurrency。请等待并重试,并在存在时遵守 Retry-After 头。
有免费测试的方法吗?
新用户可在 API 密钥页面一键领取 $0.50试用额度。有效期 7 天,无需绑定银行卡。