使用 Azure OpenAI 打造自己的 ChatGPT
一.前言
当今的人工智能技术正在不断发展,越来越多的企业和个人开始探索人工智能在各个领域中的应用。其中,在自然语言处理领域,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"。
选择你已经申请通过的订阅进行创建。
如果该订阅没有启动则不能创建。
2.创建模型部署
在资源管理->模型部署 选择需要的模型进行创建,每个模型只能创建1个部署。
2.Azure OpenAI Studio
模型创建完成以后,我们可以直接使用 Azure OpenAI Studio 来进行快速的测试。
ChatGPT 测试。
上传自己的数据集。
四.API 调用
在 资源管理->密钥和终结点 可以获取 API 地址以及调用密钥。
查看 API 文档
使用 POSTMAN 进行调用测试。
五.打造自己的 ChatGPT
1.Azure OpenAI Proxy
打造自己的 ChatGPT 推荐直接使用 https://github.com/Chanzhaoyu/chatgpt-web 这个项目。
前面我们说到 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 脚本:
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
模型,我设置的部署名称为:xc-gpt-35
,此时我的设置:
AZURE_OPENAI_MODEL_MAPPER: gpt-3.5-turbo=xc-gpt-35
六.结束
Azure OpenAI 平台为开发人员提供了一个强大的工具,可以轻松地创建和训练 ChatGPT 模型。随着 ChatGPT 技术的不断发展,它将在越来越多的应用场景中发挥重要作用,为人们提供更加智能和个性化的服务和体验。
使用 Azure OpenAI 打造自己的 ChatGPT的更多相关文章
- OpenAI 推出超神 ChatGPT 注册教程来了
前几天,OpenAI 推出超神 ChatGPT,非常火爆.但是呢,因为不可抗力原因,大部分人无法体验到.这里我分享一下注册的攻略. 准备 首先能能访问 Google(前置条件,不能明确说,懂得都懂) ...
- 把盏言欢,款款而谈,ChatGPT结合钉钉机器人(outgoing回调)打造人工智能群聊/单聊场景,基于Python3.10
就像黑火药时代里突然诞生的核弹一样,OpenAI的ChatGPT语言模型的横空出世,是人工智能技术发展史上的一个重要里程碑.这是一款无与伦比.超凡绝伦的模型,能够进行自然语言推理和对话,并且具有出色的 ...
- 微软要如何击败Salesforce?Office365、Azure、Dynamics365 全面布局AI | 双语
微软在上月宣布组建自己的 AI 研究小组.该小组汇集了超过 5000 名计算机科学家和工程师,加上微软内部研究部门,将共同挖掘 AI 技术. 与此同时,亚马逊,Facebook,Google,IBM ...
- 落地生根两周年,微软Azure进入2.0时代
By: 申元庆 微软亚太科技有限公司董事长 微软亚太研发集团首席运营官 微软中国云计算与企业总经理 仿佛就在转眼间,微软Azure已经在中国落地生根两年了. 长风破浪会有时,直挂云帆济沧海.微软云技术 ...
- CA周记 - 带你进⼊ OpenAI 的世界
2021年11月的 Microsoft Ignite , 微软带来了全新的 Azure OpenAI Service,通过新的 Azure 认知服务能够访问 OpenAI 强大的 GPT-3 模型 . ...
- 真实世界的人工智能应用落地——OpenAI篇 ⛵
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 本文地址:https://www.showmeai.tech/artic ...
- CA周记 - Build 2022 上开发者最应关注的七大方向主要技术更新
一年一度的 Microsoft Build 终于来了,带来了非常非常多的新技术和功能更新.不知道各位小伙伴有没有和我一样熬夜看了开幕式和五个核心主题的全过程呢?接下来我和大家来谈一下作为开发者最应关注 ...
- 宅在家学不进去吗?试试这些 GitHub 上简单易学的游戏项目吧
作者:HelloGitHub-小鱼干 这是本人宅在家里的第 4 周,代码不想看,技术文章不想读,都不能愉快学习了我还怎么当一个优秀的需求消化师呢?有没有什么轻松地方法来学习技术呢?想起了小时候金山打字 ...
- 深度学习库 SynapseML for .NET 发布0.1 版本
2021年11月 微软开源一款简单的.多语言的.大规模并行的机器学习库 SynapseML(以前称为 MMLSpark),以帮助开发人员简化机器学习管道的创建.具体参见[1]微软深度学习库 Synap ...
- GitHub 开源了多款字体「GitHub 热点速览 v.22.48」
本期 News 快读有 GitHub 官方大动作一下子开源了两款字体,同样大动作的还有 OpenAI 发布的对话模型 ChatGPT,引燃了一波人机对话. 项目这块,也许会成为新的 Web 开发生产力 ...
随机推荐
- varchar(100)和varchar(10)的区别
mysql存储字段"abcdef",varchar(10)和varchar(100)都可以存储,且占用的磁盘存储空间是一样的,磁盘是按照实际长度存储.但,如果需要排序等内存操作,加 ...
- axios取消重复请求与更新token并续订上次请求
一.问题引入 当用户发起一个请求时,判断token是否已过期,若已过期则先调refreshToken接口,拿到新的token后再继续执行之前的请求. 难点:当同时发起多个请求,token 过期会调用多 ...
- 微信点击链接:debugx5.qq.com提示您使用的不是x5内核
微信点击链接:debugx5.qq.com提示您使用的不是x5内核 因为要测试小程序,需要webview调试功能,正常来说在微信任意一个聊天窗口,输入:debugx5.qq.com,点击该链接就可以, ...
- MD5加密汇总
1 #region MD5 2 /// <summary> 3 /// 16位MD5加密 4 /// </summary> 5 /// <param name=" ...
- 2.javaOOP_Part2继承
- Qt打印不同颜色
qCritical()<<"\033[47;31m"<<"打印的字符串"<<"\033[m"; \033 ...
- Training time_SSM
三阶段 MyBatis 1 三层架构介绍 2 MyBatis介绍 类库:对于现有技术的一个封装. 框架:对于一个问题的一整套解决方案. MyBatis是一个半自动的ORM持久层的框架.刚开始叫做iBa ...
- django_设计模式和模板层
一.django的设计模式 1.传统MVC设计模式 (1)MVC(Model-View-Controller,模型-视图-控制器)模式. M--模型层,主要用于对数据库的封装: V--视图层,用于向用 ...
- 关于 indy Idhttp Post数据抛异常 connection closed Gracefully
delphi 使用indy -idHttp 控件post 数据时 会报connection closed Gracefully这个异常的问题. 网上找了很多方法最多的就是 修改: MyHttp.Req ...
- Java压缩音频视频工具类
/** * TODO * * @author Administrator * @version 1.0 * @date 2021/11/5 16:55 */ public class vedio { ...