📚
Azure OpenAIサービスでChatGPTを使ってみる
前提
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