OpenAI 上个月宣布停止在中国的服务。
但实际上,OpenAI的对话式人工智能模型可供中国企业合规使用--只要他们注册微软的Azure云服务。
企业如何合规使用ChatGPT
就在OpenAI通知中国开发者禁止访问其服务的第二天,微软中国的官方微信账号发布了一篇鼓励开发者 "迁移到Azure OpenAI "的帖子。
帖子中包括如何创建 Azure 账户和申请 Azure OpenAI 账户的详细步骤指南。
目前使用OpenAI的能力主要有2个主流渠道,这2种渠道提供的API能力无差异。
1、对接OpenAI官方提供的API。(目前在国内使用官方已明确会被封禁)
2、对接微软Azure提供的OpenAI能力(目前国内唯一合规渠道,申请需企业资质,价格基本一样还可开发票)
微软Azure OpenAI服务可以合规、稳定地提供企业用户使用ChatGPT的可能。出于合规角度,建议国内企业可以选择微软的Azure OpenAI服务来使用接口。通过微软官方合作伙伴获取服务,企业用户可以合规、稳定地使用ChatGPT,满足国内发票需求,同时也能解决连接不稳定/响应速度慢/并发配额低等问题。
微软 Azure OpenAI 免费试用:
https://azureopenai.cloudallonline.com/?zxwsh25
Azure OpenAI 服务申请
Azure[1]是微软推出的云计算平台和服务,提供了包括虚拟机、应用服务、数据库、AI、物联网和区块链等在内的各种解决方案和服务。用户可以在 Azure 上快速搭建、部署和管理应用,并可以选择全球众多数据中心进行部署。Azure 支持多种编程语言、工具和框架,包括微软特有的和第三方的。它旨在帮助企业通过云计算实现更高的效率和灵活性。
在正式开始之前你需要先注册 Azure 的账号,注册账号可以用任意邮箱,不过需要绑定银行卡,网上有很多教程,这里就不赘述了。
然后再申请 Azure OpenAI 服务的开通权限,开通过后才可以在 Azure 上部署 OpenAI 服务。需要注意的是,Azure OpenAI 服务只对企业用户和学生用户开放申请,个人用户无法申请(会检测你的申请邮箱,如果是个人邮箱会拒绝)。
进入Azure OpenAI 服务申请页面[2]进行申请,依次输入以下信息,下面只列出必填项,以企业用户为例:
填完点击按钮提交,然后就等 Azure 审核了,只要你填写的信息比较真实,审核还是比较快的,我是上午申请下午就通过了,时间大概是 6 小时左右。
Submit
创建 Azure OpenAI 服务
收到审核通过的邮件后,进入Azure 首页[3],搜索,选择该类型的服务并进入页面,点击创建按钮进入创建页面。
Azure 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 命令来测试一下,示例代码如下。
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/$DEPLOYMENT_NAME/chat/completions\?api-version\=2023-06-31-preview \ -H "Content-Type: application/json" \ -H "api-key: $AZURE_OPENAI_KEY" \ -d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "hello"}]}'
这个 curl 命令可以在国内直接访问,大家可以在自己电脑终端上试一下。
然后我们再看下请求返回的结果:
{ "id": "chatcmpl-7lurXrxcVQDGEWssG28dxeJkpKLTD", "object": "chat.completion", "model": "gpt-35-turbo", "prompt_annotations": { "hate": { "filtered": false, "severity": "safe" }, "self_harm": { "filtered": false, "severity": "safe" }, "sexual": { "filtered": false, "severity": "safe" }, "violence": { "filtered": false, "severity": "safe" } }, "choices": [ { "index": 0, "finish_reason": "stop", "message": { "role": "assistant", "content": "Hello! How can I assist you today?" }, "content_filter_results": { // 与 prompt_annotations 内容相同 } } ], "usage": { "completion_tokens": 9, "prompt_tokens": 18, "total_tokens": 27 }}
我们再看看 OpenAI API 的返回结果:
{ "id": "chatcmpl-7lvHYFBRjBTWDf24TSy1JfL6zCmMj", "object": "chat.completion", "model": "gpt-3.5-turbo-0613", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Hello! How can I assist you today?" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 19, "completion_tokens": 9, "total_tokens": 28 }}
可以看到 Azure OpenAI 的返回结果和 OpenAI API 的返回结果大致相同,除了 Azure OpenAI 的返回结果中多了和这 2 个属性,这 2 个属性分别是对问题和答案的检查结果,检测其中是否包含违规的信息,比如暴力黄色什么的,如果设置了过滤信息检查并检查出了违规内容,Azure OpenAI 的请求就会失败。
prompt_annotations
content_filter_results
Langchain 中对 OpenAI LLM 进行替换
如果你使用的是 Langchain 的 Python 包,可以使用类来替换类,示例代码如下:
AzureOpenAI
OpenAI
from langchain.llms import AzureOpenAIllm = AzureOpenAI( openai_api_type="azure", openai_api_key="Azure OpenAI API KEY", openai.api_base="Azure OpenAI API URL", openai_api_version="2023-06-31-preview", deployment_name="Deployment Name",)
如果你使用的是 Langchain 的 JS 包,可以直接使用原来的类,只需要把原来的参数改成其他的 Azure OpenAI API 参数就可以了,示例代码如下:
ChatOpenAI
openaiKey
import { ChatOpenAI } from 'langchain/chat_models/openai';const model = new ChatOpenAI({ azureOpenAIApiVersion: '2023-06-01-preview', azureOpenAIApiKey: 'Azure OpenAI API KEY', azureOpenAIBasePath: 'Azure OpenAI API URL', azureOpenAIApiDeploymentName: 'Deployment Name',});