Giter VIP home page Giter VIP logo

chatgptproxyapi's Introduction

chatgptproxyapi's People

Contributors

x-dr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chatgptproxyapi's Issues

请问能否改成更加通用的版本?即不光是代理openai,甚至wikipedia,discord等,即用户想要好访问的目标地址,可以作为参数上传? 这是github copilot给的版本,帮忙看看是否能达到效果?

async function handleRequest(request) {
      const url = new URL(request.url)
      let target = url.searchParams.get('target')
    
      if (!target) {
        return new Response('Target host is required', { status: 400 })
      }
    
      target = target.replace(/^https?:\/\//, '')
    
      const apiUrl = new URL(request.url)
      apiUrl.host = target
    
      const modifiedRequest = new Request(apiUrl, request)
      const response = await fetch(modifiedRequest)
    
      const modifiedResponse = new Response(response.body, response)
      modifiedResponse.headers.set('Access-Control-Allow-Origin', '*')
    
      return modifiedResponse
}

addEventListener('fetch', event => {
      event.respondWith(handleRequest(event.request))
})

如何更换api路径?

对nextjs不熟悉
想问下是否可以实现更换api的路径
例如把{url}/api修改为{url}/openai
因为有其他冲突
谢谢

访问慢

访问时有时候快有时候慢,怎么加快

大家都用着没问题吗?

有个问题是只能用自定义域名,然后这个域名必须被它托管,被它dns解析后国内访问不稳定,经常链接不上。
大家都没遇到这个问题吗?

我想问下步骤1,利用Cloudflare Worker中转api.openai.com

Worker ->test-> edit 左侧到底是贴:

export default {
async fetch(request, env) {
const url = new URL(request.url);
url.host = "api.openai.com";
// openai is already set all CORS heasders
return fetch(url, {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'follow'
});
}
}

还是:

const TELEGRAPH_URL = 'https://api.openai.com';

addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
const url = new URL(request.url);
const headers_Origin = request.headers.get("Access-Control-Allow-Origin") || "*"
url.host = TELEGRAPH_URL.replace(/^https?:///, '');
const modifiedRequest = new Request(url.toString(), {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'follow'
});
const response = await fetch(modifiedRequest);
const modifiedResponse = new Response(response.body, response);
// 添加允许跨域访问的响应头
modifiedResponse.headers.set('Access-Control-Allow-Origin', headers_Origin);
return modifiedResponse;
}

列出 1 2 3 我以为是步骤,没想到是三种方法

提示需要https访问

{
  "error": {
    "message": "The OpenAI API can only be accessed over HTTPS. You should access https://api.openai.com rather than the current URL.",
    "type": "invalid_request_error"
  }
}

请求是

curl --location 'https://chatapi.xxx.xxx/v1/chat/completions' \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
   "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Hello!"}]
 }'

Edge function reports 525 error.

Hello, thank you for sharing this implementation method. It has inspired me to deploy a deeplx API on edge functions using a similar approach. However, I keep getting error 525 and would like to seek your help.

// src/pages/api/translate.ts

import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";

interface RequestParams {
  text: string;
  source_lang: string;
  target_lang: string;
}

interface ResponseParams {
  id: number;
  code: number;
  data: string;
}

async function queryAPI(data: RequestParams): Promise<ResponseParams> {
  const res = await fetch("https://www2.deepl.com/jsonrpc", {
    headers: {
      "Content-Type": "application/json; charset=utf-8",
    },
    method: "POST",
    body: buildBodyString(data),
  });

  if (res.ok) {
    const result = (await res.json()) as {
      jsonrpc: string;
      id: number;
      result: {
        texts: {
          text: string;
        }[];
      };
    };
    return {
      id: result.id,
      code: 200,
      data: result?.result?.texts?.[0]?.text,
    };
  }
  return {
    id: 42,
    code: res.status,
    data:
      res.status === 429
        ? "Too many requests, please try again later."
        : "Unknown error.",
  };
}

function buildRequestParams(sourceLang: string, targetLang: string) {
  return {
    jsonrpc: "2.0",
    method: "LMT_handle_texts",
    id: Math.floor(Math.random() * 100000 + 100000) * 1000,
    params: {
      texts: [{ text: "", requestAlternatives: 3 }],
      timestamp: 0,
      splitting: "newlines",
      lang: {
        source_lang_user_selected: sourceLang,
        target_lang: targetLang,
      },
    },
  };
}

function getCountOfI(translateText: string) {
  return translateText.split("i").length - 1;
}

function getTimestamp(iCount: number) {
  let ts = new Date().getTime();
  if (iCount !== 0) {
    iCount = iCount + 1;
    return ts - (ts % iCount) + iCount;
  } else {
    return ts;
  }
}

function buildBodyString(data: RequestParams) {
  const post_data = buildRequestParams(
    data.source_lang || "AUTO",
    data.target_lang || "AUTO"
  );
  post_data.params.texts = [{ text: data.text, requestAlternatives: 3 }];
  post_data.params.timestamp = getTimestamp(getCountOfI(data.text));
  let post_str = JSON.stringify(post_data);
  if (
    [0, 3].includes((post_data["id"] + 5) % 29) ||
    (post_data["id"] + 3) % 13 === 0
  ) {
    post_str = post_str.replace('"method":"', '"method" : "');
  } else {
    post_str = post_str.replace('"method":"', '"method": "');
  }

  return post_str;
}

export const config = {
  runtime: "edge",
};

export default async function MyEdgeFunction(request: NextRequest) {
  const req = (await request.json()) as RequestParams;
  const res = await queryAPI(req);
  return NextResponse.json(res);
}

After debugging locally and confirming normal operation, I encountered a persistent 525 error after deploying to the edge function. Can you advise me on how to solve this problem?

curl --location 'https://deeplx-edge-api.vercel.app/api/translate' \
--header 'Content-Type: application/json' \
--data '{
    "text": "你好呀,请问你来自哪里",
    "source_lang": "auto",
    "target_lang": "en"
}'
{"id":42,"code":525,"data":"Unknown error."}
curl --location '127.0.0.1:3000/api/translate' \
--header 'Content-Type: application/json' \
--data '{
    "text": "请给我一个冰淇淋",
    "source_lang": "zh",
    "target_lang": "en"
}'
{"id":115601000,"code":200,"data":"Please give me an ice cream"}

查询余额api报错

选择的是那个CF wokers部署,查询余额的curl执行后提示这个

{
  "error": {
    "message": "Your request to GET /dashboard/billing/credit_grants must be made with a session key (that is, it can only be made from the browser). You made it with the following key type: secret.",
    "type": "server_error",
    "param": null,
    "code": null
  }
}

请问这个该如何解决?

技术小白完全不懂复杂的技术,盼望解答。谢谢

可否使用2个本项目代理调用openai api?

办公环境本地电脑完全没有互联网权限;
本人已经在vercel里部署了本项目代理,并绑定了域名,正常使用。

因内部电脑无法访问互联网,我想请教一下,能否在可访问互联网的服务器上,搭建一个代理,并将openai的相关域名指向vercel部署的代理上,以此解决电脑能正常使用api接口?
相当于使用了2个api代理。

如果不可以,是否有其他建议?谢谢!

Cloudflare部署错误

我在《利用Cloudflare pages部署》的第五步《点击Save and Deploy部署》出现了如下错误,我应该怎么解决它?
image
下面是我的配置:
image

使用CloudFlare Pages进行中转,通过自定义域的方式遇到报错

使用CloudFlare自带的域名 可以正常访问 使用自定义域的域名在没挂梯子时会报错,挂了梯子正常

报错信息如下
openai.error.APIConnectionError: Error communicating with OpenAI: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接
。', None, 10054, None))
麻烦作者看一下,盼复

请问,访问https://xxxxxx.workers.dev/v1/chat/completions,报这个错误是为什么呢?

{
"error": {
"message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.",
"type": "invalid_request_error",
"param": null,
"code": null
}
}

使用的是
export default {
async fetch(request, env) {
const url = new URL(request.url);
url.host = "api.openai.com";
// openai is already set all CORS heasders
return fetch(url, {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'follow'
});
}
}
这个代码部署在workers

域名地区问题

你好,请问最后绑定的自己的域名需要时国外注册的吗?
还是说国内注册的就可以,如阿里云腾讯云注册并备案的域名

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.