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

🏗️ 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 Shadow DOM per l'isolamento completo:

resources/js/shadowDomWidget.js
class TidikoAiWidget {
constructor(containerId = null, params = {}) {
// Configurazione del widget
this.options = { ...platformSettings, ...overrideSettings };
this.jwt = jwt;
this.appUrl = appUrl;
this.type = type;

// Inizializzazione
this.init(containerId);
}

async init(containerId) {
// Creazione del container
const host = containerId
? document.getElementById(containerId)
: this._createDefaultContainer();

// Attach shadow DOM
this.shadowRoot = host.attachShadow({ mode: "open" });
await this._injectContent();
this._setupEventListeners();
}
}

Servizi di Integrazione

Il sistema include servizi per l'integrazione con servizi esterni:

app/Services/NodeApiService.php
class NodeApiService
{
public static function createCollection($model)
{
$jwt = self::getJWT($model);
$url = config('app.node_server_url') . "/collections";

$response = Http::withHeaders([
'Authorization' => "Bearer {$jwt}",
])->post($url);

return $response->json();
}
}

📊 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

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

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

Configurazione Avanzata

new TidikoAiWidget("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.