2024/07/16

つないでみよう:#15)GPT4o で画像認識 - エージェントの作成

前回からスタートした 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 のテンポラリフォルダを取得するために使用しています。このライブラリについては、以下の記事を参照してください。

Windows のテンポラリフォルダの取得


次回の予告

今回は、メインルーチンを準備しました、次回は POST する JSON を作成する部分を開発します。


前回 連載:つないでみよう 次回


0 件のコメント:

コメントを投稿