2025/01/08

作ってみよう:#21)スマート名刺管理 - GTP4o API のコール

送信する JSON の準備ができたので、GTP4o API のコールする部分を開発します。メイン関数 ReadNameCard の以下の部分ですね。

Public Function ReadNameCard(vnd As NotesDocument) As Boolean
         ・・・
   '2. API をコールし、結果の JSON を取得
   Set jnavResponce = xCallWebAPI(jnavRequest)
   Call xSetRT(vnd, "JSON_Responce", jnavResponce.Stringify)
         ・・・
End Function


API コール

スクリプトライブラリ lsReadNameCard を開き、GTP4o API のコールする関数  xCallWebAPI 関数を追加します。

NotesHTTPRequest のオブジェクトを準備して、HTTP ヘッダに OpenAI 社の API キーを使用するための Bearer をセットします。

Private Function xCallWebAPI(vjnavRequest As NotesJSONNavigator) As NotesJSONNavigator
   Dim sURL As String
   Dim http As NotesHTTPRequest
   Dim jnav As NotesJSONNavigator

   'HTTP リクエストの準備
   Set http = xns.CreateHTTPRequest()
   http.Timeoutsec = 120

   'HTTP ヘッダーの設定(Bearer を OpenAI API 設定から取得)
   Call http.SetHeaderField("Content-Type", "application/json")
   Call http.SetHeaderField("Authorization", "Bearer " & xndWAPI.Bearer(0))

   'API 実行(URL を OpenAI Chat Completion 設定から取得)
   http.PreferJSONNavigator = True
   sURL = xndChat.EndPoint(0)
   Set jnav = http.Post(sURL, vjnavRequest.Stringify)

   'API のレスポンスを戻り値にセット
   Set xCallWebAPI = jnav
End Function

API をコールするための URL(エンドポイント)に対して、Post メソッドを使って、作成した JSON を送信しています。

PreferJSONNavigator を True にセットしているので、結果は JSON(NotesJSONNavigator のオブジェクト)で返ります。それをそのまま関数の戻り値としています。


動作検証

ReadNameCard 関数を修正して、API コール部分のコメントを解除します。

Public Function ReadNameCard(vnd As NotesDocument) As Boolean
   Dim jnavRequest As NotesJSONNavigator
   Dim jnavResponce As NotesJSONNavigator
   Dim jnavNameCard As NotesJSONNavigator

   '1. API リクエスト時に送信する JSON を作成
   Set jnavRequest = xMakeRequest(vnd)
   'Call xSetRT(vnd, "JSON_Request", jnavRequest.Stringify)

   '2. API をコールし、結果の JSON を取得
   Set jnavResponce = xCallWebAPI(jnavRequest)
   Call xSetRT(vnd, "JSON_Responce", jnavResponce.Stringify)


   '3. 結果の JSON 内から名刺情報部分だけの JSON を取得
   'Set jnavNameCard = xGetNameCard(jnavResponce)
   'Call xSetRT(vnd, "JSON_NameCard", jnavNameCard.Stringify)

   '4. 名刺情報を文書に保存
   'Call xSaveNameCard(jnavNameCard , vnd)

End Function

準備ができたら前回と同様に名刺の画像を貼り付けて、[名刺読込] ボタンをクリックしてテストします。今回はレスポンスに JSON が出力されていれば成功です。


次回の予定

これで WebAPI からレスポンスを受け取れるようになりました。次回はレスポンスの JSON から AI が読み取った名刺の情報を取得します。


前回 作ってみよう 次回


0 件のコメント:

コメントを投稿