Passa al contenuto principale

Esecuzione

L'esecuzione dell'albero avviene come una sequenza di interazioni. Ogni interazione inizia quando l'untente invia un messaggio, e si conclude quando l'agente invia una risposta. Tra un'interazione e la successiva vengono memorizzate delle informazioni che includono la conversazione salvata dentro la history ed il session_state.

Tra le informazioni conservate ed associate alla sessione è presente l'id dell'ultimo nodo eseguito. Infatti, nonostante l'agente sia un grafo composto da una moltitudine di nodi, l'esecuzione dell'albero avviene sempre per mezzo di un singolo nodo alla volta, quindi, per garantire un comportamento coerente tra intarazioni consecutive, in fase di avvio viene ripristinato lo stato della sessione precedente e rispresa l'esecuzione dall'ultimo nodo.

informazioni

La sessione rappresenta un flusso di interazioni gestite per un singolo utente finale. Grazie alla sessione è possibile mantenere delle conversazioni private per ogni utente e memorizzare delle informazioni nel session_state.

Esecuzione generale

Ad alto livello l'esecuzione di un'interazione avviene seguendo questi macro passaggi:

  1. Viene recuperato il session_state e la history associati alla sessione corrente;
  2. Viene recuperato il messaggio dell'utente e prodotto un oggetto TreeAgentInput;
  3. Vengono istanziati il File Agent ed il Memory Agent;
  4. Se l'opzione del root node Smart extended message è abilitata, il Memory Agent, tramite un LLM, contestualizza l'ultimo messaggio dell'utente ed aggiorna il TreeAgentInput.extended;
  5. Viene eseguita la callback chiamata before_run;
  6. Viene eseguito il flusso dell'albero che produce un output di tipo AgentOutput;
  7. Viene eseguita la callback chiamata after_run;
  8. Viene restituito l'output all'utente. Inoltre, per l'interazione successiva, sono aggiornati i dati relativi alla sessione: il session_state e la history.
informazioni

Il TreeAgentInput.extended è l'ultimo messaggio inviato dall'utente ed esteso tramite un apposito LLM all'interno del Memory Agent. Il vantaggio di questo messaggio è che contiene gli eventuali riferimenti impliciti derivanti dai messaggi precedentemente scambiati. Per aiutare il Memory Agent a ricavare un buon extended_message bisogna impostare le relative proprietà Conversation goal e Topics inserite dentro il root node.

Esecuzione del run

A basso livello, il flusso di esecuzione dell'albero avviene seguendo i seguenti passaggi:

Flusso di esecuzione dell'albero
  1. L'utente scrive il primo messaggio della sessione;
  2. Step explore: Viene individuato il nodo da eseguire. A seguito del primo messaggio, se non diversamente specificato tramite la callback before_run, la ricerca parte dall'agent node con proprietà is_primary = True (agent node con icona ☆ attiva);
  3. Step before: Viene eseguita la callback before del nodo individuato;
  4. Step execute: Viene prodotta la risposta dell'agente a partire dal nodo individuato;
  5. Viene inviata all'utente la risposta dell'agente e l'utente scrive un nuovo messaggio;
  6. Step after: Viene eseguita la callback after del nodo individuato;
  7. In base alla proprietà node_target restituita nella callback after posso:
    1. muovermi nel nodo indicato;
    2. restare nel nodo corrente se la proprietà è vuota;
  8. In base alla proprietà step restituita nella callback after posso:
    1. Step.EXPLORE: eseguire tutto a partire dal punto 2;
    2. Step.BEFORE: eseguire tutto a partire dal punto 3;
    3. Step.AFTER: eseguire tutto a partire dal punto 6;
informazioni

I 4 step: explore, before, execute e after si alternano continuamente durante l'esecuzione del Tree Agent. Tramite la callback after l'ordine di questi passaggi può essere modificato.

warning

A regime, come illustrato nell'immagine, il flusso parte dalla fase 6. (quando l'utente riponde ad un messaggio) e si conclude alla fase 4 (quando viene inviata una risposta all'utente).

warning

Se il nodo eseguito ha proprietà is_mute = True, allora la fase 5 viene saltata.