Azure OpenAI 服务开通及使用
ChatGPT 面世以来持续引领 AI 技术的火爆,具有专业技能的开发人员也热衷于使用 OpenAI 的 API 来构建自己的应用程序,但由于 OpenAI 并不对国内开放,因此调用 OpenAI API 还比较麻烦。幸运的是,微软的 Azure 推出 OpenAI 服务,他们的服务跟 OpenAI API 是一样的,并且可以在国内进行访问,费用收取也相差不大。今天我们就来看看如何开通 Azure OpenAI 服务,并介绍其使用方法。
Azure OpenAI 服务申请
Azure是微软推出的云计算平台和服务,提供了包括虚拟机、应用服务、数据库、AI、物联网和区块链等在内的各种解决方案和服务。用户可以在 Azure 上快速搭建、部署和管理应用,并可以选择全球众多数据中心进行部署。Azure 支持多种编程语言、工具和框架,包括微软特有的和第三方的。它旨在帮助企业通过云计算实现更高的效率和灵活性。
在正式开始之前你需要先注册 Azure 的账号,注册账号可以用任意邮箱,不过需要绑定银行卡,网上有很多教程,这里就不赘述了。
然后再申请 Azure OpenAI 服务的开通权限,开通过后才可以在 Azure 上部署 OpenAI 服务。需要注意的是,Azure OpenAI 服务只对企业用户和学生用户开放申请,个人用户无法申请(会检测你的申请邮箱,如果是个人邮箱会拒绝)。
进入Azure OpenAI 服务申请页面进行申请,依次输入以下信息,下面只列出必填项,以企业用户为例:
- 姓名
- 多少个订阅 ID 要申请,只需要选 1 个
- 填写订阅 ID,订阅 ID 可以按照页面提示找到,如果没有就新建一个
- [重要]有效的邮箱,这里要填写企业邮箱或者学生邮箱,个人邮箱会被拒绝(包括 gmail.com, outlook.com 等),这个邮箱地址可以跟你的 Azure 账号邮箱地址不一样
- 公司名称、公司地址、公司所在城市、公司所在省份、公司所在国家、公司网站、公司电话,建议填写真实信息(不用担心公司会知道,一般他们不会打公司电话)
- 公司类型,有 ISV(独立服务提供商)、SI(系统集成商)、MSP(微软解决方案提供商)等
- 确认是否是你的公司要使用该服务,选中就可以了
- 选择要申请的 Azure OpenAI 服务具体功能,有文本和代码模型,和图像模型,我们选择文本和代码模型即可。
- 选择了文本和代码模型功能后,还要选择其细分的功能,除了
Most Valuable Professional (MVP) or Regional Director (RD) Demo Use
这个选项,其他的都可以选,按实际需求选择 - 最后 2 个必填项是同意 Azure 的协议,都选同意就好了。
填完点击Submit
按钮提交,然后就等 Azure 审核了,只要你填写的信息比较真实,审核还是比较快的,我是上午申请下午就通过了,时间大概是 6 小时左右。
创建 Azure OpenAI 服务
收到审核通过的邮件后,进入Azure 首页,搜索Azure OpenAI
,选择该类型的服务并进入页面,点击创建按钮进入创建页面。
- 第一步是填写基础信息,选择你的订阅,资源组(没有的话就新建一个),区域(有美国、欧洲、亚洲等国家),服务名称(如果名字被别人占用了会提示),定价层(价格跟 OpenAI 的相差不大),然后点击下一步。
- 第二步是选择网络,选择第一个全网络就可以了。
- 第三部是选择标签,可以不填。
- 最后确认信息并提交。
模型部署
创建好 OpenAI 服务后,点击该服务进入 OpenAI 的服务页面,选择模型部署,然后点击部署管理
按钮,进入Azure AI Studio
页面。
进去后选择侧边栏的部署
菜单,点击创建新部署
按钮,然后选择模型,这里我们选择gpt35-turbo
即可,再选择模型版本,有0301
和0613
两个,我们当然选择最新的0613
版本,然后输入部署名称,注意名称只能包含-
和_
特殊字符,其他的特殊字符不能写到名称中,最后点击创建
按钮完成部署的创建。
获取 API URL 和 API Key
模型部署完成后,重新进入 OpenAI 页面,选择键和端点
菜单(在模型部署菜单上面),进去后可以看到有 2 个键和 1 个端点,端点就是 API URL,键就是 API KEY,随便用其中一个 KEY 就可以了。
Azure OpenAI API 使用
拿到 API URL 和 API KEY 后,就可以使用 OpenAI API 了,这里用 curl 命令来测试一下,示例代码如下。
1 | curl $AZURE_OPENAI_ENDPOINT/openai/deployments/$DEPLOYMENT_NAME/chat/completions\?api-version\=2023-06-31-preview \ |
AZURE_OPENAI_ENDPOINT
是 API URLDEPLOYMENT_NAME
是模型部署的名称api-version
参数是指 API 的版本,有2023-06-31-preview
、2023-05-15
等版本,具体的版本信息可以看这里AZURE_OPENAI_KEY
是 API KEY- 发送的 body 数据是一个消息数组,每个消息分别定义了角色和内容。
这个 curl 命令可以在国内直接访问,大家可以在自己电脑终端上试一下。
然后我们再看下请求返回的结果:
1 | { |
我们再看看 OpenAI API 的返回结果:
1 | { |
可以看到 Azure OpenAI 的返回结果和 OpenAI API 的返回结果大致相同,除了 Azure OpenAI 的返回结果中多了prompt_annotations
和content_filter_results
这 2 个属性,这 2 个属性分别是对问题和答案的检查结果,检测其中是否包含违规的信息,比如暴力黄色什么的,如果设置了过滤信息检查并检查出了违规内容,Azure OpenAI 的请求就会失败。
Langchain 中对 OpenAI LLM 进行替换
如果你使用的是 Langchain 的 Python 包,可以使用AzureOpenAI
类来替换OpenAI
类,示例代码如下:
1 | from langchain.llms import AzureOpenAI |
如果你使用的是 Langchain 的 JS 包,可以直接使用原来的ChatOpenAI
类,只需要把原来的 openaiKey
参数改成其他的 Azure OpenAI API 参数就可以了,示例代码如下:
1 | import { ChatOpenAI } from 'langchain/chat_models/openai'; |
总结
虽然 OpenAI 目前国内还不准使用,但 Azure OpenAI 是允许使用的,它的最大的好处就是可以在国内正常使用 OpenAI API 的能力,部署服务的时候也无需选择国外的服务器,找个国内服务器或者香港的服务器就可以了。希望这篇文章可以帮助大家搭建自己的 Azure OpenAI 服务,如果在使用过程中有什么问题,也欢迎大家在评论区留言讨论。
关注我,一起学习各种人工智能和 AIGC 新技术,欢迎交流,如果你有什么想问想说的,欢迎在评论区留言。