Git Product home page Git Product logo

openai-proxy's Introduction

GO-OPENAI-PROXY

基于 Go 实现的 OpenAI API HTTP 代理

想要快速体验,将 OpenAI API 调用域名从默认的 api.openai.com 调整为 proxy.geekai.co 即可。你可以在这里预览演示效果:演示应用

切换到 Azure OpenAI

默认在 9000 端口代理 OpenAI API,要想切换到 Azure OpenAI API,可以在 scf_bootstrap 的启动命令中添加域名参数来指定你的 Azure OpenAI API Endpoint:

./main -domain=your-azure-openai-endpoint

如果 9000 端口被占用,可以通过 -post=9001 指定其他端口。

代理任意全球域名

这个工具最早是为 OpenAI 代理而生,但实际上现在已经可以支持通过一个入口代理任意域名,只需要在发起发起代理请求的时候通过 X-Target-Host 设置你想要代理的域名(不带 http(s):// 前缀)即可,优先级是请求头>命令行参数>默认值

req.Header.Set("x-target-host", "api.open.ai")

编译打包

你可以修改源代码调整代理逻辑,然后编译打包进行部署:

./build.sh

此命令需要本地安装go开发环境,如果不想本地安装 go 环境进行编译打包,可以直接下载根据最新源代码编译打包好的 main.zipReleases

部署测试

支持部署到腾讯/阿里云函数、AWS lambda 函数以及任意云服务器,以下以腾讯云函数为例进行演示。

然后在腾讯云云函数代码管理界面上传打包好 zip 包即可完成部署:

你可以通过腾讯云云函数提供的测试工具进行测试,也可以本地通过 curl/postman 进行测试,使用的时候只需要将 api.openai.com 替换成代理域名 proxy.geekai.co 即可:

你可以选择自己搭建,也可以直接使用我提供的代理域名 proxy.geekai.co,反正是免费的。关于代理背后的原理,可以看我在极客书房发布的这篇教程:国内无法调用 OpenAI 接口的解决办法

本地调试走VPN的话可以设置环境变量 ENV=local,然后直连 api.openai.com

// 本地测试通过代理请求 OpenAI 接口
if os.Getenv("ENV") == "local" {
    proxyURL, _ := url.Parse("http://127.0.0.1:10809")
    client.Transport = &http.Transport{
        Proxy:           http.ProxyURL(proxyURL),
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }
}

流式响应支持

这个源代码本身是支持 stream 流式响应代理的,但目前很多云函数并不支持分块流式传输。所以,如果你需要实现流式响应,可以把编译后的二进制文件 main 丢到任意海外云服务器运行,这样就变成支持流式响应的 OpenAI HTTP 代理了,如果你不想折腾,可以使用我这边提供的 proxy.geekai.co 作为代理进行测试:

image

如果你是通过 Nginx 这种反向代理对外提供服务,记得通过如下配置项将默认缓冲和缓存关掉才会生效:

proxy_buffering off;
proxy_cache off;

openai-proxy's People

Contributors

geekr-dev avatar

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.