HCL heeft met Domino 14.5 ondersteuning toegevoegd voor het uitvoeren van een AI-inferentie engine in de Domino backend: Domino IQ. Met deze functie kunnen nieuwe LotusScript klassen AI-query’s voor het genereren van tekst naar een Domino server sturen en antwoorden terughalen van de server, veilig binnen een Domino-omgeving.

Deze functie wordt ondersteund op Windows- en Linux Domino servers.
De Domino IQ server kan een lokale inferentie engine uitvoeren op NVIDIA GPU-hardware of verbinding maken met OpenAI V1-compatibele externe eindpunten.
Domino IQ installeren
De Domino IQ installatie staat los van Domino. Er moet een .zip-bestand gedownload worden van het HCL Software portaal en worden uitgepakt in de Domino programmamap.
De software is op het portaal te vinden onder de knop HCL Domino en dan Tools, Connectors and Integrators en vervolgens Llama Server for Domino IQ 14.5.
Na het plaatsen van de bestanden op de Domino is een herstart nodig.

Notitie:
Deze software is alleen beschikbaar voor Windows- en Linux 64-bit Domino-servers waarop hardwarematige NVIDIA GPU-kaarten zijn geïnstalleerd. HCL raadt NVIDIA GPU-hardware aan met een rekencapaciteit van 8.0 of hoger.
Domino IQ activeren
Om de Domino IQ server te activeren is het nodig om in de Domino Directory het profiel document aan te passen. Op het tabblad Domino IQ kan hier aangegeven worden of de instellingen voor een Server of een Groep zijn, de servers(s) of groep kan gekozen worden en wat de beheerserver is.

Domino IQ instellen
Instellingen aan Domino IQ worden gemaakt in de Domino IQ database (dominoiq.nsf) die automatisch wordt aangemaakt wanneer IQ ingeschakeld is.
Als eerste is het nodig om een LLM Model te kiezen. Een LLM (Large Language Model) is een geavanceerd type kunstmatige intelligentie dat getraind is op enorme hoeveelheden tekstdata om menselijke taal te begrijpen, te verwerken en te genereren. Domino IQ kan alleen omgaan met GGUF type bestanden. Het model dat u kiest hangt af onder andere af van het doel en de taal. Zorg ervoor dat de server meer systeem geheugen heeft dan de grootte van het model omdat dit model in het geheugen ingelezen wordt.
Hugging Face
HCL heeft in de documentatie een website, https://huggingface.co staan waar modellen gezocht kunnen worden en raad de volgende stappen aan:
- Ga naar het tabblad Modellen op de Hugging Face-site: https://huggingface.co/models
- Filter de downloadbare GGUF-modellen door Tekst genereren te selecteren onder taken, GGUF onder Bibliotheken, een specifieke taal en specifieke licentietypen onder Licenties. Hier is een voorbeeld van de resultaten als u TextGeneration GGUF-bestanden in het Engels filtert met een MIT-licentie.
- Selecteer een model dat past bij jouw toepassingsbehoeften. Als je de licentie llama.3.x hebt geselecteerd, kan je bijvoorbeeld het model llmstudio-community/Llama-3.2-1B-Instruct-GGUFf kiezen.
- Selecteer op dezelfde pagina een van de beschikbare bit-gekwantiseerde modellen. HCL raad aan om 3b- of 7b llama3.x-modellen te gebruiken met 3-bits of 4-bits kwantisering niveaus, die veel kleiner zijn om te laden met een acceptabele tekst generatie kwaliteit. Dit voorbeeld toont de metadata op de modellen.
In ons voorbeeld hebben wij gezocht naar een Nederlandstalig model en vonden Llama-3-8B-dutch.i1-Q4_K_M.gguf.
Bewaar het internet adres van het bestand om dit in de volgende stap te gebruiken, of download het bestand zelf en sla het op in de sub map “llm_models” in de Domino data map op de server.
- Open de Domino IQ-database op de Domino IQ beheerserver.
- Klik in de weergave Models op Model toevoegen.
- Voeg de naam en beschrijving toe voor het model dat je wil gebruiken.
- Selecteer Ingeschakeld in het veld Model downloaden wanneer je dit niet al handmatig hebt gedaan.
- (Optioneel) Geef in het veld Download URL het internet adres op waarvandaan je het model wil downloaden.
- (Optioneel) In het veld SHA 256 Hash kun je de hash opgeven om die van het downloadmodelbestand te verifiëren.
- Sla het Model configuratie document op.
- Het downloaden van LLM-modellen via HTTPS kan optioneel ook worden geconfigureerd met behulp van een geverifieerde HTTPS-proxy zoals squid of NGINX-proxy. Gebruik daarvoor de knop Algemene instellingen in de DominoIQ-database
Wanneer het bestand handmatig in de llm_models is geplaatst en het Model document geeft niet de status “Model available” aan is het mogelijk dit met de knop “Modify model status” aan te passen.

Configurations document
De volgende stap is een configuratie document in te stellen. Er zijn twee keuzes, Local en Remote. Voor de verschillende opties staat alles goed beschreven in de documentatie van HCL, daar gaan we hier niet verder op in. Wij kiezen hier voor Local, kiezen de naam van onze demo server, het Model dat in de vorige stap is gekozen, zetten de status op Enabled en laten voor nu de poort op 8080 staan.

Op het tabblad Advanced kiezen we voor een Temperature van 0.3. Voor het special paramameters veld ontbreekt iedere uitleg. Wel is het het e.a. te vinden op Overview | Llama API

Notitie:
Een temperatuur van 0 of dicht bij 0 resulteert in zeer voorspelbare, consistente en deterministische antwoorden (het model kiest altijd de meest waarschijnlijke woorden). Dit is geschikt voor taken die feitelijke of nauwkeurige resultaten vereisen.
Een temperatuur van 1 of hoger leidt tot meer willekeurige, diverse en creatieve resultaten, omdat het model een bredere selectie van minder waarschijnlijke woorden in overweging neemt.
Een LLM System Prompt document toevoegen
Het LLM System Prompt document bevat een ‘systeemprompt’, een type opdracht dat wordt gebruikt om de AI Inferencing-engine die een specifiek model uitvoert, te begeleiden om een juist antwoord op de vraag terug te geven. Domino IQ heeft een ingebouwd systeempromptdocument met de naam “StdSummarizeEmailThread” dat wordt gebruikt door de Mail-sjabloon.
Omdat wij een Nederlandstalige set testen hebben we de Prompt in zowel Nederlands als Engelse getest. Dit maakte geen verschil in de antwoorden. Google AI gaf op de vraag of een systeem prompt in de taal van het Model ingevoerd moet worden het antwoord “U kunt de system prompt in de gewenste taal schrijven, en het model zal waarschijnlijk goed presteren, zeker voor algemene taken. Voor optimale prestaties en consistentie (vooral bij complexe taken) wordt vaak aangeraden om de system prompt in het Engels te schrijven”
Wij hebben de Prompt dan ook standaard gehouden voor nu.

LLM Command document
In de Domino IQ database staat al een LLM Command document voor StdSummarizeEmailThread. Wij hebben hier alles standaard gelaten. Wel is er wat getest met Maximum tokens omdat in onze test het antwoord steeds wordt afgebroken en de Temperature om de verschillen in antwoorden te zien. Voor deze demo staan de tokens op 2048 en de temperatuur op 0.3.

Nieuwe klassen in de HCL Domino Designer voor IQ
Vanaf 14.5 introduceert HCL Domino Designer twee nieuwe klassen, NotesLLMRequest en NotesLLMResponse voor LotusScript, LLMReq en LLMRes voor Java.
Deze klassen zijn speciaal bedoeld om generatieve AI query’s naar een Domino-server te verzenden en antwoorden terug te halen.
Voorbeeld toepassing
Om een indruk te krijgen van de toepassing hebben wij een stukje voorbeeld code uit de documentatie van HCL gebruikt om in een nieuwe knop op het Memo formulier van de mail te plaatsen.
Sub Click(Source As Button)
On Error Goto processError
Dim nSession As NotesSession
Dim nLlmreq As NotesLLMRequest
Dim nLlmres As NotesLLMResponse
Dim vAvailCmds As Variant
Dim nWorkspace As NotesUIWorkspace
Dim nMailDoc As NotesUIDocument
Dim sMailThread As String
Set nWorkspace = New NotesUIWorkspace
Set nSession = New NotesSession
Set nMailDoc = nWorkspace.CurrentDocument
Set nLlmreq = nSession.CreateLLMRequest()
vAvailCmds = nLlmreq.GetAvailableCommands("MRPOWERZBOOK/INECO")
If (Isempty(vAvailCmds) And Len(vAvailCmds(0)) > 0) Then
Msgbox "No commands available.", 16, "Error"
End If
nMailDoc.Editmode = True
sMailThread = nMailDoc.Fieldgettext("Body")
Set nLlmreq = nSession.CreateLLMRequest()
Set nLlmres = nLlmreq.Completion("MRPOWERZBOOK/INECO", "StdSummarizeEmailThread", sMailThread)
If (nLlmres.FinishReason = LLM_FINISH_REASON_STOP) Then
Msgbox nLlmres.Content, 64, nMailDoc.FieldGetText("Subject")
End If
Exit Sub
processError:
Msgbox Error$ & " on line " & Erl, 16, " Error"
Exit Sub
End Sub
In de Memo hebben wij een willekeurige tekst geplaatst over Arnhems dialect en door de nieuwe knop te gebruiken vragen wij aan de Domino IQ server om een samenvatting te maken van deze tekst.
De samenvatting blijkt een aantal keren best redelijk te kloppen met een deel van de tekst en richt zich voornamelijk op het echte onderwerp zonder het verhaal er om heen.

Echter herhaaldelijk de samenvatting vragen resulteert in bijzondere antwoorden. Van een antwoord waarin gemeld wordt wat de opdracht is, tot een compleet uit de lucht gegrepen tekst over niet bestaande familieleden, of plaatsen in België waar ook een dialect gesproken wordt.

Daarbij valt op dat het antwoord steeds wordt afgebroken. Er zijn waarschijnlijk parameters die dit kunnen beïnvloeden, maar de documentatie is in dat opzicht veel te beperkt.
Het is ons nog onduidelijk of dit nu aan het gekozen Model ligt of aan de IQ server instellingen.
Standaard functie in mail sjabloon StdR145Mail
In het standaard mail sjabloon StdR145Mail met de titel “Mail (R14.5)” en bestandsnaam “mail145.ntf”, zitten twee knoppen die Domino IQ gebruiken, “Summarize” en “Domino IQ Reply with History only”.
De “Summarize” knop roept een Notes agent op waar de LotusScript code in de agent zelf zit. De code doet in basis het zelfde als in ons voorbeeld. De knop is te vinden boven een mailbericht in het actieknoppen menu onder de drie puntjes rechts, “more”.

Gelukkig voor ons geeft deze code het zelfde resultaat als het voorbeeld.

De “Domino IQ Reply with History only” knop is ook alleen te vinden in het mailbericht, in het actieknoppen menu onder “Reply”. De code achter de knop roept ook een LotusScript Agent aan, hier zit de code echter in een Script bibliotheek, waar eigenlijk ook de code van de “Summarize” functie verwacht zou worden. Maar dat is een technisch detail.

Hier is de antwoord tekst duidelijk beter en ook niet afgekapt. Wellicht niet direct als antwoord te gebruiken, maar met minimale aanpassingen is er toch snel een antwoord beschikbaar.

Voorlopige conclusie
HCL Domino IQ is nog een prille ontwikkeling binnen Domino bijvoorbeeld doordat het nog niet opgenomen is in de Domino server installatie en zowel de configuratie en de ontwikkel methodes nog wat verdieping nodig hebben.
Het is echter een hele mooie toevoeging aan de Domino server met veel mogelijke toepassingen! Wij hebben in ieder geval genoeg inspiratie om hier verder mee aan de slag te gaan!
Bronnen:
HCL Documentatie: Domino IQ
HCL Designer: NotesLLMRequest (LotusScript) en NotesLLMResponse (LotusScript)
LLaMA op GitHub: ggml-org/llama.cpp: LLM inference in C/C++
LLaMa Developer: Overview | Llama API
Symbio6: 8 stappen om een goede AI-prompt te schrijven















































