Slide 1

Slide 1 text

HCL Domino 14.5 EAP2 Domino IQ とは 2025/02/13 第71回 のの会 中野晴幸 Haruyuki Nakano harunakano.blogspot.com (blog) @harunakano (X twitter)

Slide 2

Slide 2 text

EAP2 とは • HCL Notes/Domino の次期バージョンのベータ版を Early Access Program (EAP)として有効なライセンスの保持者が試 用できる • バージョン 14.5 の EAP は Drop1 から Drop3 まで3回(4回か も?)のリリースが予定されている • EAP2 は2回目にリリースされた Drop2 を指す

Slide 3

Slide 3 text

本日のテーマ

Slide 4

Slide 4 text

Domino IQ とは ※EAP2版 • Domino 14.5 に導入予定のAI推論エンジン • 新しい LotusScript クラスを使い Domino 環境内で安全に生成 AI クエリを Domino サーバーに送信し、サーバーから応答を取 得できる • Linux と Windows の Domino サーバーでサポートされる https://help.hcl-software.com/domino/14.5.0/admin/wn_145ea2_domino_iq.html

Slide 5

Slide 5 text

AI クエリーをローカルで処理する Domino IQ サーバーは Database Server プロセスから推論エン ジンを起動する。AI エンジンはローカルで実行され、設定され たポートを Domino サーバーのコアプロセスとともにリッスン し、Domino サーバー内で AI クエリーをローカルで処理する。

Slide 6

Slide 6 text

Domino IQを始めよう!! LLMサーバーの構築して生成AIを試用する

Slide 7

Slide 7 text

入手可能な Domino IQ 情報 ※EAP2版 • Domino 14.5 EA2 ウェビナー録画 https://youtu.be/kgtKJ6e7-U8 (28分15秒あたりから) • Domino 14.5 EA2 ウェビナースライド資料 https://support.hcl- software.com/sys_attachment.do?sys_id=233a2af93bfada98cb0155f726e45 aa7 • Domino 14.5 EA2 ウェビナーQ&A https://support.hcl- software.com/sys_attachment.do?sys_id=de5ffcfafbcb9254db10f2797befdc 81

Slide 8

Slide 8 text

入手可能な Domino IQ 情報 ※EAP2版 • Domino 14.5 EAP forum https://hclsw.co/domino-14-5-eap-forum 「タグ別」を選択したら、 タグのリストから ”Domino IQ” または “DominoIQ” をクリックしてトピックを 絞り込みます

Slide 9

Slide 9 text

公式ヘルプ • Domino IQ server https://help.hcl-software.com/domino/14.5.0/admin/domino_iq_server.html

Slide 10

Slide 10 text

用意するもの • 少なくとも16GBのRAMと4つのCPU ※記載場所により違いあり ➢Intel i7 または i9 12世代 or 13世代、Drop2ではGPU非サポート ➢必要なスペックは使用する大規模言語モデルのパラメータにより変化 • 大規模言語モデル(LLM)として知られる事前に訓練されたデータモ デル ➢GGUFバイナリ形式のファイルをダウンロードしDominoデータディレクトリ に格納 • APIキー ➢Domino IQ へのアクセスに使用 • ドミノディレクトリの新しい設計 ➢ディレクトリプロフィールに Domino IQ サーバーを選択する設定あり • dominoiq.nsf ➢モデルに関する情報の共有に使用

Slide 11

Slide 11 text

用意するもの(1) • 少なくとも16GBのRAMと4つのCPU ※記載場所により違いあり ➢Intel i7 または i9 12世代 or 13世代、Drop2ではGPU非サポート ➢必要なスペックは使用する大規模言語モデルのパラメータにより変化 • 大規模言語モデル(LLM)として知られる事前に訓練されたデータモ デル ➢GGUFバイナリ形式のファイルをダウンロードしDominoデータディレクトリ に格納 • APIキー ➢Domino IQ へのアクセスに使用 • ドミノディレクトリの新しい設計 ➢ディレクトリプロフィールに Domino IQ サーバーを選択する設定あり • dominoiq.nsf ➢モデルに関する情報の共有に使用

Slide 12

Slide 12 text

ハードウェア (フォーラム) https://registration.hclpartnerconnect.com/domino145forum.nsf/topicThread.xsp?documentId=5306A95B4FEDE73185258BF000814131&action=openDocument

Slide 13

Slide 13 text

ハードウェア(公式ヘルプ) https://help.hcl-software.com/domino/14.5.0/admin/domino_iq_server.html

Slide 14

Slide 14 text

【参考】デモ環境のハードウェア • ホスト • CPU: 13世代 Intel Core i7-1360P 2.20 GHz(論理プロセッサ数:16) • RAM: 32.0GB • OS: Windows 11 Pro 24H2 • ゲスト (Hyper-V仮想マシン内の Domino IQ) • CPU: 8個の仮想プロセッサ • RAM: 16GB • OS: Windows Server 2022 Standard Evaluation 21H2

Slide 15

Slide 15 text

用意するもの(2) • 少なくとも16GBのRAMと4つのCPU ※記載場所により違いあり ➢Intel i7 または i9 12世代 or 13世代、Drop2ではGPU非サポート ➢必要なスペックは使用する大規模言語モデルのパラメータにより変化 • 大規模言語モデル(LLM)として知られる事前に訓練されたデータモ デル ➢GGUFバイナリ形式のファイルをダウンロードしDominoデータディレクトリ に格納 • APIキー ➢Domino IQ へのアクセスに使用 • ドミノディレクトリの新しい設計 ➢ディレクトリプロフィールに Domino IQ サーバーを選択する設定あり • dominoiq.nsf ➢モデルに関する情報の共有に使用 【参考】Quick start -- Domino IQ from my first installations https://registration.hclpartnerconnect.com/domino145forum.nsf/topicThread.xsp?documentId=3252

Slide 16

Slide 16 text

LLM(モデル)のダウンロード https://huggingface.co/lmstudio-community/Llama-3.2-3B- Instruct-GGUF コマンドプロンプトから以下を実行 Huggingface(ハギングフェイス)は AI モデルやデータセットを共有・ 利用することを目的としたプラットフォーム 研究者や開発者が作成した AI モデルやデータセットを公開し、他の ユーザーがそれらを利用して研究や開発を進めることができます mkdir c:\domino\data\llm_models cd c:\domino\data\llm_models curl -LO https://huggingface.co/lmstudio-community/Llama-3.2-3B-Instruct-GGUF/resolve/main/Llama-3.2-3B-Instruct-Q3_K_L.gguf Dominoデータディレクトリに llm_models サブディレクトリを作成し GGUF形式のファイルをハギングフェイスからダウンロードして格納

Slide 17

Slide 17 text

ダウンロードの様子

Slide 18

Slide 18 text

ダウンロードしたモデル(1731MB)

Slide 19

Slide 19 text

用意するもの(3) • 少なくとも16GBのRAMと4つのCPU ※記載場所により違いあり ➢Intel i7 または i9 12世代 or 13世代、Drop2ではGPU非サポート ➢必要なスペックは使用する大規模言語モデルのパラメータにより変化 • 大規模言語モデル(LLM)として知られる事前に訓練されたデータモ デル ➢GGUFバイナリ形式のファイルをダウンロードしDominoデータディレクトリ に格納 • APIキー ➢Domino IQ へのアクセスに使用 • ドミノディレクトリの新しい設計 ➢ディレクトリプロフィールに Domino IQ サーバーを選択する設定あり • dominoiq.nsf ➢モデルに関する情報の共有に使用 【参考】Quick start -- Domino IQ from my first installations https://registration.hclpartnerconnect.com/domino145forum.nsf/topicThread.xsp?documentId=3252

Slide 20

Slide 20 text

APIキー • APIキーは自分で決めるものです。これは LLAMA サーバを保護するためのものです。キーは起動 時にサーバに渡され、Domino から LLAMA コンポーネントへの全てのリクエストは Bearer トー クンを介してキーを認証に使用します。 • キーを生成する簡単な方法は以下のようなものです: 1. この式をテキストフィールドへ入力する 式: X:=“mysecretstring”; Y:=“anothersecretstring”; @ReplaceSubstring(@password (X)+@password (Y)+@password (X+Y); “(“: ”)”; ””) 2. X と Y に代入する文字列を変更する 3. Shift + F9 を押して関数を評価する ※もちろん他の API キーを選ぶこともできます

Slide 21

Slide 21 text

API キーの生成例 X:="domino145eap2"; Y:="notes145eap2"; @ReplaceSubstring(@password(X)+@password(Y)+@password(X+Y); "(":")";"") FB891C44EC3A46DEE7B61884CD9C499F3640662999F84C195954438DF241B78559AFA9627EE04A8F56D7F621AC428199 Shift+F9 テキストフィールド(メール作成画面の件名など)に上記の式を入力 式の結果に置き換わった値を APIキーとして利用

Slide 22

Slide 22 text

用意するもの(4) • 少なくとも16GBのRAMと4つのCPU ※記載場所により違いあり ➢Intel i7 または i9 12世代 or 13世代、Drop2ではGPU非サポート ➢必要なスペックは使用する大規模言語モデルのパラメータにより変化 • 大規模言語モデル(LLM)として知られる事前に訓練されたデータモ デル ➢GGUFバイナリ形式のファイルをダウンロードしDominoデータディレクトリ に格納 • APIキー ➢Domino IQ へのアクセスに使用 • ドミノディレクトリの新しい設計 ➢ディレクトリプロフィールに Domino IQ サーバーを選択する設定あり • dominoiq.nsf ➢モデルに関する情報の共有に使用 【参考】Configuring Domino IQ servers https://help.hcl-software.com/domino/14.5.0/admin/conf_config_dom_iq_server.html

Slide 23

Slide 23 text

ディレクトリプロフィールでDomino IQ サーバー名を指定して保存 ドミノディレクトリを開き、 Actions – Edit Directory Profile をクリック

Slide 24

Slide 24 text

ディレクトリプロフィール変更後のDomino再 起動時に dominoiq.nsf を自動作成

Slide 25

Slide 25 text

用意するもの(5) • 少なくとも16GBのRAMと4つのCPU ※記載場所により違いあり ➢Intel i7 または i9 12世代 or 13世代、Drop2ではGPU非サポート ➢必要なスペックは使用する大規模言語モデルのパラメータにより変化 • 大規模言語モデル(LLM)として知られる事前に訓練されたデータモ デル ➢GGUFバイナリ形式のファイルをダウンロードしDominoデータディレクトリ に格納 • APIキー ➢Domino IQ へのアクセスに使用 • ドミノディレクトリの新しい設計 ➢ディレクトリプロフィールに Domino IQ サーバーを選択する設定あり • dominoiq.nsf ➢モデルに関する情報の共有に使用 【参考】Configuring the Domino IQ database https://help.hcl-software.com/domino/14.5.0/admin/conf_confiig_domino_iq_db.html

Slide 26

Slide 26 text

Domino Administrator で 自動作成された dominoiq.nsf を開く

Slide 27

Slide 27 text

Modelsビューの Add Modelボタン

Slide 28

Slide 28 text

モデル名と.gguf ファイル名を指定して保 存

Slide 29

Slide 29 text

Configurationsビューの Add Configurationボタン

Slide 30

Slide 30 text

サーバー名とモデル名、ステータス、 ポート、APIキーを設定し、保存

Slide 31

Slide 31 text

まずは TLS なしで始める • まずは TLS なしで始めてみてください。TLS なしで動作する ようになったら、切り替えることができます。

Slide 32

Slide 32 text

【失敗例】Domino再起動後、Domino IQ が起動直後に終了する…

Slide 33

Slide 33 text

デバッグパラメータ notes.ini に DEBUG_DOMIQ=1 を追加

Slide 34

Slide 34 text

デバッグログ ※前回起動時のログが残らず、起動のたびに上書きされる

Slide 35

Slide 35 text

Configuration文書のSpecial parameters に 「-c 1024」を追加 https://registration.hclpartnerconnect.com/domino145forum.nsf/topicThread.xsp?documentId=341E

Slide 36

Slide 36 text

Domino IQ タスクの起動に成功 起動後の Show Tasks の結果 Database Server に 「DominoIQ : Model Loaded」 と表示される

Slide 37

Slide 37 text

Configuration文書に記載されていた URLへアクセスしてみた

Slide 38

Slide 38 text

Commandsビューの Add Commandボタン

Slide 39

Slide 39 text

Configuration、Command、System、 Maximum tokens を設定し、保存 この名前をLotusScript で指定

Slide 40

Slide 40 text

サンプルコード(1) Sub Initialize Dim ws As New NotesUIWorkspace Dim doc As NotesDocument Dim bodyText$ Set doc = ws.Currentdocument.Document bodyText = doc.Getfirstitem("Body").Text DominoIQRequest "TranslationJPtoEN", bodyText End Sub 開いている文書の Body フィールドにあるテキスト抽出して Domino IQ に日本語への翻訳を指示するコマンドへテキストを渡す

Slide 41

Slide 41 text

サンプルコード(2) Sub DominoIQRequest(szCommand As String, szQuery As String) Dim session As New NotesSession Dim db As NotesDatabase Dim llmreq As NotesLLMRequest Dim llmres As NotesLLMResponse Set db = session.CurrentDatabase Set llmreq = session.CreateLLMRequest() Set llmres = llmreq.Completion (db.server, szCommand, szQuery) If (llmres Is Nothing) Then MessageBox "Error: No NotesLLMResponse“ Else If (llmres.FinishReason = LLM_FINISH_REASON_STOP) Then MessageBox "Content(" + llmres.Role + "): " + llmres.Content End If End If End Sub 【NotesLLMRequest クラスの Completion メソッド】 Domino IQ サーバーで稼働する大規模言語モデル(LLM) にチャット完了要求を送信する 【NotesLLMResponse クラスの Content プロパティ】 LLM によって生成された応答メッセージ 【NotesLLMResponse クラスの Role プロパティ】 リクエストを送信するロール (system、user、またはassistant) メッセージに関連 付けられたロール。通常、NotesLLMRequest.completion メソッドによって生成 された場合は「assistant」になります。値は、使用されている LLM に基づいて異 なる場合があります。

Slide 42

Slide 42 text

NotesLLMRequest.Completion 戻り値は NotesLLMResponse のオブジェクト

Slide 43

Slide 43 text

NotesLLMResponse.FinishReason

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

名前:なし 種類:ほ乳類 タイプ:イヌ科

Slide 46

Slide 46 text

デモしましょう!

Slide 47

Slide 47 text

EAP2版 Domino IQ まとめ • Domino IQ への呼び出しはNRPCを経由 ➢開発者はHTTP URLや認証情報を意識しない • Dominoiq.nsfに登録したコマンドを使用 実装の簡素化を目指している?

Slide 48

Slide 48 text

制限の緩和に期待(フォーラム) • HCLは、開発者が LLM API へ json などを使用して直接コマン ドを投入することで制限(事前にコマンドとして登録するこ と)なしに利用したいと考えていることを認識している

Slide 49

Slide 49 text

今後に期待しましょう! • Domino はトレーニング済みの LLM を稼働させるのみ ➢現状 LLM のトレーニングは考慮されていない ➢LLM は Domino 専用のトレーニングを行っていない。そのため、必要 に応じて自動で AdminP へ要求させたりDominoコンソールへコマン ド投入させて、サマリーした結果を返す、といった事は現状困難 • LLM への要求はテキスト、レスポンスもテキストで得る ➢データベースやビュー、文書のオブジェクトを要求に渡せない。

Slide 50

Slide 50 text

スライドの最後