网站的建设时间怎么查,个人网站设计内容,柳州网站建设哪家公司好,百度小说排行榜第一名分享一个有趣的小工具#xff0c;10MB 身材的小工具#xff0c;能够将各种不同的模型 API 转换为开箱即用的 OpenAI API 格式。
让许多依赖 OpenAI API 的软件能够借助开发者能够接触到的#xff0c;非 OpenAI 的 API 私有部署和使用起来。
写在前面
这个小工具软件写于两…分享一个有趣的小工具10MB 身材的小工具能够将各种不同的模型 API 转换为开箱即用的 OpenAI API 格式。
让许多依赖 OpenAI API 的软件能够借助开发者能够接触到的非 OpenAI 的 API 私有部署和使用起来。
写在前面
这个小工具软件写于两周之前的 2023 年年底开源在了 GitHubsoulteary/amazing-openai-api有需要可以自取欢迎一键三连。 目前项目只适配了三种我在使用的模型的 API如果你觉得有其他的合适的 API 或者你认为很靠谱的模型欢迎提交 PR。
这个小工具的思路借鉴于 stulzq/azure-openai-proxy一个将 Azure OpenAI API 转换为 OpenAI API 格式的项目。在本地使用这个项目一段时间之后我 fork 出了一个新的版本 soulteary/azure-openai-proxy并将修改以 PR 形式反馈给了原始项目。随后因为想在本地应用中测试 Yi-34B API我制作了一个新的工具soulteary/yi-openai-proxy在随后 Gemini Pro API 出现了想着不能每处一个模型就折腾一个这样的项目后面太难维护了。
于是我彻底重构了项目并起一个略搞怪的名字Amazing OpenAI API和一个有意思的像是表情包的别名AOA。
下载工具
这个工具有两种使用方法一种是从 GitHub Release 发布页面 下载二进制文件。 另外一种方法则是使用 Docker 从社区下载 GitHub 自动构建好的指定版本的容器镜像
docker pull soulteary/amazing-openai-api:v0.6.1快速上手
AOA 的使用是不需要编写任何程序配置文件我们通过指定环境变量就能够完成应用行为的调整。
我们可以通过这个方式调整的程序行为包括“选择工作模型”、“设置模型运行需要的参数”、“设置模型兼容别名”。
直接运行可执行文件
程序默认支持三种模型的 API 转换如果我们不进行任何参数指定那么程序将默认将工作模型设置为 azure 模型。如果你希望使用 yi-34b-chat 或 gemini-pro需要设置环境变量 AOA_TYPEyi 或者 AOA_TYPEgemini来让程序切换工作模式。
当我们不使用任何参数直接执行程序azure 模式。这个时候我们只需要额外设置环境变量 AZURE_ENDPOINT就可以正常使用服务啦
AZURE_ENDPOINThttps://你的部署名称.openai.azure.com/完整的执行命令如下
AZURE_ENDPOINThttps://你的部署名称.openai.azure.com/ ./aoa当服务启动之后我们的程序就可以通过访问 http://localhost:8080/v1/* 的地址实现和访问 OpenAI 一样的 API 的效果啦。
使用 Docker 运行 AOA
如果你更喜欢使用 Docker可以用下面的命令来实现和上面一样的效果
docker run --rm -it -e AZURE_ENDPOINThttps://suyang231210.openai.azure.com/ -p 8080:8080 soulteary/amazing-openai-api:v0.6.1同样的我们就可以访问 http://localhost:8080/v1/* 的地址使用 OpenAI 格式的请求来访问 Azure OpenAI、Yi 34B-Chat、Gemini Pro 啦。
每个模型的详细使用示例可以参考下文中的 Docker Compose 使用示例。
工具特色
这个小工具有两个有趣的特色功能。
保护我们的 API Key
在日常测试各种 AI 应用的时候许多应用都需要我们设置 API Key 给它。
你如果你希望不要将 API Key 暴露给应用或者不放心各种复杂的开源软件是否有 API Key 泄漏风险。
我们可以将 API Key 配置在工具中比如在 Azure 模式的时候可以添加 AZURE_API_KEY你的 API Key 这个环境变量。以上文中 Azure 的命令为例我们可以将命令改写为
AZURE_ENDPOINThttps://你的 Endpoint 地址.openai.azure.com/ AZURE_API_KEY你的 API KEY AZURE_MODEL_ALIASgpt-3.5-turbo:gpt-35 ./aoa然后各种软件在请求的模型 API 的时候就不需要再填写 API Key 啦或者你随便填一个也行。
这样就起到了严格的 API Key 隔离提升了 API Key 的安全性。
方便的模型映射功能
如果你使用 Azure你一定知道 Azure 中的 Deployment Name 需要在请求参数中体现。同样的Yi 模型、Gemini Pro 也需要在请求的时候设置这些模型的名称在请求参数中。
但是我们的使用的软件通常只支持调用GPT 3.5、GPT 3.5 Turbo、GPT-4 等等“事实标准”。 总不能每用一个软件就要改下人家代码来适配这个模型名称吧并且很多软件也不一定是开源的折腾起来未免太麻烦了。
好在我们可以通过下面的方式来将软件调用模型的名称进行一键“替换”替换为我们实际在使用的模型。
比如我们可以通过下面的方式来将原始请求中的模型映射为我们真实的模型名称。比如想要将 GPT 3.5/4 都替换为 yi-34b-chat我们可以这样写一条映射规则
gpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chat我们还是先拿上文中的 Azure 来举例如果我们的 Azure 部署名称是 gpt-35我们希望将软件请求中的 gpt-3.5 和 gpt-4 都替换为这个部署名称
AZURE_ENDPOINThttps://你的 Endpoint 地址.openai.azure.com/ AZURE_API_KEY你的 API KEY AZURE_MODEL_ALIASgpt-3.5-turbo:gpt-35,gpt-4:gpt-35./aoa是不是很简单。
使用 Yi 34B Chat 模型
如果我们想将 Yi 官方的 API 转换为标准的 OpenAI API 调用可以使用下面的命令
AOA_TYPEyi YI_ENDPOINT你的 API 地址 YI_API_KEY你的 API KEY ./aoa和使用 Azure 服务类似我们可以使用一个技巧将各种开源、闭源软件使用的模型自动映射为我们希望的模型
# 比如不论是 3.5 还是 4 都映射为 gpt-35
YI_MODEL_ALIASgpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chat完整命令如下
AOA_TYPEyi YI_ENDPOINT你的 API 地址 YI_API_KEY你的 API KEY YI_MODEL_ALIASgpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chat ./aoa如果我们在启动服务的时候配置了 YI_API_KEY 的话不论是开源软件也好使用 curl 调用也罢我们都不需要添加 Authorization: Bearer 你的 API Key也可以随便写这样就起到了严格的 API Key 隔离提升了 API Key 的安全性。
如果你还是习惯在请求头参数中添加认证内容可以使用下面的不包含 YI_API_KEY 的命令程序将透传验证到 Yi API 服务
AOA_TYPEyi YI_ENDPOINT你的 API 地址 YI_MODEL_ALIASgpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chat ./aoa使用 Gemini Pro 模型
如果我们想将 Google 官方的 Gemini API 转换为标准的 OpenAI 调用可以用下面的命令
AOA_TYPEgemini GEMINI_API_KEY你的 API KEY ./aoa和使用 Azure 服务类似我们可以使用一个技巧将各种开源、闭源软件使用的模型自动映射为我们希望的模型
# 比如不论是 3.5 还是 4 都映射为 gpt-35
GEMINI_MODEL_ALIASgpt-3.5-turbo:gemini-pro,gpt-4:gemini-pro完整命令如下
AOA_TYPEgemini GEMINI_API_KEY你的 API KEY GEMINI_MODEL_ALIASgpt-3.5-turbo:gemini-pro,gpt-4:gemini-pro ./aoa和上面类似如果你还是希望每次请求的时候都携带 API Key可以不传递 GEMINI_API_KEY 参数
AOA_TYPEgemini GEMINI_MODEL_ALIASgpt-3.5-turbo:gemini-pro,gpt-4:gemini-pro ./aoaDocker Compose 使用示例
下面我们分别以 Azure、Yi、Gemini 为例演示下如何编写 docker-compose.yml 配置先来看看 Azure
version: 3services:amazing-openai-api:image: soulteary/amazing-openai-api:v0.6.1restart: alwaysports:- 8080:8080environment:- AZURE_ENDPOINThttps://修改为你的部署名称.openai.azure.com/- AZURE_API_KEY修改为你的API KEY- AZURE_MODELgpt-4# 模型名称映射比如将请求中的 GPT 3.5 Turbo 映射为 GPT 4- AZURE_MODEL_ALIASgpt-3.5-turbo:gpt-4logging:options:max-size: 1m然后是 Yi
version: 3services:amazing-openai-api:image: soulteary/amazing-openai-api:v0.6.1restart: alwaysports:- 8080:8080environment:# 设置工作模型为 YI- AOA_TYPEyi# 设置 YI API 服务器地址- YI_ENDPOINT修改为你申请或搭建的服务地址# 设置 YI API Key- YI_API_KEY修改为你的API KEY# 模型名称映射比如将请求中的 GPT 3.5 TurboGPT-4 都映射为 yi-34b-chat- YI_MODEL_ALIASgpt-3.5-turbo:yi-34b-chat,gpt-4:yi-34b-chatlogging:options:max-size: 1m最后是 Gemini
version: 3services:amazing-openai-api:image: soulteary/amazing-openai-api:v0.6.1restart: alwaysports:- 8080:8080environment:# 设置工作模型为 Gemini- AOA_TYPEgemini# 设置 Gemini API Key- GEMINI_API_KEY修改为你的API KEY# 模型名称映射比如将请求中的 GPT 3.5 TurboGPT-4 都映射为 gemini-pro- GEMINI_MODEL_ALIASgpt-3.5-turbo:gemini-pro,gpt-4:gemini-pro# 限制国内请求需要使用服务器进行代理中转或者跑在国外服务器上- https_proxyhttp://10.11.12.90:7890logging:options:max-size: 1m根据你的实际需求和想使用的模型情况将上面的内容进行完善并保存为 docker-compose.yml然后执行 docker compose up -d稍等片刻服务就运行起来啦。
接着我们可以使用自己顺手的软件来进行接口测试比如用 curl 测试一把模型的流式输出
curl http://0.0.0.0:8080/v1/chat/completions \-H Content-Type: application/json \-H Authorization: Bearer soulteary \-d {model: gpt-4,messages: [{role: user, content: Hello.}],temperature: 0.2,stream: true}命令执行完毕我们将得到类似下面的输出
data: {id:79fb180d21694513,created:0,model:yi-34b-chat,choices:[{delta:{role:assistant},index:0}],content:,lastOne:false}data: {id:79fb180d21694513,object:chat.completion.chunk,created:3705525,model:yi-34b-chat,choices:[{delta:{role:assistant,content:Hello},index:0}],content:Hello,lastOne:false}...data: {id:79fb180d21694513,object:chat.completion.chunk,created:3705525,model:yi-34b-chat,choices:[{delta:{role:assistant,content:},index:0,finish_reason:stop}],content:Hello! How can I assist you today? If you have any questions or need information on a specific topic, feel free to ask.,usage:{completion_tokens:27,prompt_tokens:14,total_tokens:41},lastOne:true}data: [DONE]或者用客户端软件来一个最普通的模型 API 调用 最后
这篇文章就先写到这里吧。
接下来我们来聊聊用这个方式来折腾一些有趣的东西。
—EOF 本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议欢迎转载、或重新修改使用但需要注明来源。 署名 4.0 国际 (CC BY 4.0)
本文作者: 苏洋
创建时间: 2024年01月09日 统计字数: 6809字 阅读时间: 14分钟阅读 本文链接: https://soulteary.com/2024/01/09/amazing-openai-api-call-all-non-openai-models-according-to-the-openai-api.html