
Convert different model APIs into the OpenAI API format out of the box.
10MB+的小工具,能夠將各種不同的模型API 轉換為開箱即用的OpenAI API 格式。
當前支持模型:
訪問GitHub Release 頁面,下載適合你的操作系統的執行文件。

或者使用Docker Pull,下載指定版本的鏡像文件:
docker pull soulteary/amazing-openai-api:v0.7.0AOA不需要編寫任何配置文件,通過指定環境變量就能夠完成應用行為的調整,包括“選擇工作模型”、“設置模型運行需要的參數”、“設置模型兼容別名”。
默認執行./aoa ,程序會將工作模型設置為azure ,此時我們設置環境變量AZURE_ENDPOINT=https://你的部署名称.openai.azure.com/然後就可以正常使用服務啦。
AZURE_ENDPOINT=https://你的部署名称.openai.azure.com/ ./aoa如果你更喜歡Docker,可以用下面的命令:
docker run --rm -it -e AZURE_ENDPOINT=https://你的部署名称.openai.azure.com/ -p 8080:8080 soulteary/amazing-openai-api:v0.7.0當服務啟動之後,我們就可以通過訪問http://localhost:8080/v1來訪問和OpenAI 一樣的API 服務啦。
你可以使用curl來進行一個快速測試:
curl -v http://127.0.0.1:8080/v1/chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer 123 "
-d ' {
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."
},
{
"role": "user",
"content": "Compose a poem that explains the concept of recursion in programming."
}
]
} '也可以使用OpenAI 官方SDK 進行調用,或者任意兼容OpenAI 的開源軟件進行使用(更多例子,參考example):
from openai import OpenAI
client = OpenAI (
api_key = "your-key-or-input-something-as-you-like" ,
base_url = "http://127.0.0.1:8080/v1"
)
chat_completion = client . chat . completions . create (
messages = [
{
"role" : "user" ,
"content" : "Say this is a test" ,
}
],
model = "gpt-3.5-turbo" ,
)
print ( chat_completion )你如果你希望不要將API Key 暴露給應用,或者不放心各種複雜的開源軟件是否有API Key 洩漏風險,我們可以多配置一個AZURE_API_KEY=你的API Key環境變量,然後各種開源軟件在請求的時候就無需再填寫API key 了(或者隨便填寫也行)。
當然,因為Azure 的一些限制,以及一些開源軟件中的模型調用名稱不好調整,我們可以通過下面的方式,來將原始請求中的模型,映射為我們真實的模型名稱。比如,將GPT 3.5/4 都替換為yi-34b-chat :
gpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chat如果你希望使用yi-34b-chat ,或者gemini-pro ,我們需要設置AOA_TYPE=yi或者AOA_TYPE=gemini ,除此之外,沒有任何差別。
項目中包含當前支持的三種模型接口的docker compose示例文件,我們將example目錄中的不同的文件,按需選擇使用,將必填的信息填寫完畢後,將文件修改為docker-compose.yml 。
然後使用docker compose up啟動服務,就能夠快速使用啦。
調整工作模型AOA_TYPE ,可選參數,默認為azure :
# 选择一个服务, "azure", "yi", "gemini"
AOA_TYPE: " azure "程序服務地址,可選參數,默認為8080和0.0.0.0 :
# 服务端口,默认 `8080`
AOA_PORT: 8080
# 服务地址,默认 `0.0.0.0`
AOA_HOST: " 0.0.0.0 " 如果我們想將Azure 上部署的OpenAI 服務轉換為標準的OpenAI 調用,可以用下面的命令:
AZURE_ENDPOINT=https:// <你的 Endpoint 地址> .openai.azure.com/ AZURE_API_KEY= <你的 API KEY > AZURE_MODEL_ALIAS=gpt-3.5-turbo:gpt-35 ./amazing-openai-api 在上面的命令中AZURE_ENDPOINT和AZURE_API_KEY包含了Azure OpenAI 服務中的核心要素,因為Azure 部署GPT 3.5 / GPT 4 的部署名稱不允許包含. ,所以我們使用AZURE_MODEL_ALIAS將我們請求內容中的模型名稱替換為真實的Azure 部署名稱。甚至可以使用這個技巧將各種開源、閉源軟件使用的模型自動映射為我們希望的模型:
# 比如不论是 3.5 还是 4 都映射为 `gpt-35`
AZURE_MODEL_ALIAS=gpt-3.5-turbo:gpt-35,gpt-4:gpt-35因為我們已經配置了AZURE_API_KEY ,所以開源軟件也好,使用curl調用也罷,都不需要添加Authorization: Bearer <你的API Key> (也可以隨便寫),這樣就起到了嚴格的API Key 隔離,提升了API Key 的安全性。

如果你還是習慣在請求頭參數中添加認證內容,可以使用下面的不包含AZURE_API_KEY的命令,程序將透傳驗證到Azure 服務:
AZURE_ENDPOINT=https:// <你的 Endpoint 地址> .openai.azure.com/ AZURE_MODEL_ALIAS=gpt-3.5-turbo:gpt-35 ./amazing-openai-api 如果你希望自己指定特別的API Version,可以指定AZURE_IGNORE_API_VERSION_CHECK=true來強制忽略程序本身的API Version 有效性驗證。
如果你已經擁有了Azure GPT Vision,除了使用SDK 調用之外,你也可以參考這篇文檔,使用curl進行調用:GPT Vision。
# (必选) Azure Deployment Endpoint URL
AZURE_ENDPOINT
# (必选) Azure API Key
AZURE_API_KEY
# (可选) 模型名称,默认 GPT-4
AZURE_MODEL
# (可选) API Version
AZURE_API_VER
# (可选) 是否是 Vision 实例
ENV_AZURE_VISION
# (可选) 模型映射别名
AZURE_MODEL_ALIAS
# (可选) Azure 网络代理
AZURE_HTTP_PROXY
AZURE_SOCKS_PROXY
# (可选) 忽略 Azure API Version 检查,默认 false,始终检查
AZURE_IGNORE_API_VERSION_CHECK如果我們想將YI 官方的API 轉換為標準的OpenAI 調用,可以用下面的命令:
AOA_TYPE=yi YI_API_KEY= <你的 API KEY > ./amazing-openai-api 和使用Azure 服務類似,我們可以使用一個技巧將各種開源、閉源軟件使用的模型自動映射為我們希望的模型:
# 比如不论是 3.5 还是 4 都映射为 `gpt-35`
YI_MODEL_ALIAS=gpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chat如果我們在啟動服務的時候配置了YI_API_KEY的話,不論是開源軟件也好,使用curl調用也罷,我們都不需要添加Authorization: Bearer <你的API Key> (也可以隨便寫),這樣就起到了嚴格的API Key 隔離,提升了API Key 的安全性。
如果你還是習慣在請求頭參數中添加認證內容,可以使用下面的不包含YI_API_KEY的命令,程序將透傳驗證到Yi API 服務:
./amazing-openai-api # (必选) YI API Key
YI_API_KEY
# (可选) 模型名称,默认 yi-34b-chat
YI_MODEL
# (可选) YI Deployment Endpoint URL
YI_ENDPOINT
# (可选) API Version,默认 v1beta,可选 v1
YI_API_VER
# (可选) 模型映射别名
YI_MODEL_ALIAS
# (可选) Azure 网络代理
YI_HTTP_PROXY
YI_SOCKS_PROXY如果我們想將Google 官方的Gemini API 轉換為標準的OpenAI 調用,可以用下面的命令:
AOA_TYPE=gemini GEMINI_API_KEY= <你的 API KEY > ./amazing-openai-api 和使用Azure 服務類似,我們可以使用一個技巧將各種開源、閉源軟件使用的模型自動映射為我們希望的模型:
# 比如不论是 3.5 还是 4 都映射为 `gpt-35`
GEMINI_MODEL_ALIAS=gpt-3.5-turbo:gemini-pro,gpt-4:gemini-pro如果我們在啟動服務的時候配置了GEMINI_API_KEY的話,不論是開源軟件也好,使用curl調用也罷,我們都不需要添加Authorization: Bearer <你的API Key> (也可以隨便寫),這樣就起到了嚴格的API Key 隔離,提升了API Key 的安全性。
如果你還是習慣在請求頭參數中添加認證內容,可以使用下面的不包含GEMINI_API_KEY的命令,程序將透傳驗證到Google AI 服務:
./amazing-openai-api # (必选) Gemini API Key
GEMINI_API_KEY
# (可选) Gemini 安全设置,可选 `BLOCK_NONE` / `BLOCK_ONLY_HIGH` / `BLOCK_MEDIUM_AND_ABOVE` / `BLOCK_LOW_AND_ABOVE` / `HARM_BLOCK_THRESHOLD_UNSPECIFIED`
GEMINI_SAFETY
# (可选) Gemini 模型 版本,默认 `gemini-pro`
GEMINI_MODEL
# (可选) Gemini API 版本,默认 `v1beta`
GEMINI_API_VER
# (可选) Gemini API 接口地址
GEMINI_ENDPOINT
# (可选) 模型映射别名
GEMINI_MODEL_ALIAS
# (可选) Gemini 网络代理
GEMINI_HTTP_PROXY
GEMINI_SOCKS_PROXY