经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » 人工智能基础 » 查看文章
使用 Azure OpenAI 打造自己的 ChatGPT
来源:cnblogs  作者:晓晨Master  时间:2023/3/31 8:59:06  对本文有异议

一.前言

当今的人工智能技术正在不断发展,越来越多的企业和个人开始探索人工智能在各个领域中的应用。其中,在自然语言处理领域,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 国际版,点此进行申请

优点:

  • 不受地域限制,国内可以直接调用。
  • 可以自己上传训练数据进行训练(据说很贵)。
  • Azure 多语言 SDK 支持。

缺点:

  • 部分功能未开放,但 ChatGPT 的功能是没问题的。
  • 和 OpenAI 官方的 API 标准有差异,无法直接用一些只支持 OpenAI 官方API 的开源项目。

Azure OpenAI 也已经支持 GPT-4 了,需要单独进行申请,博主的申请还没通过本文暂时以 GPT-3.5 进行演示。

三.使用 Auzre OpenAI

1.创建服务

进入 Azure 后,直接搜索 "Azure OpenAI"。

image-20230330103819049

选择你已经申请通过的订阅进行创建。

image-20230330103929103

如果该订阅没有启动则不能创建。

2.创建模型部署

在资源管理->模型部署 选择需要的模型进行创建,每个模型只能创建1个部署。

image-20230330104600507

2.Azure OpenAI Studio

模型创建完成以后,我们可以直接使用 Azure OpenAI Studio 来进行快速的测试。

image-20230330104111648

ChatGPT 测试。

image-20230330104238578

上传自己的数据集。

image-20230330104733421

四.API 调用

在 资源管理->密钥和终结点 可以获取 API 地址以及调用密钥。

image-20230330104847592

查看 API 文档

image-20230330105131925

使用 POSTMAN 进行调用测试。

image-20230330105302854

五.打造自己的 ChatGPT

1.Azure OpenAI Proxy

打造自己的 ChatGPT 推荐直接使用 https://github.com/Chanzhaoyu/chatgpt-web 这个项目。

image-20230324163357406

前面我们说到 API 调用是有差异的,此项目目前还没用直接支持 Azure OpenAI。我尝试修改过这个项目,可以调用了但是有个问题,无法正常的自动结束对话,跟了代码发现有 Bug:

https://github.com/Chanzhaoyu/chatgpt-web -> https://github.com/transitive-bullshit/chatgpt-api -> https://github.com/rexxars/eventsource-parser

最终在 eventsource-parser 这个 package 里,无法适应 Azure OpenAI 返回的结果,做过对比发现 Azure OpenAI 返回的调用最后少了一个换行 \n

最终我便想了个方法,自己实现一个 Proxy 转换 OpenAI 官方 API 标准到 Azure OpenAI 标准,这样就能让 Azure OpenAI 直接对接到任何支持 OpenAI 的任何项目中,并且可以顺便修复上面所说的差异,让 chatgpt-web 直接使用 Azure OpenAI。

项目地址:https://github.com/stulzq/azure-openai-proxy 希望大家点点 star。

2.搭建

最快的方式当然是使用 Docker,以下是 docker compose 脚本:

  1. version: '3'
  2. services:
  3. chatgpt-web:
  4. image: chenzhaoyu94/chatgpt-web
  5. ports:
  6. - 3002:3002
  7. environment:
  8. OPENAI_API_KEY: <Auzre OpenAI API Key>
  9. OPENAI_API_BASE_URL: http://azure-openai:8080
  10. AUTH_SECRET_KEY: ""
  11. MAX_REQUEST_PER_HOUR: 1000
  12. TIMEOUT_MS: 60000
  13. depends_on:
  14. - azure-openai
  15. links:
  16. - azure-openai
  17. networks:
  18. - chatgpt-ns
  19. azure-openai:
  20. image: stulzq/azure-openai-proxy
  21. ports:
  22. - 8080:8080
  23. environment:
  24. AZURE_OPENAI_ENDPOINT: <Auzre OpenAI API Endpoint>
  25. AZURE_OPENAI_MODEL_MAPPER: <Auzre OpenAI API Deployment Mapper>
  26. AZURE_OPENAI_API_VER: 2023-03-15-preview
  27. networks:
  28. - chatgpt-ns
  29. networks:
  30. chatgpt-ns:
  31. 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模型,我设置的部署名称为:xc-gpt-35,此时我的设置:

  1. AZURE_OPENAI_MODEL_MAPPER: gpt-3.5-turbo=xc-gpt-35

image-20230330111358140

六.结束

Azure OpenAI 平台为开发人员提供了一个强大的工具,可以轻松地创建和训练 ChatGPT 模型。随着 ChatGPT 技术的不断发展,它将在越来越多的应用场景中发挥重要作用,为人们提供更加智能和个性化的服务和体验。

原文链接:https://www.cnblogs.com/stulzq/p/17271937.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号