{"id":13454837,"url":"https://github.com/soulteary/amazing-openai-api","last_synced_at":"2025-08-20T15:09:18.576Z","repository":{"id":213735950,"uuid":"734808427","full_name":"soulteary/amazing-openai-api","owner":"soulteary","description":"Convert different model APIs into the OpenAI API format out of the box.","archived":false,"fork":false,"pushed_at":"2024-02-21T07:57:56.000Z","size":474,"stargazers_count":149,"open_issues_count":7,"forks_count":13,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-08T15:02:58.291Z","etag":null,"topics":["azure-openai","azure-openai-api","gemini-pro","google-gemini","gpt4v","gpt4vision","openai","openai-api","yi-34b","yi-34b-chat"],"latest_commit_sha":null,"homepage":"https://soulteary.com/2024/01/09/amazing-openai-api-call-all-non-openai-models-according-to-the-openai-api.html","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soulteary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-22T17:17:24.000Z","updated_at":"2025-04-05T14:27:51.000Z","dependencies_parsed_at":"2024-01-09T15:00:46.722Z","dependency_job_id":"f3d75f81-08e1-4df8-8648-714265ad3bac","html_url":"https://github.com/soulteary/amazing-openai-api","commit_stats":null,"previous_names":["soulteary/amazing-openai-api"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/soulteary/amazing-openai-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Famazing-openai-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Famazing-openai-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Famazing-openai-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Famazing-openai-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soulteary","download_url":"https://codeload.github.com/soulteary/amazing-openai-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Famazing-openai-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271337930,"owners_count":24742062,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-openai","azure-openai-api","gemini-pro","google-gemini","gpt4v","gpt4vision","openai","openai-api","yi-34b","yi-34b-chat"],"created_at":"2024-07-31T08:00:58.386Z","updated_at":"2025-08-20T15:09:18.532Z","avatar_url":"https://github.com/soulteary.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Amazing OpenAI API\n\n![](.github/assets/aoa.jpg)\n\nConvert different model APIs into the OpenAI API format out of the box.\n\n10MB+的小工具，能够将各种不同的模型 API 转换为开箱即用的 OpenAI API 格式。\n\n当前支持模型：\n\n- Azure OpenAI API (GPT 3.5/4), GPT4 Vision (GPT4v)\n- YI 34B API\n- Google Gemini Pro\n\n\n## 下载 📦\n\n访问 [GitHub Release 页面](https://github.com/soulteary/amazing-openai-api/releases)，下载适合你的操作系统的执行文件。\n\n![](.github/assets/dockerhub.png)\n\n或者使用 Docker Pull，下载指定版本的镜像文件：\n\n```bash\ndocker pull soulteary/amazing-openai-api:v0.7.0\n```\n\n## 快速上手\n\n`AOA` 不需要编写任何配置文件，通过指定环境变量就能够完成应用行为的调整，包括“选择工作模型”、“设置模型运行需要的参数”、“设置模型兼容别名”。\n\n默认执行 `./aoa` ，程序会将工作模型设置为 `azure`，此时我们设置环境变量 `AZURE_ENDPOINT=https://你的部署名称.openai.azure.com/` 然后就可以正常使用服务啦。\n\n```bash\nAZURE_ENDPOINT=https://你的部署名称.openai.azure.com/ ./aoa\n```\n\n如果你更喜欢 Docker，可以用下面的命令：\n\n```bash\ndocker run --rm -it -e AZURE_ENDPOINT=https://你的部署名称.openai.azure.com/ -p 8080:8080 soulteary/amazing-openai-api:v0.7.0\n```\n\n当服务启动之后，我们就可以通过访问 `http://localhost:8080/v1` 来访问和 OpenAI 一样的 API 服务啦。\n\n你可以使用 `curl` 来进行一个快速测试：\n\n```bash\ncurl -v http://127.0.0.1:8080/v1/chat/completions \\\n    -H \"Content-Type: application/json\" \\\n    -H \"Authorization: Bearer 123\" \\\n    -d '{\n        \"model\": \"gpt-4\",\n        \"messages\": [\n        {\n            \"role\": \"system\",\n            \"content\": \"You are a poetic assistant, skilled in explaining complex programming concepts with creative flair.\"\n        },\n        {\n            \"role\": \"user\",\n            \"content\": \"Compose a poem that explains the concept of recursion in programming.\"\n        }\n        ]\n    }'\n```\n\n也可以使用 OpenAI 官方 SDK 进行调用，或者任意兼容 OpenAI 的开源软件进行使用（更多例子，参考 [example](./example/)）：\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=\"your-key-or-input-something-as-you-like\",\n    base_url=\"http://127.0.0.1:8080/v1\"\n)\n\nchat_completion = client.chat.completions.create(\n    messages=[\n        {\n            \"role\": \"user\",\n            \"content\": \"Say this is a test\",\n        }\n    ],\n    model=\"gpt-3.5-turbo\",\n)\n\nprint(chat_completion)\n```\n\n你如果你希望不要将 API Key 暴露给应用，或者不放心各种复杂的开源软件是否有 API Key 泄漏风险，我们可以多配置一个 `AZURE_API_KEY=你的 API Key` 环境变量，然后各种开源软件在请求的时候就无需再填写 API key 了（或者随便填写也行）。\n\n当然，因为 Azure 的一些限制，以及一些开源软件中的模型调用名称不好调整，我们可以通过下面的方式，来将原始请求中的模型，映射为我们真实的模型名称。比如，将 GPT 3.5/4 都替换为 `yi-34b-chat`：\n\n```bash\ngpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chat\n```\n\n如果你希望使用 `yi-34b-chat`，或者 `gemini-pro`，我们需要设置 `AOA_TYPE=yi` 或者 `AOA_TYPE=gemini`，除此之外，没有任何差别。\n\n## 容器快速上手\n\n项目中包含当前支持的三种模型接口的 `docker compose` 示例文件，我们将 `example` 目录中的不同的文件，按需选择使用，将必填的信息填写完毕后，将文件修改为 `docker-compose.yml`。\n\n然后使用 `docker compose up` 启动服务，就能够快速使用啦。\n\n- [docker-compose.azure.yml](./example/docker-compose.azure.yml)\n- [docker-compose.azure-gpt4v.yml](./example/docker-compose.azure-gpt4v.yml)\n- [docker-compose.yi.yml](./example/docker-compose.yi.yml)\n- [docker-compose.gemini.yml](./example/docker-compose.gemini.yml)\n\n## 详细配置使用\n\n调整工作模型 `AOA_TYPE`，可选参数，默认为 `azure`：\n\n```bash\n# 选择一个服务, \"azure\", \"yi\", \"gemini\"\nAOA_TYPE: \"azure\"\n```\n\n程序服务地址，可选参数，默认为 `8080` 和 `0.0.0.0`：\n\n```bash\n# 服务端口，默认 `8080`\nAOA_PORT: 8080\n# 服务地址，默认 `0.0.0.0`\nAOA_HOST: \"0.0.0.0\"\n```\n\n## Azure 使用\n\n如果我们想将 Azure 上部署的 OpenAI 服务转换为标准的 OpenAI 调用，可以用下面的命令：\n\n```bash\nAZURE_ENDPOINT=https://\u003c你的 Endpoint 地址\u003e.openai.azure.com/ AZURE_API_KEY=\u003c你的 API KEY\u003e AZURE_MODEL_ALIAS=gpt-3.5-turbo:gpt-35 ./amazing-openai-api \n```\n\n在上面的命令中 `AZURE_ENDPOINT` 和 `AZURE_API_KEY` 包含了 Azure OpenAI 服务中的核心要素，因为 Azure 部署 GPT 3.5 / GPT 4 的部署名称不允许包含 `.`，所以我们使用 `AZURE_MODEL_ALIAS` 将我们**请求内容中的模型名称**替换为真实的 Azure 部署名称。甚至可以使用这个技巧将各种开源、闭源软件使用的模型自动映射为我们希望的模型：\n\n```bash\n# 比如不论是 3.5 还是 4 都映射为 `gpt-35`\nAZURE_MODEL_ALIAS=gpt-3.5-turbo:gpt-35,gpt-4:gpt-35\n```\n\n因为我们已经配置了 `AZURE_API_KEY`，所以开源软件也好，使用 `curl` 调用也罢，都不需要添加 `Authorization: Bearer \u003c你的 API Key\u003e` （也可以随便写），这样就起到了严格的 API Key 隔离，提升了 API Key 的安全性。\n\n![](.github/assets/invoke-easy.jpg)\n\n如果你还是习惯在请求头参数中添加认证内容，可以使用下面的不包含 `AZURE_API_KEY` 的命令，程序将透传验证到 Azure 服务：\n\n```bash\nAZURE_ENDPOINT=https://\u003c你的 Endpoint 地址\u003e.openai.azure.com/ AZURE_MODEL_ALIAS=gpt-3.5-turbo:gpt-35 ./amazing-openai-api \n```\n\n如果你希望自己指定特别的 API Version，可以指定 `AZURE_IGNORE_API_VERSION_CHECK=true` 来强制忽略程序本身的 API Version 有效性验证。\n\n### GPT4 Vision\n\n如果你已经拥有了 Azure GPT Vision，除了使用 SDK 调用之外，你也可以参考这篇文档，使用 `curl` 进行调用：[GPT Vision](./example/gpt-vision.md)。\n\n### 模型参数设置\n\n```bash\n# (必选) Azure Deployment Endpoint URL\nAZURE_ENDPOINT\n# (必选) Azure API Key\nAZURE_API_KEY\n# (可选) 模型名称，默认 GPT-4\nAZURE_MODEL\n# (可选) API Version\nAZURE_API_VER\n# (可选) 是否是 Vision 实例\nENV_AZURE_VISION\n# (可选) 模型映射别名\nAZURE_MODEL_ALIAS\n# (可选) Azure 网络代理\nAZURE_HTTP_PROXY\nAZURE_SOCKS_PROXY\n# (可选) 忽略 Azure API Version 检查，默认 false，始终检查\nAZURE_IGNORE_API_VERSION_CHECK\n```\n\n## YI (零一万物)\n\n如果我们想将 YI 官方的 API 转换为标准的 OpenAI 调用，可以用下面的命令：\n\n```bash\nAOA_TYPE=yi YI_API_KEY=\u003c你的 API KEY\u003e ./amazing-openai-api \n```\n\n和使用 Azure 服务类似，我们可以使用一个技巧将各种开源、闭源软件使用的模型自动映射为我们希望的模型：\n\n```bash\n# 比如不论是 3.5 还是 4 都映射为 `gpt-35`\nYI_MODEL_ALIAS=gpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chat\n```\n\n如果我们在启动服务的时候配置了 `YI_API_KEY` 的话，不论是开源软件也好，使用 `curl` 调用也罢，我们都不需要添加 `Authorization: Bearer \u003c你的 API Key\u003e` （也可以随便写），这样就起到了严格的 API Key 隔离，提升了 API Key 的安全性。\n\n如果你还是习惯在请求头参数中添加认证内容，可以使用下面的不包含 `YI_API_KEY` 的命令，程序将透传验证到 Yi API 服务：\n\n```bash\n./amazing-openai-api \n```\n\n### 模型参数设置\n\n```bash\n# (必选) YI API Key\nYI_API_KEY\n# (可选) 模型名称，默认 yi-34b-chat\nYI_MODEL\n# (可选) YI Deployment Endpoint URL\nYI_ENDPOINT\n# (可选) API Version，默认 v1beta，可选 v1\nYI_API_VER\n# (可选) 模型映射别名\nYI_MODEL_ALIAS\n# (可选) Azure 网络代理\nYI_HTTP_PROXY\nYI_SOCKS_PROXY\n```\n\n## Gemini PRO\n\n如果我们想将 Google 官方的 Gemini API 转换为标准的 OpenAI 调用，可以用下面的命令：\n\n```bash\nAOA_TYPE=gemini GEMINI_API_KEY=\u003c你的 API KEY\u003e ./amazing-openai-api \n```\n\n和使用 Azure 服务类似，我们可以使用一个技巧将各种开源、闭源软件使用的模型自动映射为我们希望的模型：\n\n```bash\n# 比如不论是 3.5 还是 4 都映射为 `gpt-35`\nGEMINI_MODEL_ALIAS=gpt-3.5-turbo:gemini-pro,gpt-4:gemini-pro\n```\n\n如果我们在启动服务的时候配置了 `GEMINI_API_KEY` 的话，不论是开源软件也好，使用 `curl` 调用也罢，我们都不需要添加 `Authorization: Bearer \u003c你的 API Key\u003e` （也可以随便写），这样就起到了严格的 API Key 隔离，提升了 API Key 的安全性。\n\n如果你还是习惯在请求头参数中添加认证内容，可以使用下面的不包含 `GEMINI_API_KEY` 的命令，程序将透传验证到 Google AI 服务：\n\n```bash\n./amazing-openai-api\n```\n\n### 模型参数设置\n\n```bash\n# (必选) Gemini API Key\nGEMINI_API_KEY\n\n# (可选) Gemini 安全设置，可选 `BLOCK_NONE` / `BLOCK_ONLY_HIGH` / `BLOCK_MEDIUM_AND_ABOVE` / `BLOCK_LOW_AND_ABOVE` / `HARM_BLOCK_THRESHOLD_UNSPECIFIED`\nGEMINI_SAFETY\n# (可选) Gemini 模型 版本，默认 `gemini-pro`\nGEMINI_MODEL\n# (可选) Gemini API 版本，默认 `v1beta`\nGEMINI_API_VER\n# (可选) Gemini API 接口地址\nGEMINI_ENDPOINT\n# (可选) 模型映射别名\nGEMINI_MODEL_ALIAS\n# (可选) Gemini 网络代理\nGEMINI_HTTP_PROXY\nGEMINI_SOCKS_PROXY\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoulteary%2Famazing-openai-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoulteary%2Famazing-openai-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoulteary%2Famazing-openai-api/lists"}