Articoli e notizie

Il blog di Eld Engineering

Eld Engineering Srls

Home > Articoli > DominoIQ & Lotuscript

DominoIQ & Lotuscript

da | 28 Ago 25 | Domino, Domino e Notes 14, Sviluppo Domino e Notes

E ora vediamo come LotusScript dialoga con DominoIQ e quindi con un modello LLM.

Click here for the english version.

In un precedente articolo avevo descritto come mi sono configurato un ambiente di test per DominoIQ . La velocità non è esattamente il suo forte ma è funzionale ed ho potuto fare alcune prove utilizzando le due nuove classi LotusScript che vengono fornite con la versione 14.5 di Domino:

  • NotesLLMRequest
  • NotesLLMResponse

Prima però di descrivere queste due classi si deve capire bene il meccanismo che lega i Comandi disponibili ed i Prompt nel database di configurazione di DominoIQ (dominoiq.nsf)
In questo database un Comando è in pratica una keyword (che poi viene utilizzata in LotusScript, vedremo come) che contiene i parametri usati per instaurare il dialogo con il motore di AI .
Il più importante è quindi il prompt da usare (che deve essere presente), si possono poi specificare quale Modello LLM usare (se ne ho installato più di uno) , il numero massimo di Tokens e la Temperatura .

dominoIQ lotusscript

Come accennavo il prompt da inviare al motore di IA deve essere già presente e questa è probabilmente la parte più importante: sappiamo tutti che l’accuratezza di un prompt ha grande effetto sul risultato finale . Come vedete dall’immagine sopra il comando prevede l’utilizzo del prompt “PromptRispondiItaliano” che è definito in questo modo:

dominoIQ lotusscript

E’ ovvio che a questo punto possiamo sbizzarrirci a creare accoppiate Comando/Prompt a seconda delle nostre necessità .

Qual è il vantaggio di questo tipo  di configurazione? A partire dallo stesso prompt che invio all’ AI posso definire più comandi che, ad esempio, usino LLM diversi a seconda delle mie esigenze o preferenze . Oppure utilizzando lo stesso modello posso avere Temperature diverse che influenzano quindi il risultato.

Quindi posso avere questi due comandi:

dominoIQ lotusscript

Che puntano allo stesso prompt ma usano Modelli diversi.

 

Passiamo ora a vedere come utilizzarli con LotusScript.

In questo esempio ho creato un pulsante IQ all’interno del form Memo nella mia posta.

Questo pulsante esegue due azioni :

  • interroga il database di configurazione di DominoIQ (dominoiq.nsf) per avere la lista dei comandi disponibili e li propone all’utente per permetterne la scelta
  • invia al motore id IA la richiesta utilizzando il comando scelto ed il testo dell’email

Per interrogare il db di configurazione utilizzo questa sequenza

                Set llmreq  = session.CreateLLMRequest()
                availCmds = llmreq.GetAvailableCommands("server/eldeng/it")
                response = workspace.Prompt (PROMPT_OKCANCELLIST, "Seleziona un comando","Selezione", availCmds(0), availCmds)

cioè istanzio una richiesta LLM e poi uso il metodo .GetAvailableCommands con argomento il nome del mio server. La risposta viene memorizzata nell’array availCmds e viene poi presentata all’utente con workspace.prompt .

dominoIQ prompt

A questo punto devo recuperare il testo dell’email con

                Set mailDoc = workspace.CurrentDocument
                Set body = maildoc.Document.GetFirstItem("Body")

E poi passare il tutto al motore di IA per visualizzare la risposta in una messagebox con:

                Set llmres = llmreq.Completion("server/eldeng/it", response, sMailThread)
                If (llmres.FinishReason = LLM_FINISH_REASON_STOP) Then
                               Messagebox llmres.Content

che presenta questa risposta:

Domino IQ reply

A questo punto abbiamo visto come interagire da Notes a Domino e quindi ad un modello LLM . Qual’è il limite?

Fino a qui possiamo passare domande di varie tipo al motore di AI ma tutte le risposte dipenderanno dal modello LLM che stiamo usando e soprattutto da come e quando è stato addestrato. Poichè stiamo utilizzando in realtà un motore ed modello esterni a Domino non c’è nessun modo di avere risposte basate sui dati nei vari database di Domino presenti sul server: il LLM non conosce nulla dei nostri dati e le risposte che ci fornisce non sfruttano questi dati .

La soluzione ? Si chiama RAG ma al momento è un attività esterna a Domino in quanto legata proprio al modello LLM che usiamo.

domino

0 commenti