一.前言
当今的人工智能技术正在不断发展,越来越多的企业和个人开始探索人工智能在各个领域中的应用。其中,在自然语言处理领域,OpenAI 的 GPT 系列模型成为了研究热点。OpenAI 公司的 ChatGPT 带起了一波 AI 应用的浪潮,一些科技公司都在努力跟进,比如百度的文心一言,Google 的 Bard 以及 Notion AI。就目前体验来说还是 OpenAI ChatGPT 表现最好。
作为 OpenAI 公司的大股东,Microsoft 当然是使用其服务的一等公民,陆续推出了 GitHub Copilot、New Bing、Office 365 Copilot 和 Github Copilot X 等等。目前 Microsoft Azure 是独一家的提供 OpenAI 云服务的云厂商,Azure OpenAI 提供的 API 服务使得构建和部署自己的 ChatGPT 成为了可能。
二.对比
Azure OpenAI 和 OpenAI 官方提供的服务基本是一致的,但是目前前者还是处于预览版的状态,一些功能还没有完全开放。
注意:需要使用 Azure 国际版,点此进行登陆(https://azure.microsoft.com/en-us/)
优点:
不受地域限制,国内可以直接调用。
可以自己上传训练数据进行训练(据说很贵)。
Azure 多语言 SDK 支持。
更适合企业私有化,数据可完全控制删除。
缺点:
部分功能未开放,但 ChatGPT 的功能是没问题的。
和 OpenAI 官方的 API 标准有差异,无法直接用一些只支持 OpenAI 官方API 的开源项目。
Azure OpenAI 也已经支持 GPT-4 了,需要单独进行申请,申请教程:点击参考。
三.使用 Auzre OpenAI
1.创建服务
点击登陆。进入 Azure 后,直接搜索 "Azure OpenAI"。
选择你已经申请通过的订阅进行创建。
2.创建模型部署
在资源管理->模型部署 选择需要的模型进行创建,每个模型只能创建1个部署。
模型创建完成以后,我们可以直接使用 Azure OpenAI Studio 来进行快速的测试。
四.API 调用
在 资源管理->密钥和终结点 可以获取 API 地址以及调用密钥。
可以查询官方:API文档。
五.打造自己的 ChatGPT
提供一个方法,自己实现一个 Proxy 转换 OpenAI 官方 API 标准到 Azure OpenAI 标准,这样就能让 Azure OpenAI 直接对接到任何支持 OpenAI 的任何项目中,并且可以顺便修复上面所说的差异,让 chatgpt-web 直接使用 Azure OpenAI。
项目地址:https://github.com/stulzq/azure-openai-proxy
最快的方式当然是使用 Docker,以下是 docker compose 脚本:
version: '3' services: chatgpt-web: image: chenzhaoyu94/chatgpt-web ports: - 3002:3002 environment: OPENAI_API_KEY: <Auzre OpenAI API Key> OPENAI_API_BASE_URL: http://azure-openai:8080 AUTH_SECRET_KEY: "" MAX_REQUEST_PER_HOUR: 1000 TIMEOUT_MS: 60000 depends_on: - azure-openai links: - azure-openai networks: - chatgpt-ns azure-openai: image: stulzq/azure-openai-proxy ports: - 8080:8080 environment: AZURE_OPENAI_ENDPOINT: <Auzre OpenAI API Endpoint> AZURE_OPENAI_MODEL_MAPPER: <Auzre OpenAI API Deployment Mapper> AZURE_OPENAI_API_VER: 2023-03-15-preview networks: - chatgpt-ns networks: chatgpt-ns: driver: bridge
启动有 3 个环境变量需要配置:
OPENAI_API_KEY Azure:密钥和终结点 里提供的 Key
AZURE_OPENAI_ENDPOINT Azure:密钥和终结点 里提供的终结点
AZURE_OPENAI_MODEL_MAPPER Azure:部署模型名称映射到 OpenAI 官方模型名称
特别说明一下 AZURE_OPENAI_MODEL_MAPPER使用 OpenAI 官方标准发起的请求里包含的模型名称是固定的,在这里可以查询,而在 Azure OpenAI 模型部署时是可以自定义名称的,请求 Azure yes需要提供这个部署模型的名称,所以建立了一个映射关系。
比如我在 Azure 部署了一个 gpt-3.5-turbo模型,我设置的部署名称为:cs-gpt-35,此时我的设置:
AZURE_OPENAI_MODEL_MAPPER: gpt-3.5-turbo=cs-gpt-35
六.结束
Azure OpenAI 平台为开发人员提供了一个强大的工具,可以轻松地创建和训练 ChatGPT 模型。随着 ChatGPT 技术的不断发展,它将在越来越多的应用场景中发挥重要作用,为人们提供更加智能和个性化的服务和体验。
另外在github有很多优秀的开源方案可以参考,如: