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 .

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:

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:

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 .

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:

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.


0 commenti