Passa al contenuto principale

Multi agente

Il Tree Agent supporta nativamente la gestione di più agenti. Questa caratteristica rende possibile organizzare flussi complessi in modo ordinato e implementare comportamenti personalizzati che sarebbero difficili da realizzare con un singolo agente.

Per aggiungere un agente è sufficiente inserire un nuovo nodo di tipo agent come figlio diretto del nodo root. Ogni agente è composto dall'intero sottoalbero che ha quel nodo agent come radice.

Il framework memorizza in modo indipendente, per ciascun agente, l'ultimo nodo eseguito e l'ultimo step concluso. Quando l'esecuzione si sposta su un agente diverso, l'agente di partenza rimane ibernato: il suo stato viene conservato e può essere ripreso in seguito.

Resume

Tramite la proprietà resume = True disponibile nell'oggetto restituito dalle callback after e before_run è possibile riprendere l'esecuzione di un agente dall'esatto punto in cui era rimasta, senza dover indicare esplicitamente il nodo. Il node_target in questo caso deve puntare al nodo agent del quale si vuole riprendere l'esecuzione.

warning

Nel caso in cui si utilizza resume = True, il node_target deve necessariamente essere un nodo di tipo agent. Il nodo effettivo da eseguire viene individuato automaticamente in base allo stato memorizzato nell'agente.

informazioni

Tramite le callback after e before_run è comunque possibile indicare un nodo presente in un agente diverso dall'attuale senza impostare resume = True. In quel caso l'esecuzione riparte forzatamente dal nodo e dallo step indicati, ignorando quelli memorizzati nell'agente.

Esempio: logica trasversale

Il meccanismo multi agente è particolarmente utile per implementare logiche che devono essere applicate trasversalmente rispetto all'agente principale, senza dover modificare la struttura interna di quest'ultimo.

Un esempio concreto è la gestione dei guardrail: se si vuole validare ogni messaggio dell'utente prima di elaborare la risposta, una soluzione efficace è implementare questa logica su un agente dedicato. Nella callback before_run si può dirottare ogni interazione verso l'agente di guardrail; al termine dell'esecuzione di quest'ultimo, tramite resume = True, si riprende l'esecuzione dell'agente principale dal punto esatto in cui era stata sospesa.

In questo modo l'agente principale rimane isolato e mantenibile, mentre la logica trasversale è concentrata in un posto solo.

Organizzazione multi agente

Spostamento tra agenti

Lo spostamento tra nodi presenti in agenti distinti avviene in gran parte seguendo le stesse logiche applicate tra nodi dello stesso agente. Nello specifico esistono questi 5 meccanismi per spostarsi tra i nodi:

MetodoSupporta il multi agentDescrizione
Durante lo step exploreAutomaticamente durante lo step explore il sistema si sposta nel nodo figlio più promettente se questo possiede dei chunk con similarità minima combinata sufficiente
Durante il reach_anchorAutomaticamente in alcune circostanze ci si sposta sul nodo genitore
Tramite afterManualmente tramite node_target restituito dalla callback after
Tramite before_runManualmente tramite node_target restituito dalla callback before_run
Tramite fallbackManualmente tramite node_target restituito dalla callback fallback

Come si può osservare, ad eccezione dei primi due metodi che si basano su relazioni di adiacenza nel grafo, tutti i metodi manuali permettono di indicare anche nodi appartenenti ad agenti distinti.