Come testimonia il rilascio dell’applicazione per MacOS di ChatGPT, sembra che la mera interazione sotto forma di Chat stia raggiungendo i suoi limiti e si comincia a pensare come fornire informazioni ai modelli di AI generativa in modo più integrato nel flusso di lavoro, consentendo al modello di usare informazioni di contesto utili ad orientare il contenuto della risposta.
Come funziona Oraculum: il ruolo dei vector database
Come esempio di questo tipo di interazione vediamo come usando il framework Open Source Oraculum per integrare l’uso di AI generativa nella gestione della linea di comando: i modelli LLM sono molto efficaci nel gestire richieste di natura sistemistica, e l’abilità di integrare le conoscenze generali sul funzionamento dei sistemi IT con informazioni relative al proprio ambiente in un vector database consente di ottenere supporto nel contesto dei propri sistemi.
Introduzione ad Oraculum
Oraculum è un sistema Open Source basato sul vector database Weaviate in cui vengono memorizzati dei fatti, ovverosia un titolo e un contenuto testuale decorato con alcuni metadati utilizzati nella selezione e nella gestione della conoscenza, tra cui la tipologia di fatto, la categoria, dei tag, ed un’eventuale citazione alla fonte del fatto.
I fatti sono indicizzati da Weaviate utilizzando i vettori di embeddings generati da modelli AI come quelli di OpenAI. La conoscenza memorizzata in Oraculum può essere usata da una Sibylla, un sistema che utilizzando la richiesta che proviene dal prompt, la memoria della conversazione, e dai fatti rilevati recuperati dal vector database genera un prompt per un modello LLM, come ad esempio GPT-3.5, che genererà la risposta a partire dalla propria conoscenza (se consentito dal prompt) e dalle informazioni contenuti nei fatti aggiunti al prompt.
Pur essendo un framework di programmazione di sistemi RAG è possibile utilizzare Oraculum anche usando la command line con PowerShell Core su tutte le piattaforme supportate (Linux, Windows, MacOS, ecc.).
Come usare Oraculum
Per cominciare ad usare Oraculum con PowerShell è sufficiente seguire le istruzioni della demo OraculumLocalBox ed eseguire il notebook interattivo pwshplayground. Dopo aver ottenuto delle chiavi per invocare le API di OpenAI o su Azure (è anche possibile usare modelli locali usando ollama), si tratta di installare Docker, mettere in esecuzione un’istanza di Weaviate, e installare il modulo PowerShell di Oraculum.
Una volta importato il modulo di Oraculum ci si può connettere e, per la prima esecuzione, usare il cmdlet Reset-Schema per inizializzare il database vettoriale. Dopo aver inizializzato il database il numero totale di fatti deve essere 0.
I cmdlet della libreria utili alla gestione della conoscenza sono:
- Aggiungere un fatto alla base di conoscenza: Add-Fact
- Rimuovere un fatto dalla base di conoscenza: Remove-Fact
- Mostrare i fatti nella base di conoscenza: Get-Facts
- Selezionare i fatti con filtri sugli attributi: Find-Facts
- Verificare quali fatti siano rilevanti per una richiesta: Find-RelevantFacts
- Interrogare il modello LLM senza usare i fatti: Get-GPTAnswer
- Avviare una sessione con una Sibylla: New-SibyllaSession
L’utilità dell’AI nel contesto della command line
L’uso della console è ormai associato all’hacker nel senso comune, ma in realtà la gestione di servizi che non siano quelli del proprio sistema è decisamente più efficace scrivendo piccoli script piuttosto che usare un’interfaccia grafica. La shell è l’ambiente di automazione e coordinamento per eccellenza ma nel corso di decenni è diventato estremamente complesso. Anche le procedure, i file di configurazione di un sistema, e molti altri aspetti dipendono significativamente da moltissimi fattori, inclusi il sistema in uso e il contesto in questo opera.
La possibilità di invocare un modello LLM direttamente dalla command line è di per sé molto utile e può risparmiare parecchio tempo nella ricerca di informazioni che in precedenza avrebbe portato con tutta probabilità ad una discussione su StackOverflow:
Il fatto che il modello abbia già così tanta conoscenza generica sui sistemi ci aiuta moltissimo; infatti, non dobbiamo addestrare il nostro assistente personale da zero, possiamo limitarci a dare le informazioni di contesto necessarie caricando fatti specifici all’interno della nostra base di conoscenza che indichino gli aspetti che caratterizzano i nostri sistemi.
Aggiungiamo quindi qualche fatto che descrive una semplice rete:
Utilizzando una Sibylla la cui configurazione esamineremo a breve possiamo ripetere la domanda sulla stampante ed ottenere istruzioni decisamente più contestualizzate:
Come si nota la risposta ora è più dettagliata e anche meno introduttiva: la presenza nel prompt di fatti “sistemistici” inseriti da Sibylla aiuta anche il modello ad adottare risposte meno introduttive come, ad esempio, installare CUPS.
Definire il comportamento della Sibylla
Come abbiamo detto una Sibylla ha il compito di assemblare un prompt per un modello LLM partendo da un prompt di base e aggiungendo informazioni recuperate da Oraculum. In questo contesto abbiamo l’opportunità di condizionare il comportamento del modello non solo fornendo ulteriori informazioni ma anche chiedendo un comportamento specifico.
La Sibylla usata nell’esempio usa il seguente prompt di base: “Sei un tecnico informatico che da indicazioni su come svolgere procedure interne per le operations e il riavvio dei sistemi e rispondi a domande sull’architettura dei sistemi. Per rispondere utilizzerai solo fatti veri e le informazioni sui fatti in XML che seguiranno. Se usi informazioni da elementi XML che contengono l’attributo ‘cit’ includerai la citazione tra parentesi quadre. Se la domanda riguadra una procedura risponderai con la checklist da seguire, altrimenti spiegando le questioni architetturali.”
Si tratta di un prompt molto operativo che privilegia la generazione di checklist per svolgere compiti. Con poco sforzo sarebbe possibile modificarlo per chiedere la generazione di script qualora le domande fossero più orientate a supportare l’automazione (magari in un particolare linguaggio).
Già con i pochi fatti a disposizione è possibile far ragionare il modello sulla nostra rete:
Integrazione di Oraculum con PowerShell: una guida pratica
Ora che sappiamo che i modelli LLM funzionano e forniscono risposte spesso corrette, ma che vanno comunque verificate, è arrivato il momento di integrarne le funzioni all’interno dei flussi di lavoro, come fanno Copilot 365 e Gemini nei sistemi Cloud. OpenAI ha cominciato questo percorso con l’applicazione per MacOS, e Microsoft ha annunciato la versione personale di Copilot che fa uso dei nuovi processori Intel degli AI PC.
Molta della conoscenza sarà quindi definita localmente e usata per condizionare le risposte fornite dal modello di AI, è possibile usare framework come Oraculum per fornire la conoscenza specifica e definire strumenti come quello che abbiamo appena esplorato per fare lo stesso senza dover aspettare che i big lo facciano per noi. In ogni caso è evidente come la conoscenza rilevante sia quella specifica e come il modello fornendo quella generica consenta di concentrarsi su poche informazioni inaugurando una nuova era di gestione della conoscenza in cui non è a carico di un utente fornire tutta la conoscenza al sistema per poter operare.