Quando parliamo delle "prestazioni" di un agente AI, è facile fissarsi su un unico aspetto: la velocità. Sebbene la latenza pura sia un parametro fondamentale, è solo uno dei tanti elementi di un puzzle molto più ampio. Le vere prestazioni elevate sono una combinazione di velocità tecnica, qualità e affidabilità dei risultati e fluidità dell'esperienza utente. Un agente che fornisce rapidamente una risposta errata non sta funzionando bene. Lo stesso vale per un agente che fornisce la risposta corretta, ma con cui è difficile interagire.
In SnapLogic, mentre sviluppavamo e perfezionavamo un agente AI per un importante cliente nel settore sanitario, abbiamo intrapreso un percorso di ottimizzazione olistica delle prestazioni. Non volevamo solo renderlo più veloce. Abbiamo cercato di migliorarlo sotto tutti gli aspetti. Questo percorso ci ha insegnato che è possibile ottenere vantaggi significativi osservando l'intero sistema, dalle fonti di dati back-end ai pixel sullo schermo dell'utente.
Ecco il nostro manuale per creare un agente AI davvero super efficiente, basato su dati reali.
La Fondazione: dati e architettura
Prima di poter mettere a punto un motore, è necessario costruirlo su un telaio solido. Per un agente AI, quel telaio è la sua architettura di base e la sua relazione con i dati.
- Scegliete il cervello giusto per il lavoro: non tutti gli LLM sono uguali. Il modello "migliore" dipende interamente dalla natura dei compiti che il vostro agente deve svolgere. Un agente semplice con uno o due strumenti ha requisiti molto diversi da un agente complesso che deve ragionare, pianificare ed eseguire operazioni dinamiche. Abbinare il modello alla complessità del compito è fondamentale per bilanciare costi, velocità e capacità.
| Complessità del compito | Tipo di modello | Caratteristiche e ideali per |
|---|---|---|
Compiti semplici, eseguibili con un unico strumento | Veloce ed economico | Obiettivo:eseguire un'attività ben definita con un set di strumenti limitato (ad esempio, semplici ricerche di dati, classificazione). Questi modelli sono veloci ed economici, perfetti per azioni ad alto volume e bassa complessità. |
Orchestrazione multi-strumento | Equilibrato | Obiettivo:scegliere in modo affidabilelo strumento corretto tra diverse opzioni e gestire richieste utente moderatamente complesse. Questi modelli offrono un ottimo mix di velocità, costo e miglioramento nella comprensione delle istruzioni per una buona esperienza utente. |
Ragionamento complesso e compiti dinamici | Alte prestazioni / Sofisticato | Obiettivo:gestire richieste ambigue che richiedono ragionamenti in più fasi, pianificazione e utilizzo di strumenti avanzati comela generazione dinamica di query SQL. Si tratta dei modelli più potenti (e costosi), essenziali per attività in cui la comprensione approfondita e l'accuratezza sono fondamentali. |
- Decostruire la complessità con un approccio multi-agente: Un unico agente monolitico progettato per svolgere tutte le funzioni può diventare lento e poco maneggevole. Un approccio più avanzato consiste nel suddividere un agente altamente complesso in un team di agenti più piccoli e specializzati. Questa strategia offre due vantaggi significativi:
- Consente l'uso di modelli più veloci ed economici. Ogni agente specializzato ha un compito più ristretto e definito, il che spesso significa che è possibile utilizzare un LLM meno potente (e più veloce) per quel lavoro specifico, riservando il modello più sofisticato all'agente "manager" che coordina gli altri.
- Aumenta notevolmente la riutilizzabilità. Questi agenti più piccoli e specifici per determinate funzioni e i loro strumenti sottostanti sono modulari. Possono essere facilmente riutilizzati e riadattati nel prossimo agente AI che creerete, accelerando i cicli di sviluppo futuri.
- Prepara il terreno per il successo con i dati: Un agente AI è efficace solo nella misura in cui lo sono i dati a cui può accedere. Abbiamo imparato che ottimizzare l'accesso ai dati è un primo passo fondamentale. Ciò ha comportato:
- Implementazione del Dynamic Text-to-SQL: invece di affidarci a query rigide e predefinite, abbiamo consentito all'agente di creare dinamicamente le proprie query SQL a partire dal linguaggio naturale. Questa flessibilità ha richiesto un investimento iniziale considerevole nell'analisi e nella comprensione delle colonne e dei formati di dati critici di cui il nostro agente avrebbe avuto bisogno da fonti come Snowflake.
- Generazione di viste dedicate del database: per supportare l'agente, abbiamo generato viste dedicate sulle nostre tabelle di origine. Questa strategia ha due scopi principali: riduce drasticamente i tempi di query grazie al pre-join e alla semplificazione dei dati complessi e ci consente di rimuovere i dati sensibili o non necessari dalla fonte, garantendo che l'agente abbia accesso solo a ciò di cui ha bisogno.
- Precaricamento dello schema per garantire agilità: rendere lo schema del database disponibile all'agente è fondamentale per una generazione dinamica accurata dell'SQL. Per ottimizzare questo processo, precarichiamo gli schemi pertinenti all'avvio. Questo semplice passaggio consente di risparmiare tempo prezioso su ogni singola query generata dall'agente, contribuendo in modo significativo alla reattività complessiva.
Il motore: ottimizzazione della logica e del recupero dell'agente
Il nostro kit diagnostico: usare l'IA per analizzare l'IA
Prima di poter ottimizzare il motore, dovevamo sapere esattamente dove si trovava l'attrito. Il nostro processo diagnostico ha seguito un approccio in due fasi:
- Analisi di alto livello: abbiamo iniziato con SnapLogic Monitor, che fornisce una vista tabellare di alto livello di tutte le esecuzioni della pipeline. Questa dashboard è il punto di partenza per qualsiasi indagine sulle prestazioni. Come potete vedere di seguito, fornisce un elenco di tutte le esecuzioni, il loro stato e la loro durata totale. Facendo clic sul pulsante Scarica tabella, è possibile esportare questi dati di riepilogo in formato CSV. Ciò consente un'analisi rapida e di alto livello per individuare valori anomali e tendenze senza dover immediatamente immergersi in file di log verbosi.
- Analisi approfondita basata sull'intelligenza artificiale: una volta individuato un collo di bottiglia dal dashboard, ovvero una pipeline che richiedeva più tempo del previsto, abbiamo scaricato i file di log dettagliati e completi relativi a quelle specifiche esecuzioni della pipeline. Abbiamo quindi inserito questi log complessi in uno strumento di intelligenza artificiale di nostra scelta. Questo approccio di "analisi dell'intelligenza artificiale tramite intelligenza artificiale" ci ha aiutato a individuare immediatamente i problemi chiave che avrebbero richiesto ore per essere individuati manualmente.
Ad esempio, questo processo ha portato alla luce un ciclo di errore superfluo causato dalla duplicazione delle versioni del driver JDBC, che prolungava notevolmente il tempo di esecuzione dei nostri Snowflake Snaps. La risoluzione di questo singolo problema è stata un fattore chiave nel miglioramento del 68% delle prestazioni che abbiamo riscontrato durante l'interrogazione della nostra base di conoscenze tecniche.
Una volta ottenuta una diagnosi precisa, abbiamo rivolto la nostra attenzione al processo di "pensiero" dell'agente. È qui che abbiamo riscontrato alcuni dei miglioramenti più significativi in termini di prestazioni.
Come abbiamo raggiunto questo obiettivo:
- Creazione delle istruzioni perfette (prompt di sistema): siamo passati da prompt generici a prompt di sistema altamente personalizzati, ottimizzati sia per l'attività specifica che per l'LLM scelto. Un modello più semplice riceve un prompt più semplice e diretto, mentre un modello sofisticato può essere istruito a "pensare passo dopo passo" per migliorare il suo ragionamento.
- Un semplice cambiamento per la velocità di produzione: una delle ottimizzazioni più efficaci e meno impegnative è derivata dal modo in cui utilizziamo uno strumento di sviluppo fondamentale: lo Snap Record Replay. Durante la creazione e il collaudo delle pipeline dei nostri agenti, questo Snap è prezioso per acquisire e riprodurre i dati, ma aggiunge circa 2,5 secondi di overhead a ogni esecuzione. Per una semplice esecuzione dell'agente che coinvolge un driver, un worker e uno strumento, ciò aggiunge fino a 7,5 secondi di latenza non necessaria in un ambiente di produzione. Una volta testate con successo le nostre pipeline, abbiamo impostato questi Snap in modalità "Replay Only". Questa semplice modifica ha eliminato istantaneamente il sovraccarico di registrazione, fornendo un significativo aumento di velocità in tutte le interazioni dell'agente.
- Recupero dati più intelligente e veloce (ottimizzazione RAG)Per i nostri strumenti di generazione potenziata dal recupero (RAG), ci siamo concentrati su due leve fondamentali:
- Trovare il punto ottimale ( valore k ): abbiamo ottimizzato il valore k, ovvero il numero di documenti recuperati per il contesto. Nel nostro caso d'uso relativo al recupero delle informazioni sui prodotti, la regolazione di questo valore è stata fondamentale per ottenere un miglioramento della velocità del 63%. Si tratta dell'arte di ottenere il contesto sufficiente per una risposta accurata senza creare lavoro superfluo per l'LLM.
- Precisione chirurgica con i metadati: invece di eseguire sempre una ricerca vettoriale generica, abbiamo consentito all'agente di utilizzare i metadati. Se conoscel'ID univoco di un documento, può recuperare esattamente quel documento. È come la differenza tra sfogliare una biblioteca e utilizzare un numero di riferimento. È veloce e preciso.
- Garantire la coerenza: impostiamo la temperatura su un valore basso durante il processo di estrazione e indicizzazione dei dati. Ciò garantisce che i blocchi di dati vengano creati in modo coerente, ottenendo risultati di ricerca più affidabili e ripetibili.
I risultati: una trasformazione basata sui dati
I nostri sforzi di ottimizzazione hanno portato a miglioramenti significativi e misurabili in diversi casi d'uso chiave per l'agente AI.
| Caso d'uso | Prima dell'ottimizzazione | Dopo l'ottimizzazione | Miglioramento della velocità |
|---|---|---|---|
| Interrogazione della base di conoscenze tecniche | 92 secondi | 29 secondi | ~68% più veloce |
| Elaborazione dei dati relativi agli ordini di vendita | 32 secondi | 10,7 secondi | ~66% più veloce |
| Recupero RAG | 5,8 secondi | 2,1 secondi | ~63% più veloce |
| Ottimizzazione della produzione (solo riproduzione) | 20 secondi | 17,5 secondi | ~12% più veloce* |
(*Questo miglioramento è stato ottenuto passando dagli Snaps di sviluppo a una modalità "Replay Only" pronta per la produzione, eliminando la latenza inerente alla fase di test.)
L'esperienza: attenzione all'utente
In definitiva, tutte le ottimizzazioni back-end del mondo sono irrilevanti se l'esperienza utente è scadente. L'ultimo livello della nostra strategia era incentrato sull'applicazione front-end.
- Coinvolgi, non limitarti ad aspettare: un semplice messaggio "in esecuzione..." può causare ansia nell'utente e rendere l'attesa più lunga. La nostra prossima iterazione fornirà uno stato in tempo reale del processo di elaborazione dell'agente (ad esempio, "Ricerca nel database dei prodotti...", "Sintesi della risposta..."). Questa trasparenza mantiene l'utente coinvolto e crea fiducia.
- Guida l'utente al successo: abbiamo imparato che una casella di testo vuota può intimidire. Fornendo suggerimenti predefiniti e spiegando chiaramente le capacità dell'agente, guidiamo l'utente verso interazioni di successo.
- Fornire un risultato chiaro: il risultato finale deve essere di facile comprensione. Formattiamo i nostri risultati in modo chiaro, utilizzando tabelle, elenchi e un linguaggio semplice per garantire che l'utente possa comprendere e agire immediatamente sulle informazioni.
Adottando questo approccio olistico, abbiamo ottimizzato le basi, il motore e l'esperienza utente per creare un agente AI che non solo sia veloce, ma anche intelligente, affidabile e davvero utile.




