要点
- 无审查 API 遵循标准的 OpenAI 语法,但缺少嵌入或多种模型路由等高级功能,因此你的客户端必须配置为指向单一接口。
- 流式响应需要特定的 SSE 处理;如果您的 SDK 默认使用 JSON 解析,您将在大型无审查输出中遇到解析错误。
- 函数调用有效,但需要严格遵循 JSON 模式,因为该模型比指令微调模型更容易产生幻觉参数。
- 您每分钟限制 300 次请求且请求体大小为 8MB,这需要高容量应用采取谨慎的批量策略。
了解无审查 AI API 接口
在集成无审查 AI API 时,第一个错误是假设其行为与标准商业模型完全相同。我们的接口是一个托管的、兼容 OpenAI 的聊天补全服务。它提供单一的、专用的无审查大型语言模型。这意味着你无需管理模型路由或版本控制。你向 POST /v1/chat/completions 发送请求,并接收文本作为响应。
与捆绑图像、视频和多个供应商的聚合器不同,该服务专注于高性能、无限制的文本生成。该模型是开放权重模型,经过调整以在法律允许的成人用途下不进行内容拒绝。但它不是 GPT、Claude、Gemini 或其他供应商的模型。它运行在我们自己的 GPU 服务器上。
基本 URL 为 https://api.uncensoredgptapi.com/v1。要使用它,你只需更改现有 OpenAI SDK 或任何兼容 OpenAI 的客户端中的 base_url 并提供你的 API 密钥即可。你必须发送的模型 ID 仅为 "uncensored"。这种简洁性缩短了集成时间,但要求你验证客户端能否处理单模型接口,而无需期望故障转移。
常见认证错误
认证错误通常源于标头配置错误或密钥过期。API 使用标准的 Bearer 令牌认证。您必须在每个请求的 Authorization 标头中包含您的 API 密钥。
一个常见错误是缓存 API 密钥而不验证其有效性。如果您重新生成密钥,旧密钥将立即失效。您必须更新客户端配置以使用新密钥。如果收到 401 Unauthorized 错误,请检查两点:首先,确保密钥复制正确,没有前导或尾随空格。其次,验证您是否使用了正确的 Base URL。域名或路径的微小偏差都会导致认证失败。
另一个常见问题是使用错误的模型 ID。该接口期望使用 "uncensored"。如果你发送 "gpt-4" 或其他标准模型 ID,接口可能会拒绝请求或返回错误,因为它仅提供一个模型。务必仔细检查请求体中的 model 字段。
curl https://api.uncensoredgptapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'
正确处理流式响应
支持通过服务器发送事件 (SSE) 进行流式输出,但习惯于同步 JSON 响应的开发者经常处理不当。当你在请求中设置 "stream": true 时,API 返回的是部分 JSON 对象流,而不是单个完整的 JSON 响应。
如果您的客户端尝试一次性将整个响应解析为 JSON,将会失败。您必须逐行读取流。每行以 data: 开头,包含一个部分 JSON 对象。最后一行是 data: [DONE]。您的代码应聚合这些块以重建最终文本。
某些 SDK 会自动处理此问题,但自定义实现需要显式的 SSE 解析。确保客户端缓冲区能够处理大型输出而不会超时。无审查模型可以生成长响应,流式输出有助于管理内存使用。如果遇到连接断开,请考虑在重试逻辑中实现指数退避。
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
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 模式精确。模型将尝试填充参数,但可能会省略必填字段或提供错误的类型。
在执行函数之前,始终验证函数调用参数。如果模型返回参数的无效 JSON,必须优雅地处理错误。不要假设输出将是完美结构的。您可能需要实现重试机制或后处理步骤来清理参数。
此外,请注意,如果提示词复杂,无审查模型可能会忽略工具定义。如果遇到问题,请简化工具描述,并确保系统提示词清楚地指示模型在适当时使用工具。使用一些样本输入进行测试以验证行为。
上下文窗口限制(100k token)
无审查 API 支持 100,000 token 的上下文窗口,结合提示词和补全。这比许多标准模型大得多,允许进行广泛的对话或大型文档处理。然而,它不是无限的。如果输入超出此限制,API 将返回错误。
为避免达到此限制,请监控 token 使用量。大多数 SDK 提供计算 token 的工具。跟踪对话历史中的累积 token。如果您正在处理大型文档,请考虑将它们分块或总结对话的早期部分以释放上下文空间。
请记住,上下文窗口包含 messages 数组中的所有消息。每条消息都对总数有贡献。如果您发送许多小消息,开销可能会累积。优化提示词结构以最小化不必要的 token。例如,如果系统指令保持不变,避免在每一轮中重复它们。
速率限制详解(300 RPM)
API 对每个密钥实施每分钟 300 次请求的速率限制。这是一个硬性限制,以确保所有用户的公平使用。如果你超过此限制,你将收到 429 请求过多错误。你的客户端应通过实施重试策略来处理此情况。
一个常见错误是没有考虑突发流量。如果您快速连续发送 300 次请求,即使平均速率较低,也可能达到限制。在一分钟内均匀分布请求。如果您正在处理大型数据集,请考虑批量请求或使用队列来管理流量。
速率限制按 API 密钥应用。如果您有多个服务使用相同的密钥,它们共享该限制。要增加容量,您可以生成新密钥,但请注意,每个账户只有一个密钥处于活动状态。您可以随时重新生成密钥,但这会撤销旧密钥,因此请确保更新所有客户端。
请求体大小限制(8MB)
每个请求体限制为 8 MB。此限制适用于 JSON 负载,包括 messages 数组和任何工具定义。如果你的请求超过此大小,API 将拒绝它并返回 413 负载过大错误。
当发送作为 base64 编码数据的大文件或包含大量对话历史时,此限制非常重要。如果你正在处理大型文档,请在发送前考虑压缩文本或删除不必要的空白。你也可以使用流式输出来减少内存使用,但初始请求体仍必须适合 8 MB 限制。
在开发期间监控你的请求大小。如果遇到此错误,请检查你的提示词结构并删除任何冗余信息。例如,如果你在每个消息中都包含整个系统提示词,请将其移动到 system 角色中一次,然后引用它。
API 密钥管理与重新生成
每个账户限制为一个 API 密钥。该密钥在注册期间生成并立即显示。你可以随时从仪表板重新生成密钥。当你重新生成时,旧密钥将立即失效。任何使用旧密钥的客户端都会收到 401 未授权错误。
要有效管理此情况,请在重新生成密钥之前更新所有客户端。如果你有多个服务或设备使用该密钥,请确保它们同时更新。你可以根据需要生成任意多次新密钥,但一次只有一个处于活动状态。
API 密钥与你的电子邮件和密码绑定。如果你丢失了密钥,可以重新生成它。重新生成的次数没有限制。但是,频繁重新生成可能表明存在安全问题,因此请在必要时使用它。请妥善保管密钥,不要公开分享。
内容过滤器故障排除
无审查模型不会拒绝合法的成人内容、虚构内容、安全研究或争议性话题。然而,有一个始终适用的硬性内容限制:涉及未成年人的性内容。包含此类内容的请求将被拦截。
如果你遇到意外的拒绝,请检查你的提示词中是否有被禁止内容的细微指示。该模型经过调整以支持无限制使用,但它可能仍会应用基本的安全过滤器。如果你正在使用边缘案例进行测试,请记录行为以了解模型的边界。
另一个常见问题是幻觉。无审查模型可能会生成听起来合理但不正确的信息。始终验证关键输出,尤其是在使用工具调用或生成代码时。在某些情况下,该模型优先考虑流畅性而非严格的事实准确性。