HomeModelli AIRAGMCP OrchestrazionePrompt Engineering Quando (Non) Usare AIChipsBotNews

Osservare e valutare i flussi di lavoro agentici dell'IA con Strands Agents SDK e Arize AX

Amazon Web Services 7 aprile 2026

Osservare e Valutare i Flussi di Lavoro Agentici dell'IA con Strands Agents SDK e Arize AX

Questo articolo è stato scritto in collaborazione con Rich Young di Arize AI.

Le applicazioni di intelligenza artificiale (IA) che si basano su flussi di lavoro agentici si distinguono notevolmente dai carichi di lavoro tradizionali per una caratteristica fondamentale: la loro natura non deterministica. Ciò significa che, a parità di input, possono generare risultati diversi. Questa intrinseca variabilità è una conseguenza diretta del funzionamento dei grandi modelli linguistici (LLM) su cui si basano, che utilizzano probabilità nella generazione di ogni singolo token. Tale imprevedibilità solleva questioni complesse per i progettisti di applicazioni IA, che devono interrogarsi sul piano d'azione più appropriato, sul percorso ottimale che un agente dovrebbe seguire e sulla selezione degli strumenti più idonei con i parametri corretti.

Per le organizzazioni che mirano a implementare con successo carichi di lavoro agentici, diventa indispensabile disporre di un sistema di osservabilità robusto. Questo sistema deve garantire che i risultati prodotti siano non solo corretti, ma anche pienamente affidabili e degni di fiducia in ambienti di produzione. In questo contesto, presentiamo come il servizio Arize AX possa tracciare e valutare le attività degli agenti IA avviate tramite Strands Agents, offrendo un supporto cruciale nella convalida della correttezza e dell'affidabilità dei flussi di lavoro agentici. Questa sinergia consente alle aziende di navigare le complessità dell'IA generativa con maggiore sicurezza e controllo.

Le Sfide con le Applicazioni di IA Generativa

Il percorso che conduce da una promettente dimostrazione di intelligenza artificiale a un sistema di produzione affidabile è costellato di sfide significative, che molte organizzazioni tendono a sottovalutare. Basandosi su ricerche di settore e implementazioni reali, i team si trovano ad affrontare diversi ostacoli critici che minano la stabilità e l'efficacia dei sistemi di IA generativa:

  • Comportamento imprevedibile su larga scala: Gli agenti che si comportano in modo eccellente durante le fasi di test possono fallire clamorosamente quando incontrano input inattesi in produzione. Questo include nuove varianti linguistiche, gerghi specifici di dominio o richieste ambigue che possono portare a risposte irrilevanti, fraintese o addirittura dannose. L'incapacità di prevedere ogni possibile scenario di input rende estremamente difficile garantire un'esperienza utente coerente e positiva, incidendo sulla fiducia degli utenti e sulla reputazione aziendale.
  • Modalità di fallimento nascoste: Un pericolo particolarmente insidioso è la capacità degli agenti di produrre output che, pur sembrando plausibili, sono in realtà errati, o di saltare passaggi cruciali senza che ciò venga immediatamente rilevato. Ad esempio, un agente potrebbe calcolare erroneamente metriche finanziarie in un modo che appare corretto a una prima occhiata, ma che in realtà può portare a decisioni aziendali gravemente fuorvianti. La mancanza di trasparenza nei processi decisionali dell'agente amplifica questo rischio, rendendo difficile l'identificazione delle cause profonde degli errori.
  • Percorsi non deterministici: Gli agenti hanno la libertà di scegliere tra diverse strategie o percorsi decisionali. Tuttavia, questa flessibilità può talvolta portare a scelte inefficienti o addirittura errate. Un esempio comune è un agente che impiega 10 passaggi per instradare una query che avrebbe potuto essere risolta in soli 5. Questo non solo spreca risorse computazionali, ma si traduce anche in un'esperienza utente scadente a causa dei tempi di attesa prolungati o della complessità inutile nella risoluzione dei problemi.
  • Complessità nell'integrazione degli strumenti: La robustezza di un agente dipende in gran parte dalla sua capacità di interagire correttamente con strumenti esterni e API. Gli agenti possono "rompersi" o fallire silenziosamente quando invocano API in modo scorretto, ad esempio, passando un formato ID ordine errato. Ciò può causare un fallimento silenzioso di un rimborso, anche se un aggiornamento dell'inventario è avvenuto con successo, creando discrepanze e problemi operativi difficili da diagnosticare e correggere, con potenziali impatti negativi sulla soddisfazione del cliente e sull'integrità dei dati.
  • Variabilità di costo e prestazioni: La natura iterativa e spesso "verbosa" degli LLM può causare costi elevati di token e picchi di latenza incontrollabili. Un agente che entra in un ciclo infinito o che genera output eccessivamente lunghi può effettuare più di 20 chiamate LLM per una singola richiesta, ritardando una risposta da 3 a 45 secondi. Questo impatta direttamente sull'efficienza operativa e sui costi, rendendo difficile la scalabilità delle applicazioni e la gestione del budget.

Queste sfide evidenziano chiaramente che gli approcci tradizionali di testing e monitoraggio, sebbene efficaci per il software deterministico, sono decisamente insufficienti per i complessi e imprevedibili sistemi di IA. Per avere successo in questo nuovo panorama, è necessario adottare una strategia più ponderata e completa, che integri metodologie avanzate di osservabilità e valutazione continua per gestire l'intero ciclo di vita dell'applicazione IA.

Arize AX: Un Framework Completo per Osservabilità, Valutazione ed Sperimentazione

Arize AX si posiziona come un servizio di ingegneria IA di livello enterprise, progettato per supportare i team nel monitoraggio, nella valutazione e nel debug delle applicazioni di intelligenza artificiale lungo l'intero ciclo di vita, dallo sviluppo alla produzione. Basandosi sulla solida fondazione di Arize Phoenix, AX introduce funzionalità essenziali per l'ambiente aziendale, tra cui l'assistente IA "Alyx", valutazioni online, ottimizzazione automatica dei prompt, controllo degli accessi basato sui ruoli (RBAC) e scalabilità e supporto di livello enterprise.

Arize AX offre una soluzione olistica alle organizzazioni, pensata per soddisfare sia le esigenze del personale tecnico che di quello non tecnico. Questo permette a tutti di gestire e migliorare gli agenti IA dal momento della loro ideazione fino all'implementazione in produzione su vasta scala. Le capacità distintive di Arize AX includono:

  • Tracciamento (Tracing): Fornisce una visibilità completa sulle operazioni degli LLM utilizzando OpenTelemetry. Questo consente di acquisire in dettaglio le chiamate al modello, i passaggi di recupero delle informazioni e metadati cruciali come il numero di token utilizzati e la latenza, permettendo un'analisi approfondita di ogni interazione dell'agente. Il tracciamento end-to-end è fondamentale per comprendere il "perché" dietro le decisioni dell'agente e per diagnosticare colli di bottiglia o comportamenti inattesi.
  • Valutazione (Evaluation): Abilita il monitoraggio automatico della qualità attraverso valutazioni "LLM-as-a-judge" su campioni di produzione reali. Questo sistema supporta la creazione di valutatori personalizzati e l'impostazione di metriche di successo chiare, garantendo che le prestazioni dell'agente siano sempre allineate agli obiettivi aziendali e migliorate continuamente in base a feedback concreti.
  • Set di dati (Datasets): Permette di mantenere set di dati versionati e rappresentativi, essenziali per la gestione di casi limite (edge cases), per i test di regressione e per gli A/B test. Questi set di dati vengono costantemente aggiornati con esempi reali provenienti dall'ambiente di produzione, assicurando che i test riflettano accuratamente le condizioni operative e che l'agente sia robusto di fronte a nuove situazioni.
  • Esperimenti (Experiments): Offre la possibilità di eseguire test controllati per misurare con precisione l'impatto delle modifiche ai prompt o ai modelli sottostanti. Questo consente di validare i miglioramenti con rigore statistico, assicurando che le modifiche apportate portino benefici tangibili e misurabili prima di essere implementate su larga scala.
  • Playground: Un ambiente interattivo dedicato a facilitare il debug e l'ottimizzazione degli agenti. Permette di riprodurre le tracce esistenti, testare rapidamente diverse varianti di prompt e confrontare le risposte dei modelli per identificare e risolvere efficacemente i problemi, accelerando il ciclo di sviluppo.
  • Gestione dei prompt (Prompt management): Consente di versionare, testare e distribuire i prompt proprio come si farebbe con il codice sorgente. Include funzionalità di tracciamento delle prestazioni e di roll-out graduale, che permettono di individuare e correggere rapidamente eventuali regressioni prima che impattino un vasto pubblico, garantendo un'implementazione sicura e controllata.
  • Monitoraggio e avvisi (Monitoring and alerting): Fornisce dashboard in tempo reale e sistemi di allerta proattivi per monitorare metriche chiave come latenza, errori, utilizzo dei token e deviazione del modello (drift). Include meccanismi di escalation per le problematiche critiche, assicurando che i team siano prontamente informati e possano intervenire tempestivamente per mantenere la stabilità e l'efficienza del sistema.
  • Visualizzazione degli agenti (Agent visualization): Strumenti per analizzare e ottimizzare i percorsi decisionali degli agenti. Questo aiuta a ridurre cicli infiniti e inefficienze, consentendo di affinare le strategie di pianificazione e di migliorare l'efficienza complessiva dell'agente, traducendosi in migliori prestazioni e costi ridotti.

Tutte queste componenti si integrano per formare una strategia di osservabilità completa, che tratta le applicazioni basate su LLM non come semplici esperimenti, ma come sistemi di produzione critici per la missione aziendale, che richiedono un monitoraggio, una valutazione e un miglioramento continui per mantenere la loro efficacia e affidabilità nel tempo.

Arize AX e Strands Agents: Una Combinazione Potente

Strands Agents è un SDK open source, un potente framework low-code progettato per la creazione e l'esecuzione di agenti IA con un sovraccarico minimo. È stato sviluppato con l'obiettivo di semplificare lo sviluppo di flussi di lavoro agentici sofisticati, unificando prompt, strumenti, interazioni con LLM e protocolli di integrazione in un'unica esperienza semplificata. Strands supporta sia i modelli ospitati su Amazon Bedrock sia modelli esterni, e include capacità integrate per la Generazione Aumentata dal Recupero (RAG), il Protocollo di Contesto del Modello (MCP) e la comunicazione Agent2Agent (A2A). Queste funzionalità lo rendono uno strumento versatile per sviluppatori che vogliono costruire agenti intelligenti e complessi in modo efficiente, riducendo la barriera d'ingresso e accelerando l'innovazione.

In questa sezione, esploreremo come costruire un agente utilizzando Strands Agent SDK, come strumentarlo con Arize AX per una valutazione basata su tracce e come ottimizzare il suo comportamento per ottenere le massime prestazioni e affidabilità. Questa guida pratica mostrerà come la sinergia tra i due strumenti possa trasformare lo sviluppo e la gestione degli agenti IA.

Il seguente flusso di lavoro illustra come un agente Strands gestisce un'attività utente end-to-end – invocando strumenti, recuperando contesto e generando una risposta – mentre invia contemporaneamente tracce ad Arize AX per una valutazione e ottimizzazione approfondite. Questa metodologia garantisce che ogni azione dell'agente sia trasparente e analizzabile, consentendo un controllo granulare sul suo funzionamento.

La soluzione proposta segue questi passaggi di alto livello, che rappresentano una guida pratica per l'implementazione:

  • Installare e configurare le dipendenze necessarie per l'ambiente di sviluppo.
  • Strumentare l'agente per l'osservabilità, integrando i meccanismi di tracciamento forniti da Arize AX.
  • Costruire l'agente utilizzando Strands SDK, definendone logica, prompt e strumenti.
  • Testare l'agente con vari input per generare le tracce delle sue esecuzioni.
  • Analizzare le tracce raccolte in Arize AI per identificare schemi, anomalie e aree di miglioramento.
  • Valutare il comportamento dell'agente rispetto ai criteri di performance, correttezza e affidabilità stabiliti.
  • Ottimizzare l'agente in base alle intuizioni derivanti dall'analisi e dalla valutazione, iterando sul suo design.
  • Monitorare continuamente l'agente in produzione per garantirne l'affidabilità e le prestazioni nel tempo, intervenendo proattivamente in caso di deviazioni.

Prerequisiti

Per seguire questa guida e implementare la soluzione proposta, avrai bisogno di:

  • Un account AWS con accesso ad Amazon Bedrock, necessario per l'utilizzo dei modelli LLM.
  • Un account Arize con il tuo Space ID e API Key (è possibile iscriversi gratuitamente su arize.com), indispensabili per l'integrazione con Arize AX.

Installazione delle Dipendenze

Per iniziare, installa le dipendenze necessarie utilizzando il gestore di pacchetti pip. Questo comando garantirà che tutti i moduli richiesti, tra cui Strands, OpenTelemetry SDK e l'integrazione Arize per OpenTelemetry, siano disponibili nel tuo ambiente di sviluppo:

pip install strands opentelemetry-sdk arize-otel

Panoramica della Soluzione: Utilizzo di Arize AX con Strands Agents

L'integrazione tra Strands Agent SDK e il sistema di osservabilità di Arize AI offre una visibilità profonda e strutturata sul comportamento e sulle decisioni degli agenti IA. Questa configurazione consente un tracciamento end-to-end dei flussi di lavoro degli agenti, partendo dall'input dell'utente, passando per la fase di pianificazione, l'invocazione degli strumenti e fino alla generazione dell'output finale. Tale granularità è fondamentale per comprendere non solo cosa fa l'agente, ma anche come e perché lo fa. I dettagli completi dell'implementazione sono disponibili nel notebook allegato e nelle risorse presenti nel repository Openinference-Arize su GitHub, fornendo agli sviluppatori tutte le informazioni necessarie per replicare e personalizzare la soluzione.

Installare e Configurare le Dipendenze

Per installare e configurare le dipendenze essenziali per il tracciamento e l'osservabilità, si utilizzerà il seguente blocco di codice Python. Queste importazioni stabiliscono la base per l'integrazione di OpenTelemetry con Arize, consentendo la cattura e l'esportazione delle tracce dell'agente in modo conforme agli standard:

from opentelemetry import trace
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from strands_to_openinference_mapping import StrandsToOpenInferenceProcessor
from arize.otel import register
import grpc

Ogni riga di codice svolge un ruolo specifico: opentelemetry.trace fornisce l'API per il tracciamento distribuito; BatchSpanProcessor e OTLPSpanExporter gestiscono l'esportazione efficiente delle tracce in formato OTLP (OpenTelemetry Protocol) su gRPC; StrandsToOpenInferenceProcessor è cruciale per adattare i dati di Strands al formato OpenInference, standardizzando l'output per l'analisi; arize.otel.register è la funzione che connette il tracciamento ad Arize AX; e grpc è utilizzato per la comunicazione tra i servizi.

Strumentare l'Agente per l'Osservabilità

Per abilitare l'osservabilità dell'agente, il seguente codice mostra come integrare Arize OpenTelemetry. È qui che avviene la magia del tracciamento. Il StrandsToOpenInferenceProcessor è un componente chiave che converte gli "span" nativi generati da Strands nel formato standardizzato di OpenInference, rendendoli comprensibili e analizzabili da Arize AX. I trace_attributes, come l'ID sessione o l'ID utente, aggiungono un contesto prezioso alle tracce, permettendo un filtraggio più ricco e un'analisi più mirata, essenziale per il debug e l'ottimizzazione delle prestazioni dell'agente.

Utilizza l'integrazione OpenTelemetry di Arize per abilitare il tracciamento, sostituendo i placeholder con le tue credenziali Arize specifiche (Space ID e API Key):

register(
    space_id="your-arize-space-id",
    api_key="your-arize-api-key",
    project_name="strands-project",
    processor=StrandsToOpenInferenceProcessor()
)

agent = Agent(
    model=model,
    system_prompt=system_prompt,
    tools=[
        retrieve, current_time, get_booking_details,
        create_booking, delete_booking
    ],
    trace_attributes={
        "session.id": "abc-1234",
        "user.id": "user-email@example.com",
        "arize.tags": [
            "Agent-SDK",
            "Arize-Project",
            "OpenInference-Integration"
        ]
    }
)

In questo blocco, la funzione register inizializza l'SDK di Arize con le credenziali del tuo account e specifica il progetto a cui le tracce saranno associate. Il parametro processor=StrandsToOpenInferenceProcessor() è la parte che garantisce che le tracce generate da Strands siano correttamente formattate per essere elaborate da Arize. Successivamente, la definizione dell'oggetto Agent include il modello LLM utilizzato (model), il system_prompt che ne guida il comportamento generale, e una lista di tools che l'agente può invocare per interagire con l'ambiente esterno. L'aggiunta di trace_attributes è fondamentale per arricchire i dati di tracciamento con metadati contestuali, facilitando l'analisi post-esecuzione e permettendo una segmentazione precisa dei dati di osservabilità.

Costruire l'Agente con Strands SDK

Come esempio pratico, creeremo un "Assistente Ristorante" utilizzando Strands SDK. Questo agente è progettato per aiutare i clienti con informazioni sui ristoranti e per gestire le prenotazioni. Per fare ciò, l'agente avrà accesso a diversi strumenti (tools) che gli permetteranno di interagire con sistemi esterni e recuperare informazioni pertinenti. La scelta e la configurazione di questi strumenti sono cruciali per le capacità dell'agente e la sua efficacia nel risolvere le richieste degli utenti. Tra gli strumenti che un tale agente potrebbe utilizzare, troviamo:

  • retrieve: Uno strumento generico per il recupero di informazioni, potenzialmente da un database di ristoranti, da una knowledge base aziendale o da fonti web. Questo potrebbe essere utilizzato per rispondere a domande come "Quali ristoranti sono aperti stasera nella mia zona?" o "Qual è il menu del ristorante X e ha opzioni vegane?".
  • current_time: Per ottenere l'ora corrente, utile per verificare la disponibilità dei ristoranti o per calcolare scadenze relative alle prenotazioni, assicurando che le azioni dell'agente siano sempre tempestive e pertinenti.
  • get_booking_details: Per recuperare i dettagli di una prenotazione esistente, ad esempio, per un cliente che vuole controllare la propria prenotazione, modificarla o conoscerne lo stato attuale.
  • create_booking: Per creare nuove prenotazioni, gestendo parametri come data, ora, numero di persone e selezione del ristorante. Questo strumento automatizza il processo di prenotazione, migliorando l'efficienza e l'esperienza utente.
  • delete_booking: Per annullare prenotazioni esistenti, fornendo flessibilità ai clienti che necessitano di modificare i propri piani.

L'implementazione di ciascuno di questi strumenti come funzioni Python e la loro esposizione all'agente tramite la lista tools permette all'LLM sottostante di decidere autonomamente quale strumento invocare e quando, basandosi sul prompt dell'utente e sul contesto della conversazione. Questo è il cuore del comportamento "agentico": la capacità di pianificare e agire in modo autonomo per raggiungere un obiettivo specifico, utilizzando le risorse disponibili in modo intelligente e adattivo. Con Strands, questo processo viene notevolmente semplificato, permettendo agli sviluppatori di concentrarsi sulla logica di business piuttosto che sulle complessità dell'integrazione sottostante.

Leggi l'articolo originale →
← Torna alle news