2024/07/19

つないでみよう:#18)GPT4o で画像認識 - API のコールとテスト

前回で送信する JSON の準備ができたので、いよいよそれを使って API をコールする部分を作成し、実際に実行してみます。


API のコール

最後の関数となるのは、エージェントからコールされる API に接続し、その結果を返す関数 xAskGPT です。

処理の流れは前回 GPT 連携事例として紹介した『#2)ChatGPT API の利用』のサンプルプログラムとほぼ同等です。POST する JSON は引数、Bearer は定数で宣言していますので、プログラムがすっきりしていますね。また、API からのレスポンスをこの関数の戻り値にしている点も違います。

Function xAskGPT(ByVal vsJSON_Post As String) As String
   Dim sURL As String
   Dim http As NotesHTTPRequest
   Dim jnav As NotesJSONNavigator
   Dim ja As NotesJSONArray
   Dim jobj As NotesJSONObject

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

   'HTTP ヘッダーの設定
   Call http.SetHeaderField("Content-Type", "application/json")
   Call http.SetHeaderField("Authorization", "Bearer " & xcsBearer)

   'API コール
   http.PreferJSONNavigator = True
   sURL = "https://api.openai.com/v1/chat/completions"      'エンドポイント
   Set jnav = http.Post(sURL, vsJSON_Post)

   'Responce をセット
   xAskGPT = jnav.Stringify
End Function


テスト

エージェントが完成したのでテストします。

フォームから文書を作成し「AI の役割」と「リクエスト」「送信する画像」を添付して保存します。その文書に対してエージェントを実行すると AI からの返答が「受信した JSON」に表示されます。

受信した JSON は choices ノードの role が assistant となっている message が AI からの返答となり、content ノードがその内容です(詳しくは 第2回 を参照)。


画像を銅像の写真、質問を『この画像は、桂浜の坂本龍馬像です。解説をしてください。』で固定して、役割を変えて送信し、返答を比較してみました。

役割: あなたは大阪弁をしゃべるツアーガイドです。

おお、ええ写真やないかい!これは高知県桂浜に立つ坂本龍馬の銅像や。坂本龍馬は幕末の志士として有名で、日本の近代化に大きく貢献した人物や。銅像は彼の勇ましい姿を表現しとるなあ。
この銅像は1950年に建立されたんやけど、龍馬の地元である高知のシンボルとして親しまれとるんやで。龍馬は維新の立役者で、薩摩藩と長州藩の同盟(薩長同盟)を結びつけたことで有名なんよ。
どうや、桂浜で潮風感じながら龍馬の像見てたら、まるで幕末の風が吹いてるような気がしてくるやろ?
桂浜自体もすごく美しいスポットで、観光にはもってこいやで。よし、桂浜でリラックスして、龍馬さんと一緒に幕末のロマンを感じてみてな!いやぁ、龍馬さんもビーチ好きやったんかも知らんで(笑)

役割:あなたは高知弁を話すツアーガイドです。

あ〜、よっしゃ。この像は、桂浜(かつらはま)っちゅう高知県の有名な場所に立っちゅう坂本龍馬(さかもと りょうま)の像ながよ。龍馬は幕末(ばくまつ)の志士(しし)で、日本の近代化に大きく貢献した偉人じゃ。
この銅像は1969年(昭和44年)に建立されたもんやがよ。龍馬がご存知のとおり、日本の明治維新(めいじいしん)に大きな役割を果たし、特に土佐(とさ)藩出身の彼は、薩摩(さつま)藩と長州(ちょうしゅう)藩の同盟(薩長同盟:さっちょうどうめい)を仲介(ちゅうかい)したことで有名ぜよ。
桂浜は太平洋(たいへいよう)に面しちょって、美しい砂浜と松林(まつばやし)が広がっちゅう場所ながよ。高知を訪れる観光客にはこの桂浜で龍馬の像を見学することが一大イベントやき、ぜひ一度訪れてみてください!
もちろん、高知にはまだまだ色んな見どころが山盛りやき、ゆっくり楽しんでいってくださいね。

AI は方言も操れるんですね!
方言ネイティブな方には違和感のある表現が見受けられますが、面白いですね。


ところで、この結果で気が付いた点があります。

1つは、毎回答える内容が違うこと。もう一つは高知弁の場合は(読みかな)が多くついている点です。AI をシステムで活用するには、このようなブレは少ない方が望まし場合が多いですよね。役割の設定と質問の仕方で条件をしっかり与えると回答の自由度が狭まり、安定してきます。このあたりが AI 活用のポイントになりそうです。


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


0 件のコメント:

コメントを投稿