薅羊毛!微软 Azure 200 美元免费额度,云上 ChatGPT 使用指南!

1 minute read

背景

微软 Azure Cloud 针对新用户,提供了 200 美元热门云服务使用的免费额度,可使用于计算实例、存储等资源,其中还包括最近大热门的 OpenAI ChatGPT (支持 gpt-3.5 & gpt-4 等最新 API 版本) 服务。

本文主要介绍 Azure 注册 & 免费额度使用指南,同时以 ChatGPT 服务为例介绍使用过程,让我们薅秃 Azure 羊毛!

登陆 Azure

首先我们先登陆 Azure ,网站地址如下(拷贝后粘贴到浏览器打开):

https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?redirect_uri=https%3A%2F%2Fportal.azure.com%2Fsignin%2Findex%2F&response_type=code%20id_token&scope=https%3A%2F%2Fmanagement.core.windows.net%2F%2Fuser_impersonation%20openid%20email%20profile&state=OpenIdConnect.AuthenticationProperties%3DmcnNU3oK5Ms-Yt4fM3p9DTXASEj7LPxN6sX6HRHiATDIt7ByMvI0FZF489VmLpXta5fQbtGC34dh2uwZ1mfN_3c-jKt6183YfdfPP2vhqintzRIbKPnvKi2EO5pLuK8Oz2Ucp9-5kxX4_HkX66CX6-yGTBTUQQq-9cm68o-w6Mn7bHEoD4ibUEnICRtyiCevg7jojN0HRNae6J37q-_UgClkgOC9Ac5-VMpmJ4CtlIY5-7R-E2jRrTvcW_0TNg1I9agBDpmRFN6dQc9xNEiaO_dy0a8Dh4W6fxH9HDmkGHobyj-_z-kGleLAiqU-XNQdjyyu4wEuD2P7h6Ctcs9XUqPwIrhsG9vWoKWJmK1y3hIndOqai7k-zagvMdc3Ubg5bxeCP03-JkcjOHQUH04mfs6zbTX-fQ8xQYFaQOPDgYZ-nxtkh2b9Zl0cu-MSyzNJteCSR3gGdxk4lEc-FZDUkxB8dQENikDYyDywOz2e42Y&response_mode=form_post&nonce=638186935030121164.MzVmMGRiNmMtOWJmMC00N2MzLWE0NmEtNTM2NzUxNGIyZTI1Y2UyMjliNGUtYTkzNS00YjdjLWJlNzgtYzg3Njc5YzQzOGY4&client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c&site_id=501430&client-request-id=f9a287d6-6251-4169-8425-5d95b7e803b0&x-client-SKU=ID_NET472&x-client-ver=6.27.0.0

如果没有微软账号可以快速用个人邮箱注册一个,已有账号(可以用自己常用 Windows 系统微软账号)直接登陆即可。登陆后进入如下页面:

可以看到 “从 Azure 免费使用版开始”,点击 “开始” 即可看到支持的免费服务了。

点击 “免费开始使用”,输入姓名 & 电话 & 地址,完成短信验证码验证:

输入 Visa 或万事达的信用卡或借记卡相关信息,即可开始免费使用 (在赠金 200 美元用完后,Azure 将询问是否想要继续使用即用即付模式,不用担心免费额度外还有其它费用问题) :

下面我们以 ChatGPT 服务为例展示云服务的使用过程。

创建 ChatGPT 云资源

在搜索栏搜索 “OpenAI” 进入云服务,找到 “创建”:

按提示填写:基本信息、网络等配置,即可完成资源创建:

稍等三分钟后创建完毕,再进入资源,可以看见如上操作引导了:

首先点击进入 OpenAI Studio 页面,找到 “部署”,部署一个你所需的模型,包括 gpt-3.5-turbo 等 OpenAI 已支持的模型列表,这过程只需几秒钟完成:

而后就可以直接开始使用了,进入 “聊天”,开始愉快的和 ChatGPT 聊天吧~ 支持动态调整参数,示例如下:

代码调用 API

如果你想通过代码调用 Azure OpenAI ChatGPT,下面以 Golang 为例展示通过代码连接 & 测试过程。

其实 Azure 连接和 OpenAI api-key 连接方法非常类似,仅是多了一些参数(重点是 InitGPTAzure 方法,至于 configYaml 配置大家定义一个 struct 即可)。代码示例如下:

package openai

import (
  "context"

  openai "github.com/sashabaranov/go-openai"

  "github.com/VelocityLight/go-template/pkg/configs"
)

var (
  c *openai.Client
)

const (
  AISystemMessage = "You are an AI assistant, You can talk and help to the user."
)

type Params struct {
  MaxTokens   int      `json:"max_tokens"`
  Model       string   `json:"model"`
  TopP        float32  `json:"top_p"`
  Temperature float32  `json:"temperature"`
  N           int      `json:"n"`
  Stop        []string `json:"stop"`
}

func InitGPT(APIKey string) {
  c = openai.NewClient(APIKey)
}

func InitGPTAzure(config *configs.ConfigYaml) {
  cfg := openai.DefaultConfig(config.AzureAI.Token)
  cfg.BaseURL = config.AzureAI.BaseURL
  cfg.OrgID = config.AzureAI.OrgID
  cfg.APIType = openai.APIType(config.AzureAI.APIType)
  cfg.APIVersion = config.AzureAI.APIVersion
  cfg.Engine = config.AzureAI.Engine

  c = openai.NewClientWithConfig(cfg)
}

func buildRequest(prompt string, params Params) openai.ChatCompletionRequest {
  req := openai.ChatCompletionRequest{
    Model:       params.Model,
    MaxTokens:   params.MaxTokens,
    Temperature: params.Temperature,
    TopP:        params.TopP,
    N:           params.N,
    Stream:      false,
    Stop:        params.Stop,
    Messages: []openai.ChatCompletionMessage{
      {
        Role:    openai.ChatMessageRoleSystem,
        Content: AISystemMessage,
      },
      {
        Role:    openai.ChatMessageRoleUser,
        Content: prompt,
      },
    },
  }

  if req.Model == "" {
    req.Model = "gpt-3.5-turbo"
  }
  if req.TopP == 0.0 {
    req.TopP = 0.7
  }
  if req.MaxTokens == 0 {
    req.MaxTokens = 256
  }

  return req
}

func AskOpenAI(ctx context.Context, promptText string, params Params) (string, error) {
  req := buildRequest(promptText, params)
  resp, err := c.CreateChatCompletion(ctx, req)
  if err != nil {
    return "", err
  }

  line := resp.Choices[0].Message.Content
  return line, nil
}

注意上面 33 ~ 38 行的几个关键参数:

cfg.Token 即 “资源密钥” (密钥 1 或 密钥 2 均可),cfg.BaseUrl 即 “终结点”,你可以在资源列表页找到。

cfg.APIType 默认值是 “Azure”,cfg.APIVersion 默认值是 “2023-03-15-preview” (如果你用的也是 gpt-3.5-turbo), cfg.Engine 是前面你部署的模型自己设定的名字。

发起测试看看,让 ChatGPT 给我们写首诗:

这首诗感觉如何?哈哈哈哈。

总结

本文介绍了薅 Azure 云服务羊毛的方法,并且以 OpenAI ChatGPT 为例展示了服务使用、代码连接&测试实战过程。

希望本文可以对你有所帮助,要是觉得文章还不错,希望帮忙点个赞、分享和关注 (微信公众号:FinOps 实战)(Github: Github),您的支持和鼓励是持续更新的最大动力,公众号内持续有实战分享,欢迎一起探讨和发现。