前回からスタートした GPT4o の画像認識を API から実行するサンプル作り。今回は API をコールする部分を作成します。
エージェントの作成
サンプルアプリですので、ビューで選択した文書に対して実行する仕様とします。
まずは、LotusScript のエージェントを作成し、選択文書に対して実行するように設定します。メインルーチンは次の通りです。
Option Declare Use "lsWindows" 'Windows のテンポラリフォルダの取得 Private xns As NotesSession Private Const xcsBearer = "xxxxx" 'APIキーをここにセット Sub Initialize Dim ndb As NotesDatabase Dim ndc As NotesDocumentCollection Dim nd As NotesDocument Dim sBase64 As String Dim sJSON_Post As String Dim sJSON_Responce As String Set xns = New NotesSession 'ビューの選択文書を1つ取得 Set ndb = xns.CurrentDatabase Set ndc = ndb.UnprocessedDocuments If ndc.Count = 0 Then MsgBox "文書を選択してください。", 16, ndb.Title Exit Sub End If Set nd = ndc.GetFirstDocument() '① 送信する JSON を作成 sJSON_Post = xGetJSON(nd) 'Call xSetRT(nd, "JSON_Send", sJSON_Post) '必要な時だけ有効化 '② API をコールして結果を取得 sJSON_Responce = xAskGPT(sJSON_Post) Call xSetRT(nd, "JSON_Responce", sJSON_Responce) '結果を文書に記録 Call nd.Save(True, False) End Sub |
選択文書(の1文書目)を取得した後、
① リクエスト内容を読み取り API に POST する JSON を作成
② API をコールして結果の JSON を取得
する関数をコールしています(処理の詳細は後述)。
結果の JSON は文書内のリッチテキストに保存しています(xSetRT 関数)。送信する JSON は画像が含まれますので、生成される JSON は非常に大きくなります。文書を開くのが遅くなりますので、中身を確認したい時だけ有効化にすることをお薦めします。
Function xSetRT(vnd As NotesDocument, ByVal vsFld As String, ByVal vsVal As String) Dim nrti As NotesRichTextItem Call vnd.RemoveItem(vsFld) Set nrti = vnd.CreateRichTextItem(vsFld) Call nrti.AppendText(vsVal) End Function |
なお、利用している lsWindows ライブラリは、添付ファイルの一時保存用に、Windows のテンポラリフォルダを取得するために使用しています。このライブラリについては、以下の記事を参照してください。
次回の予告
今回は、メインルーチンを準備しました、次回は POST する JSON を作成する部分を開発します。
前回 | 連載:つないでみよう | 次回 |
0 件のコメント:
コメントを投稿