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.