Azure OpenAI (GPT3) 初体验

背景

目前公司有需求需要通过AIGC(Artificial Intelligence Generated Content) 生成一些目标的内容(评论,回复,文章,简报等),来增加产品的交互体验。目前Azure OpenAI Service 基于 GPT3 来处理内容,可以作为技术方案的选项之一。

基础工作

创建资源

登录Azure portal, 在创建资源的地方搜索Azure OpenAI 就可以很方便的找到资源。选择自己的Subscription 和 Resource Group即可,其他的参数根据提示即可操作。

创建资源

这里需要注意的是,目前Azure OpenAI属于限制资源,默认情况下并不开启,如下图,对于没有开放的Subscription会提示你不能创建,不过附带了 申请链接 , 按照表单提示填写申请信息等待审核即可。

需要审核
‘’

创建Model

资源创建好之后,打开在Overview上面,有一个很醒目的链接,帮你跳转尝试使用产品,也可以直接打开 Playground 网站使用,注意如果你有多个OpenAI实例在不同的region,可以看下右上角,进行选择。

资源详情

在使用之前,我们其实是需要创建Model的,Model是主要用来对你文字进行处理的实体,不同的model擅长的领域也不相同,有两个地方可以创建model,一个是在Azure Portal上面,或者在Playground上面也同样可以。



如果你不关心他们具体的差别,请忽略下面的一部分内容,无脑先选 text-davinci-003 开始体验。

这里注意部署的时候,会让你输入一个他的名字,这里尽量不要使用中文,如果没想好命名,可以直接同模型的名字代替。

Model类型

创建的过程中,会发现model有很多种类型,整体上他们的类型命名规则是 {family}-{capability}[-{input-type}]-{identifier}

family

可以理解为模型的种族吧,有如下几个值

  • text: GPT-3 models
  • code : 基于GPT-3 的model,用github上面所有的公开项目作为数据训练集,训练后的产物。

capability

模型相对擅长的领域,针对不同的模型种族,也有不同的值,下面展示其中一部分

GPT-Models:
  • Davinci : 擅长 分析复杂的意图,因果关系,为用户作总结
  • Curie: 擅长语言翻译、复杂分类、文本情感、摘要
  • Babbage:简要分类,语义搜索分类
  • Ada:解析文本、简单分类、地址修正、关键字
Codex Models
  • Davinci
  • Cushman

input type

这个是针对部分模型的特定参数,普通的模型是没有这个值的

identifier

模型的版本号,例如001

以上的内容摘自 官网 的文档,具体细节可以自取。

实际使用

选择你创建好的模型,在PlayGround的页面,输入框内输入hello word,点击下面的Generate,图中绿色的文字就是模型回复我们的内容。


每次回答之后,选中文字可以去掉绿色的背景,然后不断在下面提问,再生成,就会形成对话,例如下图,GPT 会根据前面我问他的内容,来进行进一步的回答 (其中Q是我的问题)。

代码调用

仔细看你的页面,会发现右上角有一个 View code 的按钮,里面会给一个示例,告知你如果使用代码调用,目前只有Python有library可以直接使用,其他的语言的话,还是只能通过调用http请求来进行
示例

curl {endpoint}/openai/deployments/{deployment_name}/completions?api-version=2022-12-01 \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{
  "prompt": "What's your name",
  "max_tokens": 100,
  "temperature": 1,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "top_p": 0.5,
  "best_of": 1,
  "stop": null
}'

以上的内容只是一个缩略版的示例,其中有几个参数,

  • endpoint: 正常在这个view code的地方会直接给你,也可以在Azure Resource的页面看到
  • deployment_name: 部署model的名字,这里就是我之前提到的最好不要用中文,否则这里还涉及转码问题
  • api-key: 相当于调用的私钥,这个在Azure Resource的 Keys and Endpoint 页面可以找到

具体请求的Body里面,也包括很多的参数,其中的 prompt 就是最重要的一个,也是后面我们会反复提到的概念。这里暂时理解为你提问的内容就可以了。
token 也是很重要的一个概念,区别于Auth的token,这里的token是指请求文本,所返回的内容文字数量。max_token 也就对应了最多返回多少文本,如果需要问题很大,但是max_token设置很小的时候,就会有回复的内容截断的情况。通常一个token对应4个英文字符。

而且这里提醒一下,Azure OpenAI的收费方式,最主要的收费就是请求所消耗的 token 数量,不同模型的 token 单价也不一样,这里贴个简略的价格表(注意哈,价格是每1k个 token 的价格,例如Davinci 模型是每消耗1k个token, 2美分):

价格表

价目表 自取

局限性

数据集局限

首先,有别于New Bing里面的Chat场景,GPT3的训练数据集并不是当下最新的,如果你希望它帮你分析一些实事场景,他是无法帮助你完成的,需要你手动到告诉他发生了什么事情,才可以。

这里举个例子,你可以尝试问他,微软在2022年1月1号的股票价格,他就会告诉你他无法预测股价,所以它自身的数据集,至少是2022年以前的数据,更不用说让他帮你分析最近的新闻等等。

TBD, 请期待后续 =。=

你可能感兴趣的:(Azure OpenAI (GPT3) 初体验)