OpenAI GPT-3 API 错误 429:“请求失败,状态代码 429”

2023-12-06

我正在尝试将 OpenAI API 连接到我的 Vue.js 项目。一切都很好,但每次我尝试 POST 请求时,我都会收到一个429状态码(请求过多)但我什至没有机会做一个。有什么帮助吗?

回复:

{
    "message": "Request failed with status code 429",
    "name": "Error",
    "stack": "Error: Request failed with status code 429\n    at createError (C:\\Users\\sim\\Documents\\SC\\server\\node_modules\\axios\\lib\\core\\createError.js:16:15)\n    at settle (C:\\Users\\sim\\Documents\\SC\\server\\node_modules\\axios\\lib\\core\\settle.js:17:12)\n    at IncomingMessage.handleStreamEnd (C:\\Users\\sim\\Documents\\SC\\server\\node_modules\\axios\\lib\\adapters\\http.js:322:11)\n    at IncomingMessage.emit (events.js:412:35)\n    at endReadableNT (internal/streams/readable.js:1333:12)\n    at processTicksAndRejections (internal/process/task_queues.js:82:21)",
    "config": {
        "transitional": {
            "silentJSONParsing": true,
            "forcedJSONParsing": true,
            "clarifyTimeoutError": false
        },
        "transformRequest": [
            null
        ],
        "transformResponse": [
            null
        ],
        "timeout": 0,
        "xsrfCookieName": "XSRF-TOKEN",
        "xsrfHeaderName": "X-XSRF-TOKEN",
        "maxContentLength": -1,
        "maxBodyLength": -1,
        "headers": {
            "Accept": "application/json, text/plain, */*",
            "Content-Type": "application/json",
            "User-Agent": "OpenAI/NodeJS/3.1.0",
            "Authorization": "Bearer secret",
            "Content-Length": 137
        },
        "method": "post",
        "data": "{\"model\":\"text-davinci-003\",\"prompt\":\"option-2\",\"temperature\":0,\"max_tokens\":3000,\"top_p\":1,\"frequency_penalty\":0.5,\"presence_penalty\":0}",
        "url": "https://api.openai.com/v1/completions"
    },
    "status": 429
}

我在 Vue.js 中的方法:

async handleSelect() {
      try {
        const res = await fetch("http://localhost:8000/", {
          method: "POST",
          headers: {
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            question: this.selectedOption,
          })
        })

        const data = await res.json();
        console.log(data);
      } catch {
        console.log(data);
      }
    }

在服务器端

app.post("/", async (req, res) => {
  try {
    const question = req.body.question;

    const response = await openai.createCompletion({
      model: "text-davinci-003",
      prompt: `${question}`,
      temperature: 0, // Higher values means the model will take more risks.
      max_tokens: 3000, // The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 4096).
      top_p: 1, // alternative to sampling with temperature, called nucleus sampling
      frequency_penalty: 0.5, // Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
      presence_penalty: 0, // Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.
    });
    // console.log(response);
    res.status(200).send({
      bot: response.data.choices[0].text,
    });
  } catch (error) {
    // console.error(error);
    res.status(500).send(error || "Something went wrong");
  }
});

正如官方所说OpenAI 文章:

这(即429) 错误消息表明您已完成分配的任务速度 限制对于 API。这意味着您提交了太多令牌 或短时间内请求且已超过数量 允许的请求。发生这种情况的原因有多种,例如:

  • 您正在使用发出频繁或并发请求的循环或脚本。

  • 您正在与其他用户或应用程序共享您的 API 密钥。

  • 您使用的是费率限制较低的免费计划。

工作示例

Frontend

HelloWorld.vue

<template>
  <div class="hello"></div>

  <select v-model="selected" @change="handleSelect()">
    <option disabled value="">Please select one</option>
    <option>Say this is a test</option>
    <option>Say nothing</option>
  </select>

  <div class="container-selected">Selected: {{ selected }}</div>

  <div class="container-data" v-if="showData">{{ showData.bot }}</div>
</template>

<script>
export default {
  data: function () {
    return {
      selected: "",
      showData: "",
    };
  },
  methods: {
    async handleSelect(data) {
      try {
        const res = await fetch("http://localhost:3000/", {
          method: "POST",
          headers: {
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            question: this.selected,
          }),
        });

        const data = await res.json();
        this.showData = data;
        console.log(data);
      } catch {
        console.log(data);
      }
    },
  },
};
</script>

<style lang="scss">
.container-selected {
  margin-top: 12px;
  font-size: 20px;
}

.container-data {
  margin-top: 24px;
  font-size: 20px;
}
</style>

包.json

{
  "name": "openai",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "register-service-worker": "^1.7.2",
    "vue": "^3.2.13",
    "vue-class-component": "^8.0.0-0",
    "vue-router": "^4.0.3",
    "vuex": "^4.0.0"
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.4.0",
    "@typescript-eslint/parser": "^5.4.0",
    "@vue/cli-plugin-eslint": "~5.0.0",
    "@vue/cli-plugin-pwa": "~5.0.0",
    "@vue/cli-plugin-router": "~5.0.0",
    "@vue/cli-plugin-typescript": "~5.0.0",
    "@vue/cli-plugin-vuex": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "@vue/eslint-config-typescript": "^9.1.0",
    "eslint": "^7.32.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^4.0.0",
    "eslint-plugin-vue": "^8.0.3",
    "prettier": "^2.4.1",
    "sass": "^1.32.7",
    "sass-loader": "^12.0.0",
    "typescript": "~4.5.5"
  }
}

Backend

index.js

const express = require('express');
const app = express();
app.use(express.json());

const cors = require('cors');
app.use(cors());

app.post('/', async(req, res) => {
  try {
    const { Configuration, OpenAIApi } = require('openai');
    const configuration = new Configuration({
        apiKey: 'sk-xxxxxxxxxxxxxxxxxxxx'
    });
    const openai = new OpenAIApi(configuration);

    const question = req.body.question;

    await openai.createCompletion({
      model: 'text-davinci-003',
      prompt: question,
      temperature: 0,
      max_tokens: 7
    })
    .then((response) => {
      console.log(response.data.choices[0].text);
      res.status(200).send({ bot: response.data.choices[0].text });
    })
    .catch((err) => {
      res.status(400).send({ message: err.message });
    })
  } catch (error) {
    res.status(500).send(error || 'Something went wrong');
  }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}.`);
});

包.json

{
  "name": "openai-server",
  "version": "1.0.0",
  "description": "Express server",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cors": "^2.8.5",
    "express": "^4.18.2",
    "nodemon": "^2.0.20",
    "openai": "^3.1.0"
  }
}

Output

GIF

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenAI GPT-3 API 错误 429:“请求失败,状态代码 429” 的相关文章

随机推荐

  • 如何在postgresql中查找任意大小的数组的所有组合(子集)[重复]

    这个问题在这里已经有答案了 给定一个数组 如何在 postgresql 中查找特定大小的元素的所有组合 子集 例如 给定一个数组 1 2 3 4 大小为 3 的所有组合都是 1 2 3 1 2 4 1 3 4 2 3 4 组合中的顺序并不重
  • NSURLSession:如何增加 URL 请求的超时时间?

    我正在使用iOS 7的新功能NSURLSessionDataTask检索数据如下 NSURLSession session NSURLSession sharedSession NSURLSessionDataTask dataTask s
  • 游戏中的卡牌等级

    我是一名 Java 初学者 因此 任何帮助将不胜感激 我设计了一个卡片类和甲板类 我将在我创建的游戏中使用它们 到目前为止 我的游戏似乎运行得很好 但问题出在我的 Cards 类上 我想利用 getRank 方法为玩家拥有的牌 无论花色如何
  • 如何在数据表列标题的过滤框中添加占位符文本

    我有一个素数面孔数据表 其中只有几列 并且所有列都有 filteryBy 属性 如何添加占位符或水印来为用户提供提示 任何建议 将不胜感激
  • 函数数组<可选> -> 可选<数组>

    这是我想做的 extension Array
  • Woocommerce 禁用自动订单状态更改挂起->处理

    我想禁用这个选项 每当有人在我的网站上制作和订购并且付款成功时 订单状态会自动从待处理 但是 我不想要此功能已启用 相反 我想在处理订单时手动执行此操作 我在 woocommerce 中发现了此功能 这使得此功能成为可能 我不想直接在那里更
  • Gem 安装 ruby​​-audio 失败

    我已经克隆了一个现有的存储库并且现在正在运行bundle install 由于某种原因 它在 ruby audio gem 上失败了 Installing ruby audio 1 6 1 with native extensions Ge
  • 重新格式化列中的日期

    我在 SQLite DB 中有一些以下形式的数据 id column1 date 111 280 1 1 2014 114 275 1 2 2014 日期字段的类型为 TEXT 我已被告知 https www sqlite org lang
  • docker 如何使用带引号的新命令提交 docker

    在制作 docker 的过程中 我必须将其命令从 bin sh 更改为nginx g daemon off 正是如此 I wrote docker commit change EXPOSE 80 change CMD nginx g dae
  • MongoDB:按日期查询

    在 MongoDB 数据库中 我有一个项目集合 每个项目都存储其创建日期 我需要按日期查询这个集合 我试过 db items findOne date new Date 1285947037 1000 但它没有返回任何东西 我使用 PHP
  • FreeType 如何渲染 ü ä ö 等特殊字符?

    我一直坚持使用 FreeType 渲染文本 尤其是非ascii字符让我头疼 经过一番尝试和错误后 我设法呈现一些文本 但我的变音符号没有显示 std string text Hauptmen for std string iterator
  • MVC C# 下拉列表在模型上显示 System.Web.SelectListItem 并且不能盲视控制器

    请帮我 我的下拉列表显示System Web SelectListItem在调试模式下 但不显示我在列表中定义的实际文本 任何人都可以帮忙吗 如何使控制器具有我在列表中定义的文本 而且我的下拉列表在选择时并不盲目 请帮我 这是它的样子 请看
  • 将 JComponent 重置为默认值

    例如 如果组件是一个复选框 则必须设置为 false 或者它是一个文本字段 则必须清除文本 我正在尝试编写一种重置所有组件的方法JPanel 它必须像 HTML 表单中的重置功能一样工作 如何重置JComponent到默认值 作为一名优秀的
  • 当目录名称包含方括号“[ ]”等特殊字符时,Glob 不起作用

    当路径目录带有方括号时 我在使用 glob 函数时遇到问题 Example 1 working path temp DIRECTORY SEPARATOR dir name files glob path DIRECTORY SEPARAT
  • 从 SciPy 稀疏矩阵填充 Pandas SparseDataFrame

    我注意到熊猫现在有支持稀疏矩阵和数组 目前 我创建DataFrame 像这样 return DataFrame matrix toarray columns features index observations 有没有办法创建一个Spar
  • 如何设置图标以获取基础FloatingActionsMenu

    我正在使用 com getbase floatingactionbutton FloatingActionsMenu 作为可扩展的 FAB 但无法在 fab 菜单上设置图标 我尝试过设置背景可绘制 但不起作用 谢谢
  • FFmpeg:编码 PCM 16 音频数据分配错误

    我目前正在尝试使用 avi 容器内的一些视频对一些原始音频数据进行编码 使用的视频编解码器是 mpeg4 我想使用 PCM 16LE 作为音频编解码器 但我面临着一个问题AVCodec gt frame size音频样本的参数 完成所有正确
  • 绘制包含显示圆形图标的标签

    所以我试图绘制一个标签 其中包含一个显示圆圈的图标 该圆圈最初将被填充为红色 然后根据我按下的 3 个按钮中的哪一个 它会使用重绘更改为绿色 蓝色或红色 这是我到目前为止所拥有的 public class ColorChanger impl
  • Android 联系人在单个数据库查询中显示姓名和电话号码?

    我正在尝试从本机数据库获取联系人列表及其显示名称和电话号码 任何或全部 有许多方法可以通过多次查询手机数据库来获取此信息 但这会带来相当大的开销 这是我一直在处理的查询 但结果是 Uri uri ContactsContract Conta
  • OpenAI GPT-3 API 错误 429:“请求失败,状态代码 429”

    我正在尝试将 OpenAI API 连接到我的 Vue js 项目 一切都很好 但每次我尝试 POST 请求时 我都会收到一个429状态码 请求过多 但我什至没有机会做一个 有什么帮助吗 回复 message Request failed