VBAから
・ChatGPTを利用する方法
を紹介します!
※VBAからChatGPTへ質問をして、回答を取得する方法を紹介します。
ChatGPTを利用するための
アカウント登録の手順等も紹介します!
この記事では
・gpt-3.5-turboを使用
します!
Open AIのアカウント登録
以下のURLへアクセスする。
「Sign up」をクリックする。
メールアドレスを入力して「Continue」をクリックする。
※「Continue with Google」等でも良いと思います。
パスワードを入力して「Continue」をクリックする。
※好みのパスワードを入力してください。
先ほど入力したメールアドレスに、確認メールを送信した旨の画面が表示される。
受信したメールの「Verify email address」をクリックする。
以下を入力して「Continue」をクリックする。
・名前
・苗字
・生年月日
※「名前」と「苗字」はアルファベットで入力しました。漢字でも問題無いかは未確認です。
携帯電話の番号を入力して「Send Code」をクリックする。
携帯電話に届いたコードを入力する。
APIキー(secret key)の取得
「Create new secret key」をクリックする。
任意の名前を入力して「Create secret key」をクリックする。
※今回は任意の名前として「MyTestKey」と入力しました。
表示されたsecret keyをコピーしテキストエディタ等にメモして、「Done」をクリックして閉じる。
※再表示はできないため、メモは無くないようにしてください。
準備
以下で紹介するコードは「VBA-JSON(JsonConverter.bas)」を使用してJSONデータをパースしています。よって「VBA-JSON(JsonConverter.bas)」が必要です。
「VBA-JSON(JsonConverter.bas)」の取得は以下の記事をご確認ください。
※以下の実施が必要です。
・VBA-JSON(JsonConverter.bas)の取得
・VBA-JSON(JsonConverter.bas)の微修正
・参照設定の追加
VBAコード
ここでは例として
・ChatGPTへ質問をして、回答を取得
します。
※今回は「VBAを学ぶメリットを教えてください。」と質問します。
※取得した回答をイミディエイトウィンドウへ出力します。
※エラーの場合はエラーメッセージをイミディエイトウィンドウへ出力します。
Option Explicit
Sub sample()
Dim apiKey As String
Dim question As String
Dim url As String
Dim requestBody As String
Dim http As Object
Dim stream As Object
Dim json As Variant
Dim responseUtf8 As String
'APIキー(secret key)
apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
'ChatGPTへ渡す質問
question = "VBAを学ぶメリットを教えてください。"
'URL(APIエンドポイント)
url = "https://api.openai.com/v1/chat/completions"
'POSTリクエストのBody
requestBody = "{""model"": ""gpt-3.5-turbo"",""messages"": [{""role"": ""user"", ""content"": """ & question & _
"""}],""temperature"": 0.7}"
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
'HTTPリクエスト
With http
.Open "POST", url, False
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Authorization", "Bearer " & apiKey
.Send requestBody
End With
Set stream = CreateObject("ADODB.Stream")
'HTTPレスポンス(=JSON)がバイナリデータのため、UTF-8へデコード
'デコード結果(=JSON)を変数「responseUtf8」へ格納
With stream
.Type = 1 'Binary
.Open
.Write http.responseBody
.Position = 0
.Type = 2 'Text
.Charset = "UTF-8"
responseUtf8 = .ReadText
.Close
End With
'デコード結果(=JSON)をパース
Set json = JsonConverter.ParseJson(responseUtf8)
'回答をイミディエイトウィンドウへ出力
If VarType(json("error")) = vbEmpty Then
Debug.Print json("choices")(1)("message")("content")
Else
Debug.Print json("error")("message")
End If
'後片付け
Set http = Nothing
Set stream = Nothing
End Sub
実行結果
VBAからChatGPTを利用できました。
※「VBAを学ぶメリットを教えてください。」を質問して回答を得ることができました。
参考
ChatGPTのAPIは有料ですが、5ドル分は無料です。
現時点の使用金額は以下で確認できます。