先日から連投している Domino IQ の検証記事の続きです。今回は Domino IQ 連携アプリの基本的な作り方を確認します。
以前紹介した HCL Software の Customer Support の以下の記事で紹介されている例をトレースします。芸がなくて恐縮ですが、ほぼ記事通りのサンプルアプリです、ただ、一部うまくいかなかったので少しだけ修正を加えています。
サンプルアプリの仕様
日本語で文章をで入力し[翻訳]ボタンをクリックすると Domino IQ が英語に翻訳し、表示するサンプルアプリとなります。
フォームの準備
フォームは日英用のフィールドと実行ボタンだけを配置した単純なフォームとなります(ボタンの LotusScript については後述)。
LLM System Prompt 文書の準備
Domino IQ Comfigration DB を開き、[System Prompts]ビューを開きます。[Add System Prompt]ボタンをクリックして、新規文書を作成します。この文書には Domino IQ に対する指示を登録します。Comand Definition を以下のように入力して、保存します。
LLM Command 文書の準備
続いて、[System Prompts]ビューを開き、新規文書を作成します。LLM Comand 文書が表示されるので、入力します。
この文書は、LotusScript から Domino IQ をコールする際に指定されることになります。Command に入力した項目でこの文書を特定します。System prompt には、先ほど作成した LLM System Prompt 文書を選択します。
これで、このコマンドを実行した際に Domino IQ に何をさせるのかが決定されます。
[翻訳]ボタンの記述
最後に翻訳実行ボタンにスクリプトを記述します。参考記事とほぼ同じなのですが、変数の命名規則をこのブログに合わせています。
|
Sub Click(Source As Button) Dim ns As New NotesSession Dim nuiw As New NotesUIWorkspace Dim nuid As NotesUIDocument Dim llmreq As NotesLLMRequest Dim llmres As NotesLLMResponse Dim sText As String Set nuid = nuiw.CurrentDocument sText = nuid.FieldGetText("Prompt") Set llmreq = ns.CreateLLMRequest() Set llmres = llmreq.Completion(ns.CurrentDatabase.Server, "J2E", sText) If (llmres.FinishReason = LLM_FINISH_REASON_STOP) Then Call nuid.FieldAppendText("Results",llmres.Content) End If End Sub |
ポイントは、NotesLLMRequest の Completion メソッドをコールしている部分です。引数は 3 つで、次のような役割があります。
| 1 | SERVER$ | Domino IQ サーバーの名前 |
| 2 | COMMAND$ | Domino IQ Comfigration DB で定義された LLM Command 文書 |
| 3 | userPROMPT$ | リクエストとして送信される文字列 この値と LLM Command 文書の定義を連結して Domino IQ に送信します |
検証と調整
簡単な文書を入力して実行してみます。すると次のような結果が返ってきました。単純な英訳を望んでいたのですが、2つの英文が提示されたり、「Here's the translation:」「などがあります。」のように尾ひれがついています。
この調整は LLM System Prompt 文書で行います。Domino IQ に対する指示に「返答は英訳した文章のみにしてください。」と書き加えます。
すると翻訳された英文だけが返されるようになりました。
Domino IQ に対するプロンプトエンジニアリングは LLM System Prompt 文書で実施するということですね。
Domino IQ の挙動確認
前回 紹介したデバッグパラメータ DEBUG_DOMINOIQ_LLMPAYLOAD=1 を利用して Domino IQ が送受信しているデータを取得します。そこから、送信データの JSON 抽出して VS code で成形します。
このフォーマットは以前見たことがありますよね。『つないでみよう:#2)ChatGPT API の利用』で紹介していますが、OpenAI 社が提供する ChatGPT API をコールする際に送信する JSON と同じフォーマットです。これは Domino IQ で使用している Ollama が OpenAI 互換 API を提供しているからです。OpenAI 社が定義したフォーマットが標準的に利用されているんですね。
同じ技術で動作していることがわかるとなんだか安心です。
まとめ
今回は Domino IQ 連携アプリの作り方と必要な設定についてまとめました。
14.5 で搭載された新しいクラスを使い、短いコードで AI を操作できるようインプリされていました。ChatGPT の API と連携したアプリのように複雑な JSON 処理をを記述する必要はないので、比較的簡単に AI を活用できます。ここまでシンプル化されているのであれば、@関数からの利用も実現してくれるかもしれませんね。
ただ、現時点での仕様では Domino IQ に対して ”テキスト” しか送信できません。バイナリデータは未対応なので、機密資料や名刺写真など、社外に送信したくない情報を Domino IQ で解析させることができません。将来対応するときが来ると思いますが、どのようにインプリされていくのか興味津々です。
ご存じの通り AI はとんでもない速度で進化しています。Domino IQ もこの流れに追随することになるわけですが、Domino IQ Comfigration DB を経由して LLM にアクセスする仕様が足かせとならないのか少し心配です。
最後に、先日 Notes/Domino の次のバージョンに関するアナウンスがあり、11/20 深夜(24 時~)にウェビナーが開催されます。
Domino 2026: Get Your First Look Inside the Early Access Program!
DominoIQ に関しては、RAG 対応について紹介があるようです。どのように拡張されるのか楽しみですね。興味のある方はぜひ参加ください。







0 件のコメント:
コメントを投稿