关于APIConnectionError: Connection error在JavaScript的最新解决方案

TL;DR: 使用 axios 和 dotenv 解决 APIConnectionError 问题。

问题描述:

在本地服务器运行 Next.js 项目时,调用 OpenAI API 或 Hugging face API 会报错 APIConnectionError: Connection error。调用 Hugging Face 的其他模型 API 时,同样报错。然而,部署在 Vercel 上可以正常运行。

项目环境:

  • 编程语言:JavaScript 和 TypeScript

  • 框架:Next.js 和 React

  • 地理位置:中国大陆

错误原因分析

错误原因分析:

通过谷歌查询,初步判断是 Node.js 的代理问题。附 OpenAI 官方文档:APIConnectionError

尝试过的解决方案(无效):

  1. 在 powershell 上配置代理

   $env:HTTP_PROXY="http://127.0.0.1:33210"
   $env:HTTPS_PROXY="http://127.0.0.1:33210"
   $env:ALL_PROXY="socks5://127.0.0.1:33211"

但发现这样配置了之后,仍然出现APIConnectionError: Connection error报错。

  1. 很多解决方案通过修改 openai 的 Python 库来解决,但是无法用在JavaScript 和 Next.js上。

解决方案概述:

使用axios 和dotenv即可解决问题,以下是具体步骤:

1.在 Next.js 项目中安装 axios 和 dotenv:

npm install axios dotenv

2.在需要调用API的场景,使用axios进行API请求,并同时配置代理。

代码示例:

import * as fs from 'fs';
import * as path from 'path';
import axios from 'axios';
import * as dotenv from 'dotenv';
​
dotenv.config();
​
async function query(filePath: string) {
  try {
    const data = fs.readFileSync(filePath); // 读取文件内容
    const response = await axios.post(
      'https://api-inference.huggingface.co/models/openai/whisper-tiny',
      data, // 文件内容作为请求体
      {
        headers: {
          "Accept":"application/json",
          Authorization: `Bearer hf_xxxxxxxxxxxxxxxxxxxxxxxxxx`,
          'Content-Type': 'audio/wav', // 确保内容类型是音频文件
        },
        proxy: {
          protocol: 'http',
          host: '127.0.0.1',
          port: 33210,// 这里应该根据使用的代理,修改成相应的port
        },
        timeout: 10000, // 设置超时时间为10秒
      }
    );
    return response.data;
  } catch (error) {
    if (axios.isAxiosError(error)) {
      console.error('Axios error:', error.response?.data);
    } else {
      console.error('Unexpected error:', error);
    }
    throw error;
  }
}
​
// 调用函数并传入文件路径
query(path.resolve(__dirname, "C:\\Users\\caoca\\Music\\sample1.wav"))
  .then((response) => {
    console.log(JSON.stringify(response));
  })
  .catch((error) => {
    console.error(error);
  });
​

结论:

通过使用 axios 和 dotenv,可以有效解决 Next.js 项目中调用 OpenAI API 或 Hugging face API 报错的问题,提升开发体验和项目的稳定性。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值