Table of Contents

    如何修复 OpenAI 速率限制和超时错误。

    LLM 开始被广泛应用于各种不同的使用案例中。其中包括翻译、情感分析、生成代码、博客、电子邮件等。 然而,由于 OpenAI API 相对较新,将其直接集成到生产中会遇到一些问题。他们的 API 不提供服务水平协议(SLA),也不保证正常运行时间,甚至不保证服务性能。每秒令牌数和每秒请求数仍有速率限制。

    LLM 开始被广泛应用于各种用例。然而,由于 OpenAI API 相对较新,将其直接集成到生产中存在一些问题。他们的 API 不提供服务水平协议(SLA),也不保证正常运行时间,甚至不保证服务性能。每秒令牌数和每秒请求数仍有速率限制。

    OpenAI 建议使用各种技术来缓解这一问题。让我们简要探讨其中几种。

    指数延迟

    指数回退是一种用于处理速率限制的策略,在出现速率限制错误时,逐渐延长后续重试之间的时间。下面是 Node.Js 中的一个示例:

    const axios = require('axios'); // 确保使用 npm 或 yarn 安装 axios。 const BASE_URL = 'https://api.openai.com/v1/chat/completions'; async function makeRequestWithBackoff(endpoint, params, retries = 3, backoffDelay = 500) { try { const response = await axios.post(endpoint, params, { headers:{ 'Content-Type': 'application/json', 'Authorization':Bearer YOUR_OPENAI_API_KEY`, }, }); return response.data; } catch (error) { if (error.response && error.response.status === 429 && retries > 0) { // 429 是 HTTP 状态代码,表示请求过多 // 等待随机延迟,每次重试都以指数形式增加 const delay = Math.random() * backoffDelay; console.log(`Rate limit hit, retrying in ${delay}ms`); await new Promise((resolve) => setTimeout(resolve, delay)); return makeRequestWithBackoff(endpoint, params, retries - 1, backoffDelay * 2); } else { // If it's not a rate limit error or we ran out of retries, throw the error throw error; } } const params = { messages:[ {role : "user", content: "Hi, Who are you?" } } max_tokens: 50, model:"gpt-3.5-turbo" }; makeRequestWithBackoff(BASE_URL, params) .then(data => console.log(data)) .catch(error => console.error(error));
    

    您甚至可以修改逻辑,将指数回退改为线性或随机回退。

    批处理

    OpenAI 还允许在 /completions 端点上批量请求。如果您每秒处理的请求数较多,但每秒处理的令牌数较少,则可以采用这种方式。但请记住,这个 API 正在被淘汰。使用与上面相同的示例

    const BASE_URL = "https://api.openai.com/v1/completions"; const params = { model:"curie", prompts:[ "很久很久以前有一只狗""很久很久以前有一只猫""很久很久以前有一个人" ] }; makeRequestWithBackoff(BASE_URL, params) .then(data => console.log(data)) .catch(error => console.error(error));
    

    除上述技术外,您还可以使用其他技术。

    缓存

    很多时候,您的用户都在查询相同的内容,在您的请求之上建立某种类型的简单语义缓存层可以帮助您节约成本和请求时间。但在这种情况下,它会减少对 OpenAI 的调用。

    在 OpenAI 和 Azure 之间切换。

    您可以申请 Azure 的 OpenAI 服务,并在两个提供商之间设置负载平衡。这样,即使其中一个出现故障或运行缓慢,也可以切换到另一个提供商。

    始终流式响应

    OpenAI API 提供流功能,允许我们在生成部分模型响应时实时接收这些响应。与传统的非流调用相比,这种方法具有很大的优势。在传统的非流调用中,在整个响应持续时间结束之前,您可能无法察觉到任何潜在的超时,而超时时间的长短则取决于您的初始参数,例如请求的复杂性和指定的 max_tokens 数量。

    无论请求大小或设置的 max_tokens,流处理都能确保模型通常在最初的 5-6 秒内开始交付令牌。如果延迟超过了这个短暂的时间窗口,则表明请求可能超时或未按预期处理。我们可以终止此类请求并再次重试。

    设置回退

    对于可以从其他模型获取响应的特定用例,可以设置回退到其他模型。最好的选择是 Llama-70b、Gemini 或其他较小的型号,如 MIXTRAL 8X7B、Claude Instant 等。 以上是一些常用技术,可用于减少生产级应用中的错误。

    就是这些了,感谢您的阅读,请在 Merlin @ Twitter 上关注我们 我们Merlin API提供所有这些功能以及更多,有 20 多种型号可供选择。我们专注于 API 的可靠性,并负责所有切换、回退、缓存和速率限制处理。我们提供统一的应用程序接口(API),并在所有模型中使用统一的响应格式。

    如何在 Node.js 中使用 Merlin API 的一个小示例:

    import { Merlin } from "merlin-node"; // npm install merlin-node // WARNING: test api key. // Replace with your API key from Merlin Dashboard // https://api.getmerlin.in const apiKey = "merlin-test-3b7d-4bad-9bdd-2b0d7b3dcb6d"; const Merlin = new Merlin({ merlinConfig: { apiKey } }); const initChat = { role: "system", content:"You are a helpful assistant." 
    } async function createCompletion() { try { const completion = await Merlin.chat.completions.create({ messages:[initChat], model:"gpt-3.5-turbo", // 20+ models as needed }); } catch (error) { console.error("Error creating completion:", error); } } createCompletion();
    

    Experience the full potential of ChatGPT with Merlin

    Author
    卡尔普娜-塔库尔

    卡尔普娜-塔库尔

    她是 Merlin AI 的营销能手、自动化大师和增长能手,每项举措都能带来 10 倍的增长!

    Published on : 19th December 2023, Tuesday

    Last Updated : 4th September 2024, Wednesday

    Read more blogs

    Cover Image for ChatGPT 4 与 ChatGPT 4o | GPT 4o 优于 GPT 4 吗?
    ChatGPT 4 与 ChatGPT 4o | GPT 4o 优于 GPT 4 吗?
    2024-06-03 | 2 min. read
    有没有想过 ChatGPT-4o 是否真的是 ChatGPT-4 的升级版?你并不孤单。在本博客中,我们将深入探讨这两种人工智能模型的不同之处。
    Cover Image for 内幕技巧:如何在 GPT-4、GPT-4 Turbo 和 GPT-4o 中称霸
    内幕技巧:如何在 GPT-4、GPT-4 Turbo 和 GPT-4o 中称霸
    2024-05-30 | 2 min. read
    想象一下,尖端人工智能模型的强大功能就在您的指尖。本指南将带您了解如何使用 GPT-4、GPT-4 Turbo 和 GPT-4o。无论您是技术爱好者,还是希望在项目中利用人工智能的专业人士,我们都将为您提供实用的见解和循序渐进的指导。
    Cover Image for 免费获取 ChatGPT-4o,无限量提示!- 如何使用 GPT 4o
    免费获取 ChatGPT-4o,无限量提示!- 如何使用 GPT 4o
    2024-05-28 | 2 min. read
    本综合指南将指导您使用最佳方法,最大限度地利用 OpenAI 强大的语言模型,而无需花费一分钱。 通过我们循序渐进的指导和宝贵的提示,增强您的内容创建、自动化任务并探索人工智能的无限潜力。
    Cover Image for 向 ChatGPT 提出正确问题的艺术 :2024年揭开聊天机器人的神秘面纱
    向 ChatGPT 提出正确问题的艺术 :2024年揭开聊天机器人的神秘面纱
    2024-05-27 | 2 min. read
    掌握向 ChatGPT 提问的艺术可以大大提高您的互动和结果。了解如何利用聊天机器人的细微功能,使您能够访问隐藏的特性和功能,从而在 2024 年使您的互动更富成效和洞察力。从实用技巧到专家建议,本指南是您提升聊天机器人体验的关键。
    Cover Image for 你需要知道的最佳写作研究 ChatGPT 提示
    你需要知道的最佳写作研究 ChatGPT 提示
    2024-04-29 | 1 min. read
    通过个性化提示释放 ChatGPT 的强大功能!简化您的互动,节省时间,获得满足您所有需求的定制回复,还有更多。
    Cover Image for 使用 Microsoft Copilot 免费获取 GPT-4 Turbo
    使用 Microsoft Copilot 免费获取 GPT-4 Turbo
    2024-04-26 | 2 min. read
    Microsoft Copilot:现在提供免费的 GPT-4 Turbo 模型!本博客将深入探讨 GPT-4 Turbo 的集成如何增强 Copilot 的功能,使其在处理跨 Microsoft 365 应用程序的任务时更加强大。
    Cover Image for GPT-4 与 GPT-4 Turbo:使用哪一种?
    GPT-4 与 GPT-4 Turbo:使用哪一种?
    2024-04-16 | 2 min. read
    GPT-4 和 GPT-4 Turbo AI 型号都以其先进的功能塑造着人工智能的格局。但它们在使用情况、速度、效率和成本方面仍存在差异。在本博客中,您将详细了解这些差异,从而做出最适合自己的选择。
    Cover Image for 面向高校教师的最佳人工智能工具
    面向高校教师的最佳人工智能工具
    2024-04-16 | 1 min. read
    发现适合教育工作者的顶级人工智能工具!个性化学习,提高工作效率,为学生轻松创建引人入胜的课程,让学习变得生动有趣。