Passa al contenuto principale

Introduzione a Tidiko AI

Tidiko AI è una piattaforma completa per chatbot intelligenti basata su Laravel, che offre funzionalità avanzate di intelligenza artificiale per la gestione di conversazioni, assistenti virtuali e agenti AI. La piattaforma è progettata per essere scalabile, sicura e facilmente integrabile in qualsiasi sito web.

🚀 Caratteristiche Principali

🤖 Gestione Assistenti AI

  • Creazione e Configurazione: Creazione di assistenti personalizzati con istruzioni specifiche
  • Modelli AI Multipli: Supporto per diversi modelli di intelligenza artificiale
  • Personalizzazione Avanzata: Configurazione di temperatura, top-p e formati di risposta
  • Gestione File: Upload e gestione di documenti per il training degli assistenti

🏢 Sistema Multi-Azienda

  • Gestione Aziende: Supporto per multiple aziende con piani di abbonamento
  • Controllo Accessi: Sistema di ruoli e permessi granulare
  • Fatturazione: Integrazione con Stripe per la gestione dei pagamenti
  • Piani di Abbonamento: Sistema flessibile di piani con limiti configurabili

💬 Sistema di Conversazioni

  • Thread di Conversazione: Gestione persistente delle conversazioni
  • Messaggi in Tempo Reale: Comunicazione real-time tramite WebSocket
  • Storico Completo: Archiviazione e recupero delle conversazioni
  • Analytics: Tracking dettagliato di token utilizzati e costi

🌐 Widget Standalone

  • Shadow DOM: Isolamento completo dagli stili della pagina host
  • Responsive Design: Adattamento automatico a mobile e desktop
  • Personalizzazione: Temi, colori e layout completamente configurabili
  • Integrazione Semplice: Installazione con una singola riga di codice

🧩 Chat SDK Headless

  • Senza UI/CSS: stesso motore del widget (createTidikoChat), tu disegni la chat
  • Guida integratore: Chat SDK Headless

🔌 Chat REST API

🏗️ Architettura del Sistema

Backend Laravel

L'applicazione principale è costruita su Laravel 11 e include:

app/Models/Assistant.php
class Assistant extends Model
{
use HasFactory;

protected $table = 'assistants';
protected $guarded = [];

public function files()
{
return $this->hasMany(File::class, 'vector_store_uuid', 'vector_store_uuid');
}

public function conversations()
{
return $this->hasMany(Conversation::class, 'assistant_id');
}

public function company()
{
return $this->belongsTo(Company::class);
}
}

Frontend Widget

Il widget frontend utilizza Preact con Shadow DOM (shadowDomWidgetPreact.jsx):

resources/js/shadowDomWidgetPreact.jsx
class TidikoAiWidgetPreact {
constructor(containerId = null, params = {}) {
this.options = { ...platformSettings, ...overrideSettings };
this.jwt = jwt;
this.appUrl = appUrl;
this.init(containerId);
}

async init(containerId) {
const host = containerId
? document.getElementById(containerId)
: this._createDefaultContainer();
this.shadowRoot = host.attachShadow({ mode: "open" });
await this._injectContent();
this._renderWidget();
}
}

Servizi di integrazione

Upload, collection e task embedding passano da WorkerApiService:

app/Services/WorkerApiService.php
WorkerApiService::createCollection($assistant);
WorkerApiService::submitFileTask($file, $vectorStoreUuid);

Vedi services.md e upload-pipeline.md.

📊 Modelli Principali

Company (Azienda)

Gestisce le informazioni delle aziende e i loro abbonamenti:

app/Models/Company.php
class Company extends Model
{
use HasFactory, Billable, Notifiable;

public function assistants()
{
return $this->hasMany(Assistant::class, 'company_id');
}

public function subscriptionPlan()
{
$sparkPlan = $this->sparkPlan();
$freePlan = SubscriptionPlan::where('name', 'FREE')->first();

if (!$sparkPlan || !$sparkPlan->id) {
return $freePlan;
}

return SubscriptionPlan::where('sandbox_monthly_price_id', $sparkPlan->id)
->orWhere('production_monthly_price_id', $sparkPlan->id)
->first() ?? $freePlan;
}
}

Conversation (Conversazione)

Gestisce le conversazioni tra utenti e assistenti:

app/Models/Conversation.php
class Conversation extends Model
{
use HasFactory;

protected $table = 'conversations';
protected $guarded = [];

public function messages()
{
return $this->hasMany(Message::class);
}

public function assistant()
{
return $this->belongsTo(Assistant::class, 'assistant_id');
}
}

Message (Messaggio)

Gestisce i singoli messaggi all'interno delle conversazioni:

app/Models/Message.php
class Message extends Model
{
use HasFactory;

protected $table = 'messages';
protected $guarded = [];

public function conversation()
{
return $this->belongsTo(Conversation::class);
}
}

🔧 Funzionalità Avanzate

Sistema di File e Vector Store

  • Upload Multipli: Supporto per file, URL e API
  • Vector Store: Integrazione con servizi di embedding
  • Processamento Asincrono: Gestione delle operazioni pesanti in background
  • Refresh Automatico: Aggiornamento periodico dei contenuti

Sistema di Notifiche

  • WebSocket Integration: Comunicazione bidirezionale con il frontend
  • Email Notifications: Invio di email per eventi importanti
  • Notifiche Limiti: Avvisi per limiti di abbonamento raggiunti

Sistema di Autenticazione

  • JWT Tokens: Autenticazione basata su token JWT
  • API Keys: Gestione delle chiavi API per l'integrazione
  • Multi-Company: Sistema di isolamento per aziende

🌐 Integrazione Widget

Per una chat con UI Tidiko usa il widget Preact (Widget Preact). Per una chat con UI tua in browser usa il Chat SDK Headless (createTidikoChat). Per un backend o un client HTTP usa la Chat REST API.

Il widget può essere integrato facilmente in qualsiasi sito web:

<!-- Integrazione Base -->
<script src="path/to/tidiko-widget.js"></script>
<script>
new TidikoAiWidgetPreact(null, {
title: "Assistente AI",
appUrl: "https://your-api.com",
jwt: "your-jwt-token",
});
</script>

Configurazione Avanzata

new TidikoAiWidgetPreact("chat-container", {
title: "Supporto Clienti",
theme: "dark",
primaryColor: "#ff8e5e",
companyName: "La Tua Azienda",
hasDocuments: true,
faqMessages: [
"Come posso aiutarti?",
"Hai bisogno di supporto?",
],
});

📈 Monitoraggio e Analytics

Tracking dei Costi

  • Token Usage: Monitoraggio dettagliato dei token utilizzati
  • Costi per Modello: Calcolo dei costi per ogni modello AI
  • Report Mensili: Generazione di report dettagliati

Performance Monitoring

  • Tempo di Risposta: Monitoraggio delle performance
  • Errori e Log: Sistema completo di logging
  • Health Checks: Controlli di salute del sistema

🔒 Sicurezza

Autenticazione e Autorizzazione

  • JWT Security: Token sicuri con scadenza e refresh
  • Company Isolation: Isolamento completo tra aziende
  • Input Validation: Validazione rigorosa degli input
  • Subscription Limits: Controllo limiti di abbonamento

Privacy e GDPR

  • Data Encryption: Crittografia dei dati sensibili
  • Company Data Isolation: Separazione dati per azienda
  • Conversation Privacy: Privacy delle conversazioni
  • File Security: Sicurezza dei file caricati

🚀 Deployment e Scalabilità

Ambiente di Produzione

  • Docker Support: Containerizzazione completa
  • Multi-Environment: Supporto per ambienti di sviluppo e produzione
  • Database Migration: Sistema di migrazione database
  • Asset Compilation: Compilazione automatica degli asset

Monitoraggio

  • Token Tracking: Monitoraggio dettagliato dei token utilizzati
  • Cost Analytics: Calcolo dei costi per modello AI
  • Usage Reports: Report di utilizzo per azienda
  • Error Logging: Sistema di logging per errori

Tidiko AI rappresenta una soluzione completa e moderna per l'implementazione di chatbot intelligenti, offrendo tutte le funzionalità necessarie per creare, gestire e scalare assistenti AI in modo efficace e sicuro.