ai-station/PROMPT_V2.md

2.3 KiB

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.

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. 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.