AI Chatbot Assistant - FoodCost
📖 Descrizione
Assistente AI integrato in FoodCost che permette agli utenti di:
- Fare domande sui propri dati (fatture, fornitori, prodotti)
- Ottenere aiuto sull’utilizzo del software
- Ricevere analisi e insights
- Consultare la documentazione integrata
🏗️ Architettura
Componenti Principali
-
ChatButton (
src/components/AIChat/ChatButton.tsx)- Icona nella topbar accanto al toggle tema
- Apre uno Sheet laterale con l’interfaccia chat
-
ChatInterface (
src/components/AIChat/ChatInterface.tsx)- UI della chat con streaming delle risposte
- Supporto markdown per formattazione
- Esempi di domande predefinite
- Auto-scroll e auto-resize textarea
-
API Route (
src/app/api/chat/route.ts)- Endpoint POST
/api/chat - Integrazione con OpenAI GPT-4
- Autenticazione basata su session
- Context del tenant
- Endpoint POST
-
Context System (
src/lib/ai/chatContext.ts)- Caricamento documentazione software
- Preparazione context per l’AI
- Filtraggio informazioni rilevanti
-
Tools (
src/lib/ai/chatTools.ts)- Funzioni per query al database
- Analisi fatture, fornitori, prodotti
- Calcolo food cost
- Transazioni bancarie recenti
🔧 Tecnologie Utilizzate
-
AI SDK: Vercel AI SDK v6
@ai-sdk/openai- Provider OpenAI- Streaming responses
-
UI Components:
- Radix UI Sheet per il pannello laterale
- React Markdown per formattazione risposte
- Lucide React per le icone
-
Backend:
- OpenAI GPT-4o model
- Mongoose per query database
- NextAuth per autenticazione
📝 Variabili d’Ambiente
Assicurati di avere nel file .env:
OPENAI_API_KEY=your-openai-api-key🚀 Come Usare
-
Accesso al Chatbot
- Clicca l’icona 💬 nella topbar
- Si aprirà un pannello laterale a destra
-
Interazione
- Scrivi domande in linguaggio naturale
- Premi Enter per inviare (Shift+Enter per andare a capo)
- Le risposte appariranno in streaming
-
Esempi di Domande
- “Qual è il totale delle fatture di questo mese?”
- “Mostrami i fornitori principali”
- “Come posso importare nuove fatture?”
- “Analizza il food cost dell’ultimo trimestre”
🎯 Funzionalità Future
Tools/Function Calling (da implementare)
Il sistema è predisposto per l’integrazione di tools che permettono all’AI di:
- Interrogare il database in tempo reale
- Generare report personalizzati
- Eseguire calcoli complessi
- Recuperare dati specifici del tenant
Memoria Conversazioni
- Salvare lo storico delle chat
- Riprendere conversazioni precedenti
- Esportare conversazioni
Miglioramenti Context
- Indicizzazione vettoriale della documentazione
- RAG (Retrieval Augmented Generation) avanzato
- Context più ricco con dati statistici
📂 Struttura File
src/
├── components/
│ └── AIChat/
│ ├── ChatButton.tsx # Trigger nella topbar
│ └── ChatInterface.tsx # Interfaccia chat
├── app/
│ └── api/
│ └── chat/
│ └── route.ts # API endpoint
└── lib/
└── ai/
├── chatContext.ts # Sistema context
└── chatTools.ts # Database tools🔐 Sicurezza
- ✅ Autenticazione richiesta via NextAuth
- ✅ Isolamento dati per tenant
- ✅ Rate limiting (da implementare)
- ✅ Validazione input
- ✅ Sanitizzazione output
🐛 Troubleshooting
Errore “Unauthorized”
- Verifica di essere autenticato
- Controlla che la session contenga
tenant_id
Risposte lente
- Controlla la connessione a OpenAI
- Verifica le performance del database
Errori di streaming
- Controlla che OPENAI_API_KEY sia configurata
- Verifica i log del server
📊 Metriche & Monitoraggio
Considera di aggiungere:
- Tracking domande frequenti
- Tempo medio di risposta
- Tasso di soddisfazione utenti
- Costi API OpenAI
🎨 Personalizzazione
Modificare il System Prompt
Edita src/app/api/chat/route.ts, sezione systemPrompt
Cambiare Model
Nel file route.ts:
model: openai("gpt-4o-mini"); // Più economico
model: openai("gpt-4-turbo"); // Più potenteAggiungere Esempi
Edita exampleQuestions in ChatInterface.tsx
📞 Supporto
Per domande o problemi, consulta:
- Documentazione Vercel AI SDK: https://sdk.vercel.ai/docs
- OpenAI API Reference: https://platform.openai.com/docs
Last updated on