Introduzione
TuaGPT è un client desktop per modelli di linguaggio (LLM) che si connette a server compatibili con l'API OpenAI (Ollama, TuaGate, LM Studio, ecc.). Offre funzionalità avanzate come RAG (Retrieval-Augmented Generation), ricerca web, supporto multimodale e molto altro.
Requisiti
- Windows 10/11
- .NET 8.0
- Un server LLM (Ollama, TuaGate, LM Studio, ecc.)
Server e API supportate
TuaGPT è compatibile con:
- Ollama – Modelli locali e vision (LLaVA, Llama, ecc.)
- TuaGate – Gateway per accesso a OpenAI, Anthropic, ecc.
- LM Studio – Modelli locali con API OpenAI-compatible
- OpenAI API – GPT-4, GPT-3.5 e altri
Interfaccia principale
L'interfaccia è organizzata in diverse aree:
Barra strumenti superiore
- Aggiorna Modelli – Ricarica l'elenco dei modelli disponibili dal server
- Selettore modelli – Scegli il modello LLM da utilizzare
- Test LLM – Verifica che il modello selezionato risponda correttamente
- RAG Avanzato – Apre il sistema di gestione documenti RAG
- Gestione Prompt – Gestisci template di prompt riutilizzabili
- Condivisione – Gestione condivisione documenti e conversazioni
- Esporta Chat – Esporta conversazioni in vari formati
- Dashboard ONNX – Gestione modelli ONNX (embedding, traduzione, ecc.)
- Impostazioni – Configurazione server, parametri LLM, tema, ecc.
- Info – Informazioni su licenza e versione
Barra di stato inferiore
Mostra in tempo reale: modello caricato, stato connessione server, OCR, RAG, file contestuali, ricerca web. Il pulsante Interrompi appare durante operazioni lunghe per annullarle.
Layout generale
L'interfaccia è divisa in tre aree principali: pannello sinistro (lista conversazioni con filtri), area centrale (messaggi e campo di input), pannello destro (file contestuali e traduzione).
Chat e conversazioni
Creazione conversazioni
- Conversazione normale – Salvata nel database, con QueryBoost e titolo automatico
- Conversazione effimera – Temporanea, non salvata, senza QueryBoost
Pannello conversazioni (sinistra)
- Filtra per data – Mostra chat per intervallo temporale
- Filtra per gruppo – Filtra per gruppo assegnato
- Ordina Chat – Ordine ascendente/discendente
- Gestione Archivio – Visualizza e gestisci chat archiviate
- Cancella Tutte – Elimina tutte le chat (irreversibile)
Menu contestuale sulla lista chat
- Rigenera Titolo Chat
- Modifica Titolo
- Aggiungi Note / Elimina nota
- Cancella Chat / Archivia Chat
- Assegna al gruppo / Rimuovi dal gruppo
Area conversazione
- Query Tune (QueryBoost) – Migliora automaticamente la richiesta prima dell'invio
- Abilita contesto RAG – Include i documenti indicizzati nel contesto
- Abilita ricerca web – L'LLM può cercare su internet (richiede estensione browser)
- Ricerca profonda – Visita i link dei risultati ed estrae contenuto completo
- Inserisci Prompt – Usa template da Gestione Prompt
- Apri Editor – Modifica testo in un editor esterno
- Svuota – Svuota la chat corrente o interrompe lo streaming
- Immagine – Aggiungi immagini al messaggio (modelli vision)
Menu contestuale chat (label info)
- Visualizza consumi token – Query, prompt, contesto RAG, totale
- Mostra dati chat – Torna alla vista standard
- Copia Dati – Copia negli appunti
Azioni sui messaggi (ChatDisplayBox)
Se abilitato: thumbs up/down, rigenera risposta, menu con copia selezione, copia tutto, copia su Note Chat.
Formattazione messaggi
La chat supporta Markdown completo, tabelle, grafici ASCII, LaTeX, codice con evidenziazione sintattica, link cliccabili. Configurabile tramite markdown_symbols.json.
Note Chat
Ogni conversazione può avere note associate: testo formattato (grassetto, corsivo, sottolineato), allegati e riferimenti. Le note sono accessibili dal menu contestuale della lista chat. Puoi aggiungere contenuti al contesto della chat direttamente dalle note.
Sistema RAG (Retrieval-Augmented Generation)
Il RAG permette di indicizzare documenti e immagini per arricchire le risposte dell'LLM con contenuti pertinenti. Il flusso è: File → DocumentProcessor → Chunking → Embeddings → SQLite → Ricerca Semantica.
Formati supportati
- Documenti: txt, pdf, docx, doc, odt, ods, odp, xlsx, md, csv, html
- Immagini: png, jpg, jpeg, bmp, tiff, gif, webp (con OCR Tesseract)
Operazioni principali
- Carica file – Singoli file o cartelle intere (drag & drop supportato)
- Elabora – Estrazione testo, chunking, generazione embeddings, indicizzazione nel database vettoriale
- Reset – Rigenera chunk e embeddings con parametri attuali (utile dopo aver modificato chunk size o overlap)
- Elimina – Rimuove file e relativi dati dal database (irreversibile)
- Pausa/Riprendi – Durante elaborazione batch
Parametri configurabili
- Dimensione Chunk (100–3000) – Valori bassi = risposte più mirate; valori medi (800–1500) consigliati; valori alti = elaborazione più veloce
- Overlap (0–500) – Caratteri sovrapposti tra chunk per preservare continuità; consigliato 100–200
- Max Risultati (1–50) – Chunk inviati all'LLM come contesto; consigliato 8–15
- Soglia Similarità (0.01–1.00) – Filtro per rilevanza; consigliato 0.25–0.40
OCR per immagini
Le immagini vengono processate con OCR (Tesseract). Lingue: italiano + inglese. Soglia confidenza configurabile. Il modello di embedding è necessario per la ricerca semantica: configuralo dalla Dashboard ONNX.
Ricerca semantica
Campo di test per verificare la ricerca sui documenti indicizzati prima di usarla in chat. Mostra chunk trovati con nome file, punteggio di similarità e testo estratto.
Database e archiviazione
I dati sono salvati in TuaGPT_Data.db (SQLite). Il database supporta fino a ~1.000.000 file. Ottimizzazioni automatiche: VACUUM, ANALYZE, indici.
Ricerca Web
Quando attivata, l'LLM può richiedere ricerche su internet tramite un tool (web_search). Richiede un modello che supporti i function call (Llama, Mistral, GPT, Claude, ecc.).
Configurazione
- Abilita Tool per LLM – Attiva i tool (incluso web_search)
- Estensione Browser – Usa l'estensione per ricerche reali (senza API key)
- Ricerca profonda – Visita i link dei risultati ed estrae contenuto completo (2–4 ricerche, report strutturato)
- Max link da visitare (1–10) – Numero massimo di link visitati nella ricerca profonda
Estensione browser
L'estensione comunica con TuaGPT tramite polling: TuaGPT accoda job (navigate, search, extract), l'estensione li preleva ogni 2 secondi da GET http://localhost:8765/browser/jobs, li esegue nel browser e invia i risultati con POST http://localhost:8765/browser/result. Porta default: 8765. Token di autenticazione obbligatorio (header Bearer).
Configurazione estensione: Impostazioni → Tool LLM → Estensione Browser. Usa "Copia" per il token e incollalo nel popup dell'estensione. "Test Connessione" verifica il server; "Test Navigazione" esegue un test end-to-end.
L'estensione ha priorità sul fallback DuckDuckGo/API: se non risponde, TuaGPT usa metodi alternativi.
Contenuti multimodali
TuaGPT supporta l'invio di immagini insieme al testo quando si usa un modello vision (es. LLaVA, llama3.2-vision). Le immagini vengono convertite in base64 e inviate nel formato richiesto dall'API (Ollama, LM Studio).
Modelli vision supportati
- llava – Large Language and Vision Assistant (consigliato)
- llava:13b – Versione più grande e precisa
- llava:7b – Versione più leggera
- bakllava – Alternativa a LLaVA
- llama3.2-vision – Modello vision di Llama 3.2
Formati immagine
jpg, png, gif, bmp, webp
Utilizzo
- Pulsante Immagine nell'area messaggio
- Drag & drop – Trascina immagini dall'Esplora risorse sull'area conversazione o sul pannello file contestuali
- Le immagini vengono ridimensionate automaticamente se superano 1920×1080 (per ottimizzare la trasmissione)
File contestuali
Documenti e immagini possono essere trascinati sul pannello "File Contestuali" per aggiungerli al contesto della chat corrente. Formati supportati: txt, pdf, docx, odt, xlsx, md, csv. Se non c'è conversazione attiva o è effimera, viene creata automaticamente una nuova conversazione per i documenti. Feedback visivo (evidenziazione area) durante il trascinamento. Il drop è bloccato durante lo streaming.
Gestione Prompt e template
Creazione e gestione di prompt riutilizzabili con variabili. Il Prompt Wizard guida nella definizione di template strutturati.
Prompt Wizard – campi
- Nome e descrizione – Identificativo e uso interno
- Introduzione – Parte attiva inviata al modello LLM
- Categoria – Es. Scrittura, Analisi, Codice
- Tipo attività – Classificazione del task
- Contesto e dominio – Es. Marketing, Tecnologia, Medicina
- Tono e stile – Formale, informale, tecnico, ecc.
- Formato output – Struttura desiderata della risposta
- Lunghezza – Breve, media, lunga
- Variabili – Placeholder {NOME} con validazione (testo, numero, data, scelta, email, URL, regex personalizzata)
Prompt di sistema predefiniti
Cartella SystemPrompt/ con prompt per: Analisi e ricerca (AnalistaDecisionale, AnalistaDocumenti, RicercatoreTematico), Personale e apprendimento (CoachProduttivita, PreparatoreEsami, TutorSocratico), Professionale e business (AssistenteHR, AssistenteRiunioni, ConsulenteStartup), Scrittura e contenuti (CopywriterMarketing, RevisoreTesti, TraduttoreTecnico), Specialistici (AssistenteLegale, AssistenteMedicoSanitario, ConsulenteFiscale), Sviluppo e tecnico (DocumentatoreTecnico, PairProgrammer, RevisoreCodice), oltre a RAG, WebSearch, QueryBoost, ChatSystemPrompt.
Sistema di condivisione
Condivisione on-demand di documenti RAG e conversazioni tramite TuaGate. I vettori restano nel database locale del proprietario; TuaGate memorizza solo metadata; solo i risultati delle ricerche vengono trasmessi.
Flusso operativo
- Client A registra risorse su TuaGate (con callback_url)
- Client B esegue query → TuaGate invia a Client A
- Client A cerca localmente e restituisce risultati
- TuaGate aggrega e restituisce a Client B
Interfaccia Gestione Condivisione
- Tab Documenti RAG – CheckBox per ogni documento da condividere
- Tab Conversazioni – CheckBox per ogni conversazione
- Sincronizza – Invia aggiornamenti a TuaGate
- Callback server – Porta default 8765, supporto HTTP e HTTPS
Configurazione
- Callback URL manuale – Per reti diverse o domini
- HTTPS – Certificato SSL con thumbprint
- Heartbeat – Ogni 5 minuti per mantenere registrazione attiva
Esportazione conversazioni
Seleziona una o più conversazioni (anche archiviate) e il formato. Destinazione: cartella configurabile (default: Desktop\TuaGPT_Export).
Formati disponibili:
- Testo leggibile – Formato conversazione leggibile
- Markdown – Per documentazione e GitHub
- JSON – Strutturato per backup e elaborazione programmatica
- CSV – Dati tabellari
- PDF – Documento stampabile
- Word (DOCX) – Microsoft Word
- ODT – OpenDocument Text (LibreOffice)
Opzioni: Includi timestamp, metadati (modello, data), formattazione messaggi, note associate.
Impostazioni
Server e connessione
- URL server (es. http://localhost:11434 per Ollama)
- Token API (per TuaGate, OpenAI, ecc.)
- Timeout unificato (120–300 sec consigliato per modelli grandi)
- Test connessione – Verifica raggiungibilità
- Ricarica mappings – Aggiorna lista modelli dal server
Parametri LLM
- Temperature (0–2) – Basso = deterministico; medio = bilanciato; alto = creativo
- Top P (0–1) – Campionamento nucleare; consigliato 0.9
- Max Tokens (1–128000) – Limite risposta; disabilitabile per risposte illimitate
- Presence Penalty – Riduce nuovi argomenti
- Frequency Penalty – Riduce ripetizioni
- Auto-configura – Applica parametri consigliati per modello selezionato
Database e sicurezza
- Crittografia – Database cifrato con identificativo hardware; dati leggibili solo su questo PC
- Salva recupero – File cifrato con passphrase per migrare su altro computer
Interfaccia chat
- Link cliccabili – Apre URL nel browser predefinito
- Font chat e font codice – Famiglie configurabili
- Padding e line spacing
- Tema – Chiaro, Scuro, Sistema
- Icone azioni sui messaggi (thumbs up/down, refresh)
- Timestamp nei messaggi
- Messaggi di conferma operazioni
Tool e estensione browser
- Abilita tool per LLM
- Porta TuaGPT (default 8765)
- Token autenticazione (Rigenera, Copia, Mostra)
- Test Connessione e Test Navigazione
Log
- Salva log su file
- Log comunicazioni server e posta
Formattazione avanzata della chat
La chat supporta Markdown, tabelle, grafici ASCII, LaTeX, codice con evidenziazione sintattica. Configurazione tramite markdown_symbols.json. Supporta sia RichTextBox che ChatDisplayBox (con icone azioni sui messaggi).
Pattern Markdown supportati
**testo**– Grassetto;*testo*– Corsivo;~~testo~~– Barrato`codice`– Codice inline;```blocco```– Blocco codice> citazione– Citazione# Titolo 1,## Titolo 2,### Titolo 3- elemento– Lista puntata;1. elemento– Lista numerata- Emoji Unicode, simboli matematici (π, ∑, ∞), frecce (→, ←)
Tabelle
Formato markdown: | Col1 | Col2 | con riga separator |---|. Renderizzate con caratteri box-drawing Unicode.
Grafici ASCII
- Barre:
[BAR_CHART:Gennaio=120,Febbraio=150] - Linee:
[LINE_CHART:Q1=100,Q2=120,Q3=110]
Dashboard ONNX
Gestione modelli ONNX per funzionalità locali (nessuna connessione internet richiesta).
- Embedding – Per RAG e ricerca semantica (es. paraphrase-multilingual-MiniLM-L12-v2)
- Traduzione – EN↔IT locale
- Classificazione intenti – intent-classification
- Rilevamento lingua – language-detection
- Sentiment analysis – Analisi sentiment
- NER – Named Entity Recognition
I modelli possono essere scaricati dalla dashboard. Configura il modello di embedding per il RAG.
Traduzione documenti
Pannello "Traduzione Documenti" per tradurre messaggi o documenti con modelli ONNX locali. Seleziona lingua sorgente e destinazione (EN↔IT), tipo di azione, e avvia. La traduzione avviene offline.
Launcher e aggiornamenti
Il TuaGPT_Launcher precede l'avvio di TuaGPT e gestisce:
- Splash screen – Durante l'avvio
- Verifica aggiornamenti – URL: starserv1.tuagpt.com/updates
- Elevazione – Avvia con diritti admin se estensione browser o condivisione sono abilitati
- Riavvio con admin – Se SharingCallbackServer fallisce per permessi
Shortcut e installer MSI puntano al launcher. Argomenti: --elevate, --splash-shown.
Gestione Archivio
Le chat archiviate non appaiono nella lista principale ma restano nel database. Apri "Gestione Archivio" per visualizzarle, ripristinarle o eliminarle definitivamente.