中文 ▾
领取试用密钥

无审查聊天GPT的常见错误 APIs

大多数开发人员在切换到无审查的聊天 GPT API 时都会遇到障碍,因为他们假设标准的安全护栏或计费模型仍然适用。本指南详细介绍了您需要处理的具体技术和结构差异,从上下文窗口管理到令牌计费的意外情况。

最后更新

要点

  1. Context windows combine prompt and completion, so long histories drain limits faster than expected.
  2. 流式传输需要谨慎处理 SSE 事件,以避免 JSON 损坏或 token 丢失。
  3. JSON mode demands strict schema adherence; malformed responses cause silent parsing failures.
  4. 预付加密货币计费意味着错误是免费的,但令牌计数必须精确,以避免意外。

为什么你的 API 密钥可能被拒绝

当客户端发送格式错误的标头或请求体超出限制时,API 密钥会被拒绝。服务器在处理任何逻辑之前会验证认证标头。如果标头缺失或包含多余的空格,请求将立即失败。

另一个常见原因是发送的负载超过了 8 MB 的 body 大小限制。具有大量消息的大型 context window 很容易超过此阈值。在发送前,请检查您的 message array 长度和 token 计数。

  • 确保 Authorization 标头正确使用 'Bearer' 前缀。
  • Verify the request body size stays under 8 MB.
  • 检查 API 密钥是否有效且未过期。

理解上下文窗口限制

上下文窗口包含输入提示和生成的补全。我们的 API 支持 100,000 token 的窗口,但你必须同时考虑两端。如果你发送 80,000 token 的上下文,那么只剩下 20,000 用于响应。

如果您未指定 max_tokens,大多数模型会默认使用较小的输出限制。这可能会导致长回答被意外截断。仅当您希望设置上限时,才将 max_tokens 设置为所需的长度。请记住,该限制适用于整个请求,而不仅仅是提示词。

正确处理流式传输中断

通过服务器发送事件(SSE)进行流式传输需要强大的错误处理机制。如果连接断开,您可能会丢失最后一个 token 或使用量元数据。始终对传入的块进行缓冲,并在客户端重建完整响应。

Token 使用数据通常在流的最后一个 chunk 中发送。如果提前关闭连接,可能会错过确切的 token 计数。这会影响预付费系统的计费准确性。实现带有指数退避的重试机制,以处理临时网络问题。

使用专用的流式客户端,自动处理 SSE 解析。这可以降低解析错误的风险,并确保捕获所有数据。

JSON 模式解析错误

使用 response_format: {"type": "json_object"} 时,模型必须返回有效的 JSON。任何偏差都会导致应用程序出现解析错误。请确保您的提示词明确指示模型仅输出 JSON。

有时模型会在 JSON 周围包含 Markdown 代码块,这会破坏严格解析器。在解析之前移除 包装器。此外,在使用数据之前,请在客户端验证 JSON 结构。

使用模式验证库尽早捕获错误。这可以防止模型返回意外键或类型时发生崩溃。

令牌计数和计费意外

预付费仅按实际使用的 token 计费。错误和拒绝请求免费,这比订阅模式具有显著优势。然而,如果不考虑完整的上下文,token 计数可能会很棘手。

对话历史中的每条消息都会计入输入令牌限制。长对话会比你预期的更快地消耗你的预付费额度。请定期监控使用情况,以免在会话中途额度耗尽。

设置低余额提醒。这可以确保在请求失败前及时充值。请注意,余额不会过期,因此您可以随时方便时进行充值。

避免在 NSFW 提示词中出现软拒绝

当模型犹豫不决或提供部分答案而非直接回应时,就会发生软拒绝。这通常出现在争议性或成人话题中。即使在无审查的模型中,某些触发因素也可能导致犹豫。

调整 temperature 参数以减少随机性。较低的温度使模型更具确定性,且更不易含糊其辞。此外,确保提示词清晰直接。避免使用可能使模型困惑的模糊语言。

如果您遇到频繁的软拒绝,请尝试稍微调整提示词。细微的措辞变化通常可以绕过犹豫,获得直接的回答。

速率限制峰值与退避策略

API 每分钟允许 300 次请求,每个密钥允许 8 个并发请求。流量激增会迅速触及这些限制。实现指数退避以优雅地处理速率限制错误。

当收到 429 状态码时,请在重试前等待。从较短的延迟开始,并在每次重试时增加延迟。这可以防止在高峰时段使服务器过载。

监控您的请求速率并相应地调整并发级别。如果您正在发出许多并发请求,请考虑将它们分散到一段时间内。这可以确保稳定的吞吐量,而不会触及限制。

函数调用负载结构

函数调用需要特定的负载结构。在 tools 参数中定义你的函数,并指定 tool_choice。如果模型判断这是合适的响应,它将返回一个函数调用。

确保您的函数定义准确且完整。缺少参数或类型不正确可能导致模型生成无效调用。在执行之前,始终验证函数调用参数。

使用 tool_choice 参数来控制模型何时调用函数。您可以强制调用函数、让模型自行决定,或完全禁用函数调用。这使您能够对模型的行为进行细粒度控制。

调试 400 与 500 错误

400 错误表示客户端问题,例如 JSON 无效或缺少参数。500 错误表示服务器端问题,例如内部错误或超时。区分两者有助于更快地进行调试。

对于 400 错误,请检查响应中提供的错误消息。它通常直接指向问题所在。对于 500 错误,请稍作延迟后重试请求。如果错误仍然存在,请携带请求 ID 联系支持团队。

记录每次错误的请求和响应详情。这有助于识别模式和重复出现的问题。使用日志服务来跟踪随时间变化的错误,从而改进你的 API 集成。

常见问题

无审查的 AI 免费使用吗?

不,无审查的 AI 采用预付费令牌模式。您只需为使用的令牌付费,无需支付月度订阅费。错误和拒绝免费,因此您只需为实际输出付费。

无审查 LLM API 的流式传输是如何工作的?

流式传输使用服务器发送事件(SSE)实时发送令牌。您必须在客户端处理流以重建完整响应。令牌使用数据包含在最后一个数据块中。

如果我超出上下文窗口会怎样?

如果您超过 100,000 个 token 的限制,API 将返回错误。该限制包括输入提示和生成的补全内容。请确保正确设置 <code>max_tokens</code> 以避免截断。

Can I use uncensored AI for NSFW content?

是的,该模型无审查,不会拒绝合法的成人内容。但会对涉及未成年人的性内容执行硬性限制。此限制适用于所有请求。

获取您的 API 密钥

注册,复制密钥,更新 base_url。完成。

领取试用密钥查看文档