中文 ▾

无审查 AI API:常见错误及修复方法

大多数开发者在使用无审查 AI API 时遇到的困难,并非因为模型复杂,而是因为他们将标准的 OpenAI 限制应用到了无限制的接口上。本指南详细说明了切换到无审查 LLM API 时导致 400 错误或静默失败的具体配置错误、速率限制和结构特性。

更新于

要点

  • 无审查 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 密钥与你的电子邮件和密码绑定。如果你丢失了密钥,可以重新生成它。重新生成的次数没有限制。但是,频繁重新生成可能表明存在安全问题,因此请在必要时使用它。请妥善保管密钥,不要公开分享。

内容过滤器故障排除

无审查模型不会拒绝合法的成人内容、虚构内容、安全研究或争议性话题。然而,有一个始终适用的硬性内容限制:涉及未成年人的性内容。包含此类内容的请求将被拦截。

如果你遇到意外的拒绝,请检查你的提示词中是否有被禁止内容的细微指示。该模型经过调整以支持无限制使用,但它可能仍会应用基本的安全过滤器。如果你正在使用边缘案例进行测试,请记录行为以了解模型的边界。

另一个常见问题是幻觉。无审查模型可能会生成听起来合理但不正确的信息。始终验证关键输出,尤其是在使用工具调用或生成代码时。在某些情况下,该模型优先考虑流畅性而非严格的事实准确性。

问答

无审查 API 是否与 OpenAI SDK 兼容?

是的,完全兼容。你只需将基本 URL 更改为 https://api.uncensoredgptapi.com/v1 并将模型 ID 设置为 "uncensored" 即可。所有标准参数如流式输出、函数调用和消息均按预期工作。

我该如何处理速率限制?

你每个密钥每分钟限制为 300 次请求。如果你超过此限制,你将收到 429 错误。在你的客户端中实现指数退避以在限制重置后重试。如果你正在处理大型数据集,请考虑批量请求。

我可以使用多个 API 密钥吗?

不,每个账户限制为一个 API 密钥。你可以随时重新生成密钥,但这会撤销前一个密钥。确保在重新生成后立即更新所有客户端中的新密钥。

上下文窗口的大小是多少?

上下文窗口为 100,000 token,包括提示词和补全。这允许进行长对话或大型文档处理。监控你的 token 使用情况以避免超过此限制。

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

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

获取 API 密钥