ChatGPT的相关内容我们已经更新完成了,全部看完 ChatGPT 系列教程后你会了解 ChatGPT 的前世今生;
如何使用 ChatGPT 进行提问来解决实际问题;后面还介绍了一些市面上基于 ChatGPT 做的各种浏览器插件,这些插件有的是帮忙写邮件的,有的是用来做会议纪要的,通过了解这些插件,你能知道 ChatGPT 的应用场景,并通过插件来体验 ChatGPT。
今天开始,我们就要进入到微软关于 ChatGPT 的产品了,那就是 Azure OpenAI Service。(注意:Azure OpenAI Service 算 Azure Paas 级别的服务,所以受众是开发者,并不是业务用户)
什么是 Azure OpenAI Service
Azure OpenAI Service 是微软 Azure Cognitive Services 中的全新产品,它提供了对强大的 GPT-3/ GPT-4、Codex 和 Embeddings 系列语言模型的访问。这些模型可以用于内容生成、摘要、语义搜索和自然语言到代码的转换。
它和 Open AI 的区别在于,Azure OpenAI Service 在 Azure 全球基础设施上运行,以满足企业级的安全性、合规性和区域可用性的需求,还提供了基于角色的身份验证和私有网络连接,以增强部署的安全性和可信度。
因此如果你要在企业中正式商用 ChatGPT 相关模型,想要在自己的应用系统中集成上 ChatGPT 的强大能力,那目前只能使用 Azure OpenAI Service。
本次文章,我们先来一起学习下,如何使用 Azure OpenAI Service ,文章中会涉及到创建 Azure 资源,部署模型以及使用 Playground 测试模型的具体操作。
Tips: Azure OpenAI Service 从概念上和OpenAI 是一样的,只不过他提供了一些企业级商用的功能。
前提条件
有权访问 Azure OpenAI Service 的 Azure 国际版订阅(目前是有限预览,需要微软审批) ,可以前往
https://aka.ms/oai/access 填写申请表单
创建 Azure 资源
要想使用 GPT 模型,首先需要创建一份 Azure Open AI 资源,可以通过 Azure 门户, ARM Template ,REST APIs , Azure CLI 等方式创建。
这里我们使用最简单的 Azure Portal 的创建方式
前往 https://portal.azure.com/?microsoft_azure_marketplace_ItemHideKey=microsoft_openai_tip#create/Microsoft.CognitiveServicesOpenAI
在创建资源时,选择相关订阅,资源组,区域,定价层和名称。
这一点跟创建其他 Azure 资源没有什么区别。
之后直接创建,等待资源创建成功。
部署模型
在我们真正使用 Azure OpenAI 之前,还需要进行模型部署。
前往 https://oai.azure.com/
选择订阅和你之前创建的 Open AI 资源,选择使用资源。
选择-新建部署
从下拉列表中选择模型,这里我们选择 text-davinci-003 (Azure OpenAI 中提供了众多的语言模型,ChatGPT 所使用的 GPT3.5 只是其中一种,另外还提供了针对不同场景的不同模型。)
给模型起一个名字,这个名字会在我们后续的 API 调用上使用到,所以起一个简单清晰的名字
在 Playground 中使用 GPT-3
在我们的资源和模型都准备好以后,就可以去体验 Azure Open AI 的 GPT-3 了。
这里我们可以先通过 Playground 快速体验(左侧导航点击操场 - GPT-3)。
Playground是一个可以无代码,通过 UI 界面快速体验 GPT-3 的功能。
(因为很多概念和 ChatGPT 是通用的,这部分在前面的 ChatGPT 系列教程都提到过了,因此后面不再重复,尤其是关于 Prompt 提示词的部分)
我们在中间输入框中,输入文字后,直接点击下方的【Generate生成】 就可以调用 API ,将文字发送给模型,再把模型的响应结果显示到页面中。
比如我下图就是让模型用中文总结了一下 Azure OpenAI 服务的英文介绍。
我们在使用 Playground 时,可以看到除了输入文字外,在右侧界面有一个专门的 【Parameters 参数】配置界面。
这些参数的配置会影响到我们模型的生成效果,接下来我们一起看下这些 Parameters 。
温度 Temperature
用来控制回复的随机性,温度越高模型回复的内容就会更有创造性,温度越低,回复的内容准确性就会更高。
最大长度(令牌) Max length(tokens)
用来设置每个模型的令牌数量限制,模型会消耗 tokens并且按消耗的 token 量计费,一个 token 大约为4个英文字符。
比如下图就是消耗了 32个 token
随着我的问题和响应增加, token 的消耗也会增加
并且通过【View Code】功能,我们还可以直接查看当前调用对应的代码示例。也就是说,我们也可以直接用代码或 API 的方式来调用 Azure Open AI 中的模型。
停止序列 Stop sequences
用来定义模型生成文本的停止词,比如我们将 Stop sequnces 设置为 “你”。
这时候调用模型,如果生成的响应内容中遇到了“你”就会停止响应。
Stop sequence 可以是任何字符串,比如换行符、标点符号或者特殊字符都可以。
这样可以避免使用 GPT 模型进行文本生成时,模型生成过长或无关的内容,从而提高效率和质量。
主要概率 Top probabilities
GPT 模型参数中的 Top probabilities 是用来控制模型生成文本时的采样技术的。
Top probabilities 的值是一个介于 0 和 1 之间的小数,表示模型在每个位置只考虑概率总和达到该值的最可能的单词。
举个例子,假设模型预测下一个单词是 “苹果” 的概率为 0.6,“香蕉” 的概率为 0.3,“橘子” 的概率为 0.1。这时我们将 Top probabilities 设置成 0.9 ,则模型会从”苹果“和”香蕉“中选择一个作为输出,因为它们的累积概率达到了 0.9。
频率损失 Frequency penalty
可以控制模型输出中单词的重复程度。该参数的值在 0 到 2 之间,正值会根据新 tokens 在文本中的现有频率降低模型逐字重复同一行的可能性。
举个例子,假设模型已经生成了 “苹果” 这个单词,并且我们希望避免重复使用这个单词。如果将 frequency penalty 参数设置为一个正值,则模型在下一次选择单词时会降低 “苹果” 这个单词被选中的概率。
下图的频率损失是 0 , 这时模型的结果中返回了两个”苹果“
将频率损失调整为2后,可以看到生成的内容中只包含了一个苹果。
状态惩罚 Presence penalty
该参数可以控制模型输出中主题的重复程度。该参数的值在 0 到 2.0 之间,正值会根据新 tokens 是否出现在文本中来惩罚它们,从而增加模型谈论新主题的可能性。
举个例子,假设模型已经生成了一段关于 “苹果” 的文本,并且我们希望避免再次谈论这个主题。如果将 presence penalty 参数设置为一个正值,则模型在下一次选择单词时会降低与 “苹果” 相关的单词被选中的概率。
下图中,我将状态惩罚设置成 2 , 可以看到模型输出的内容中多了一段关于利用 App Store 来销售数字内容的话题。
需要说明的是 Presence penalty 和 Frequency penalty 都是 GPT 模型中的参数,它们都可以控制模型输出中的重复程度。但是,它们之间有一些区别。
Presence penalty 不考虑单词被使用的频率,而只考虑单词是否存在于文本中。可以将 Presence Penalty 视为一种防止主题重复的方法。
而 Frequency penalty 则会根据新 tokens 在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性。可以将 Frequency Penalty 视为一种防止单词重复的方法。
最佳 Best of
如果我们将此参数设置为超过1,则意味着模型会生成多个候选响应,并选择其中最有可能的一个作为输出。
请注意,未使用的候选项仍会产生使用成本,因此建议谨慎使用此参数。
响应前文本 Pre-response text
响应前文本 (Pre-response text) 是指在模型生成响应之前添加到输入中的文本。这可以用来为模型提供上下文信息,帮助它更好地理解用户的问题并生成更准确的响应。
还是跟上面相同的问题,我让模型简单介绍下苹果,之前的模型返回的都是苹果公司的介绍。
但我这次在模型的【响应前文本】参数中添加上”苹果是一种水果“。
这时候模型在给我响应输出时,就知道了要生成水果的内容,所以后面都是关于水果的介绍,而不是苹果公司。
响应后文本 Post-response text:
假设你正在使用 GPT 模型为一个在线购物网站提供客户支持。当用户询问 “我可以退货吗?” 时,模型可能会生成一个响应,例如 “是的,您可以在收到商品后 30 天内退货。” 你可以在输出中添加一些响应后文本,例如 “如果您需要退货,请访问我们的网站并按照说明操作。” 这样,用户就能够获得更多有用的信息,并知道如何进行下一步操作。