Azure OpenAI Proxy 项目介绍
项目背景
Azure OpenAI Proxy 是一个用于将 OpenAI 请求转换为 Azure OpenAI 请求的代理工具。它旨在作为各种开源 ChatGPT Web 项目的后端,同时也支持简单的 OpenAI API 代理功能,以解决 OpenAI API 在某些地区受限的问题。
项目特点
- 🌐 支持代理所有 Azure OpenAI APIs。
- 🧠 支持代理所有 Azure OpenAI 模型及定制的微调模型。
- 🗺️ 支持 Azure 部署名称与 OpenAI 模型之间的自定义映射。
- 🔄 支持正向代理和反向代理使用。
- 👍 支持对 Azure 不支持的 OpenAI APIs 进行模拟。
支持的API
目前,Azure OpenAI 服务的最新版本支持以下三个 API:
- /v1/chat/completions
- /v1/completions
- /v1/embeddings
其他不被 Azure 支持的 API 将以模拟格式返回,例如浏览器发起的 OPTIONS 请求。如果项目需要其他 OpenAI 支持的 API,欢迎提交 PR。
更新记录
- 2023-04-06:支持
/v1/models
接口,修复了一些 Web 项目依赖models
接口错误的问题。 - 2023-04-04:支持
options
接口,修复了一些 Web 项目的跨域检查错误问题。
使用方法
1. 作为反向代理使用(即 OpenAI API 网关)
可通过环境变量设置代理服务的监听地址、模式、Azure OpenAI 终端和 API 版本等参数,实现对请求的反向代理和映射。
使用命令行可以通过以下方式调用:
curl https://{your-custom-domain}/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {your azure api key}" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'
2. 作为正向代理使用(即 HTTP 代理)
当通过 HTTP 访问 Azure OpenAI API 时,可直接将其用作代理。由于工具不内置 HTTPS 支持,需要 Nginx 等 HTTPS 代理支持对 HTTPS 版 OpenAI API 的访问。
假设配置的代理域名为 https://{your-domain}.com
,可通过以下命令设置并使用:
export https_proxy=https://{your-domain}.com
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {your azure api key}" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'
或在其他开源 Web ChatGPT 项目中配置为 HTTP 代理:
export HTTPS_PROXY=https://{your-domain}.com
部署方式
通过 Docker 进行部署:
docker pull ishadows/azure-openai-proxy:latest
docker run -d -p 8080:8080 --name=azure-openai-proxy \
--env AZURE_OPENAI_ENDPOINT={your azure endpoint} \
--env AZURE_OPENAI_MODEL_MAPPER={your custom model mapper ,like: gpt-3.5-turbo=gpt-35-turbo,gpt-3.5-turbo-0301=gpt-35-turbo-0301} \
ishadows/azure-openai-proxy:latest
调用示例:
curl https://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {your azure api key}" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'
模型映射机制
AZURE_OPENAI_MODEL_MAPPER
中预定义了一系列的模型映射规则,默认配置基本上满足所有 Azure 模型的映射需求。这些规则包括 gpt-3.5-turbo
映射为 gpt-35-turbo
等,未匹配的情况下则将模型名直接作为回退。这种机制也适用于自定义微调模型。
开源协议
项目使用 MIT 许可协议进行发布。