📚

Azure OpenAIサービスでChatGPTを使ってみる

2023/03/21に公開

前提

Azure OpenAIサービスが使用できるように申請をし受理されること。

リソースの作成とモデルのデプロイ

Azure OpenAIサービスのリソースを作成しchatgptのモデルをデプロイする。

キーとエンドポイントの確認

キーはAzure Portalから確認できる。

エンドポイントはAzure OpenAi Studioから確認する。
Chat GPT→コードの表示から確認する。

上記の情報を元に進める。
キーやエンドポイントはconfig、Key Vaultなどに格納すると良いだろう。

コード例

        HttpRequestMessage requestMessage = new HttpRequestMessage();
        requestMessage.Method = HttpMethod.Post;
        requestMessage.Headers.TryAddWithoutValidation("Content-Type", "application/json");
        requestMessage.Headers.Add("api-key", key);

        requestMessage.RequestUri = new Uri(url);

        string json =
                       $$""""
                    {
                   "prompt": "<|im_start|>{{text}}",
                   "max_tokens": 1500,
                   "temperature": 1,
                   "frequency_penalty": 0,
                   "presence_penalty": 0,
                   "top_p": 0.95,
                   "stop": ["<|im_end|>"]
                   }
                   """";
        byte[] bytes = Encoding.UTF8.GetBytes(json);

        HttpContent content = new ByteArrayContent(bytes);
        requestMessage.Content = content;
        var res = http.Send(requestMessage);
        var body = await res.Content.ReadAsStringAsync();
        var data = System.Text.Json.JsonSerializer.Deserialize<Response>(body);

keyには前項で取得したAPIキーが入っているものとする。
urlには前項で取得したエンドポイントがはいっているものとする。
textにはchatGPTに問い合わせする質問が入っているものとする。
ResponseはPOSTの戻りの型で以下のようにしている。

Response
    internal class Response
    {
        public string id { get; set; }
        public string @object { get; set; }

        public int created { get; set; }
        public string model { get; set; }
        public List<Choise> choices { get; set; }
    }

    internal class Choise
    {
        public string text { get; set; }

        public Usage usage { get; set; }
    }

    internal class Usage
    {
        public int prompt_tokens { get; set; }
        public int completion_tokens { get; set; }
        public int total_tokens { get; set; }
    }

以上のようなコードでAzure OpenAIサービスのChat GPTに問い合わせすることが可能である。

もちろん、先人が提供しているライブラリーを利用することでより簡単に使用することが可能である。

上記のようにBlazorなどでも利用することができました。

Discussion