36 lines
2.6 KiB
Markdown
36 lines
2.6 KiB
Markdown
AI-STATION: Specifica Tecnica Implementativa (Target Stack: Chainlit)
|
|
1. Obiettivo
|
|
Sviluppare un'applicazione web Dockerizzata ("AI Station") che funga da hub multi-utente per l'IA. L'app deve presentarsi come una Chat Interface avanzata (stile ChatGPT/Claude) con capacità "Artifacts" (visualizzazione elementi a lato) e RAG.
|
|
|
|
2. Stack Tecnologico (Obbligatorio)
|
|
Sostituire Marimo con Chainlit per il Frontend.
|
|
|
|
Frontend/UI: Chainlit (Python). Interfaccia Chat + Elements.
|
|
Backend Logic: FastAPI (embedded in Chainlit o separate).
|
|
Auth: oauth2-proxy in Docker che inietta header X-Email e X-User-Role.
|
|
Vector DB: Qdrant (per RAG).
|
|
Database: PostgreSQL (per memorizzare le chat history e le preferenze).
|
|
AI Engine: Connessione remota a Ollama (http://192.168.1.243:11434).
|
|
3. Architettura dei Profili (Routing)
|
|
L'applicazione deve leggere l'header X-Email in entrata.
|
|
|
|
Mapping: Definire un dizionario Python che mappa email -> Ruolo -> Workspace.
|
|
Ruoli: business, engineering, architecture, admin.
|
|
4. UI Design (Chat + Canvas)
|
|
Layout Standard: Chat principale a sinistra.
|
|
Canvas (Elements): Quando l'AI genera codice, grafici (Plotly) o tabelle complesse, usarli come "Elements" espandibili in Chainlit, non come semplice testo markdown.
|
|
Nascondere il codice: Per i ruoli business e architecture, il codice python/logica di backend NON deve essere visibile in chat, solo l'output finale.
|
|
5. Funzionalità Specifiche per Ruolo
|
|
Smart Business (Moglie): Chat semplice. Bottone "Upload PDF" (che va in RAG su Qdrant collection 'contabilita').
|
|
Engineering (Figlio): Chat + Visualizzatore Dati. Supporto Python code execution sandboxed (se possibile, o solo spiegazione).
|
|
Profilo "Architecture" (Figlia - Studente): Chat Visuale. Focus su storia dell'arte, normative edilizie, RAG su manuali di architettura, generazione idee
|
|
Power User (Tu): Accesso a cl.Command per debug, possibilità di vedere i prompt di sistema.
|
|
6. Istruzioni per Aider
|
|
Creare struttura docker-compose.yml con servizi: chainlit-app, qdrant, postgres, oauth2-proxy.
|
|
Implementare app.py (main Chainlit) che gestisce l'autenticazione via header.
|
|
Configurare il client Ollama remoto.
|
|
Implementare un semplice sistema di RAG usando LangChain o LlamaIndex integrato in Chainlit.
|
|
Perché questo prompt funzionerà meglio:
|
|
Definisce la tecnologia: Dice esplicitamente "Usa Chainlit". Aider sa perfettamente come strutturare un progetto Chainlit (file .chainlit/config, cartella .chainlit/data).
|
|
Definisce il layout: Richiede elementi nativi di Chainlit (cl.Text, cl.Plotly, cl.File), che corrispondono alla tua idea di "Canvas".
|
|
Risolvi l'Auth: Chiede di gestire l'header X-Email, che è standard nelle app Chainlit dietro Proxy. |