# GO-OPENAI-PROXY
基于 Go 实现的 OpenAI API HTTP 代理
> 想要快速体验,将 OpenAI API 调用域名从默认的 `api.openai.com` 调整为 `proxy.geekai.co` 即可。你可以在这里预览演示效果:[演示应用](https://geekai.co/dati?invite_code=S564yq)。
### 切换到 Azure OpenAI
默认在 9000 端口代理 OpenAI API,要想切换到 Azure OpenAI API,可以在 `scf_bootstrap` 的启动命令中添加域名参数来指定你的 Azure OpenAI API Endpoint:
```bash
./main -domain=your-azure-openai-endpoint
```
如果 9000 端口被占用,可以通过 `-post=9001` 指定其他端口。
### 代理任意全球域名
这个工具最早是为 OpenAI 代理而生,但实际上现在已经可以支持通过一个入口代理任意域名,只需要在发起发起代理请求的时候通过 `X-Target-Host` 设置你想要代理的域名(不带 `http(s)://` 前缀)即可,优先级是`请求头>命令行参数>默认值`:
```go
req.Header.Set("x-target-host", "api.open.ai")
```
### 编译打包
你可以修改源代码调整代理逻辑,然后编译打包进行部署:
```bash
./build.sh
```
此命令需要本地安装[go开发环境](https://go.dev/),如果不想本地安装 go 环境进行编译打包,可以直接下载根据最新源代码编译打包好的 `main.zip`:[Releases](https://github.com/geekr-dev/openai-proxy/releases)
### 部署测试
> 支持部署到腾讯/阿里云函数、AWS lambda 函数以及任意云服务器,以下以腾讯云函数为例进行演示。
然后在腾讯云云函数代码管理界面上传打包好 zip 包即可完成部署:
![](https://image.gstatics.cn/2023/03/06/image-20230306171340547.png)
你可以通过腾讯云云函数提供的测试工具进行测试,也可以本地通过 curl/postman 进行测试,使用的时候只需要将 `api.openai.com` 替换成代理域名 `proxy.geekai.co` 即可:
![](https://geekr.gstatics.cn/wp-content/uploads/2023/03/image-38.png)
你可以选择自己搭建,也可以直接使用我提供的代理域名 `proxy.geekai.co`,反正是免费的。关于代理背后的原理,可以看我在极客书房发布的这篇教程:[国内无法调用 OpenAI 接口的解决办法](https://geekr.dev/posts/chatgpt-website-by-laravel-10#toc-5)。
本地调试走VPN的话可以设置环境变量 `ENV=local`,然后直连 `api.openai.com`:
```go
// 本地测试通过代理请求 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` 作为代理进行测试:
<img width="965" alt="image" src="https://user-images.githubusercontent.com/114386672/225609817-ca5c106b-22d4-4ae9-b3df-ca2c46d56843.png">
如果你是通过 Nginx 这种反向代理对外提供服务,记得通过如下配置项将默认缓冲和缓存关掉才会生效:
```
proxy_buffering off;
proxy_cache off;
```
没有合适的资源?快使用搜索试试~ 我知道了~
基于 Go 实现的 OpenAI HTTP 代理(云函数、lambda 函数、自己部署均可).zip
共7个文件
sum:1个
scf_bootstrap:1个
gitignore:1个
需积分: 5 0 下载量 99 浏览量
2024-05-23
15:53:54
上传
评论
收藏 5KB ZIP 举报
温馨提示
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
资源推荐
资源详情
资源评论
收起资源包目录
基于 Go 实现的 OpenAI HTTP 代理(云函数、lambda 函数、自己部署均可).zip (7个子文件)
content
go.mod 39B
scf_bootstrap 170B
go.sum 0B
.gitignore 13B
README.md 3KB
build.sh 82B
main.go 4KB
共 7 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3913
- 资源: 7441
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功