JimmyLv / BibiGPT-v1

BibiGPT v1 · one-Click AI Summary for Audio/Video & Chat with Learning Content: Bilibili | YouTube | Tweet丨TikTok丨Dropbox丨Google Drive丨Local files | Websites丨Podcasts | Meetings | Lectures, etc. 音视频内容 AI 一键总结 & 对话:哔哩哔哩丨YouTube丨推特丨小红书丨抖音丨快手丨百度网盘丨阿里云盘丨网页丨播客丨会议丨本地文件等 (原 BiliGPT 省流神器 & AI课代表)
https://bibigpt.co
GNU General Public License v3.0
5.24k stars 702 forks source link

🐞 错误报告 本地部署,点击一键总结后报错 #165

Closed aichemistry closed 1 year ago

aichemistry commented 1 year ago

错误报告 🐞

image

错误描述 🤔

您好作者,我对于您的项目很感兴趣,在设置完所有的事项后我成功运行了,只是在粘贴了b站的视频链接后,点击一键总结没有响应。我怀疑是否是openai方面的问题?因为我看到upstash和supabase有流量进入。但我不知道问题是如何产生的,以及该如何解决,希望能够获得一些帮助。

我已经充值了openai,并且创建了api key。

附加信息 📝

请提供以下信息以帮助我们更快地解决问题:

image image ![Uploading image.png…]()

感谢您的反馈!🙏

JimmyLv commented 1 year ago

命令行要增加proxy才行,推荐使用 ClashPro 的增强模式

aichemistry commented 1 year ago

命令行要增加proxy才行,推荐使用 ClashPro 的增强模式

请原谅我没有前端的基础,我定位到response500的返回好像在这段fetchOpenAIResult代码里,它被sumup.ts调用: const res = await fetch('https://api.openai.com/v1/chat/completions', { headers: { 'Content-Type': 'application/json', Authorization:Bearer ${apiKey ?? ''}`, }, method: 'POST', body: JSON.stringify(payload), })

if (res.status !== 200) { const errorJson = await res.json() throw new Error(OpenAI API Error [${res.statusText}]: ${errorJson.error?.message}) }` 您能不能给出更清晰的指示?对于这段话我不太理解,啥是在命令行中增加proxy。我现在通过clash挂梯子可以科学上网也可以正常访问openai的服务。谢谢

命令行要增加proxy才行,推荐使用 ClashPro 的增强模式

aichemistry commented 1 year ago

@JimmyLv 问题就在const res = await fetch('https://api.openai.com/v1/chat/completions', { headers: { 'Content-Type': 'application/json', Authorization: Bearer ${apiKey ?? ''}, }, method: 'POST', body: JSON.stringify(payload), })这里fetch failed了,而我询问chat-gpt,得到的回复是: 如果您需要在 TypeScript 代码中使用代理配置来修改上述 fetch 请求的设置,您可以使用以下方法之一:

  1. 使用环境变量

    在您的 TypeScript 项目中,您可以读取环境变量并将代理信息用于 fetch 请求。首先,在操作系统或您的开发环境中设置代理环境变量(例如 HTTP_PROXY 和 HTTPS_PROXY),然后在代码中使用这些环境变量。以下是示例代码:

    // 从环境变量中获取代理信息
    const proxyHost = process.env.HTTP_PROXY || '';
    const proxyPort = process.env.HTTPS_PROXY || '';
    
    // 构建代理 URL
    const proxyUrl = `http://${proxyHost}:${proxyPort}`;
    
    // 设置 fetch 请求的代理
    const res = await fetch('https://api.openai.com/v1/chat/completions', {
     headers: {
       'Content-Type': 'application/json',
       Authorization: `Bearer ${apiKey ?? ''}`,
     },
     method: 'POST',
     body: JSON.stringify(payload),
     agent: new ProxyAgent(proxyUrl), // 使用代理设置
    });

    在此示例中,我们从环境变量中获取代理主机和端口,然后构建代理 URL 并将其用于 fetch 请求的代理设置。请注意,您可能需要使用适用于您的 TypeScript 项目的代理库(例如 proxy-agent)来实现代理功能。

  2. 配置网络请求库

    如果您使用的是特定的网络请求库,如 Axios,您可以配置该库以使用代理。以下是一个 Axios 的示例:

    const axios = require('axios');
    const ProxyAgent = require('proxy-agent'); // 使用适当的代理库
    
    const proxyHost = process.env.HTTP_PROXY || '';
    const proxyPort = process.env.HTTPS_PROXY || '';
    const proxyUrl = `http://${proxyHost}:${proxyPort}`;
    
    // 创建 Axios 实例并设置代理
    const axiosInstance = axios.create({
     baseURL: 'https://api.openai.com/v1',
     httpAgent: new ProxyAgent(proxyUrl), // 使用代理设置
    });
    
    try {
     const response = await axiosInstance.post('/chat/completions', payload, {
       headers: {
         'Content-Type': 'application/json',
         Authorization: `Bearer ${apiKey ?? ''}`,
       },
     });
    
     // 处理响应
    } catch (error) {
     // 处理错误
    }

    这个示例中,我们创建了一个 Axios 实例,并通过 httpAgent 选项设置了代理。同样,您需要使用适当的代理库,如 proxy-agent

确保您已正确配置代理并将其用于您的请求,以便请求可以通过代理服务器发送到目标服务器。 这是否和您的意思相符呢?

JimmyLv commented 1 year ago

通过clash挂梯子只能用于浏览器,所以我说命令行需要clash pro 最简单的办法是你在命令行ping一个openai.com,确认是否连接成功哈