Workflows
Un workflow è una mappa visiva di ciò che il tuo agente dovrebbe fare passo dopo passo — chi parla per primo, cosa chiedere, quando ramificare, quando trasferire la chiamata e quando passare la chiamata a un agente diverso. Lo costruisci su un canvas trascinando i nodi e collegandoli.
Usa un workflow quando un singolo prompt non basta — quando la chiamata ha fasi chiare ("prima qualifica, poi raccogli i dettagli, poi prenota o trasferisci"), quando hai bisogno di un instradamento deterministico sulle risposte del chiamante (non "l'IA di solito fa la cosa giusta"), o quando un agente dovrebbe passare una parte del lavoro a uno specialista.
Un prompt è un'unica lunga istruzione. L'agente la legge una volta e la usa per l'intera chiamata. Un workflow è tante piccole istruzioni, una per nodo, con transizioni esplicite tra di esse. Il grafo guida la chiamata — l'agente su ciascun nodo possiede solo la sua parte.
Se il tuo agente funziona già bene con un singolo prompt, non hai bisogno di un workflow. Ricorri ai workflow quando continui ad aggiungere regole "se X allora Y" al prompt e smettono di funzionare in modo affidabile.
L'editor
L'editor dei workflow risiede in una scheda dedicata nella pagina dell'agente. Vedi un canvas con un nodo Start e un nodo End per impostazione predefinita. Aggiungi nodi dalla barra degli strumenti, li trascini sul canvas e li colleghi con degli edge.
Il pannello a destra cambia man mano che selezioni le cose:
- Clicca un nodo — si apre il suo pannello di impostazioni (prompt, campi, retrieval variables, ecc.).
- Clicca un edge — si aprono le impostazioni del suo trigger (AI decides / Condition / Always).
- Il pannello Variables (pulsante nella barra degli strumenti) elenca ogni variabile che il workflow dichiara o usa, con un salto con un clic al nodo che imposta o legge ciascuna.
Esegui una Test Call in-browser direttamente dall'editor — una lucciola luminosa traccia la posizione live così puoi vedere esattamente quale nodo è attivo in ogni momento.
Undo / Redo (v2.8) — l'editor mantiene una cronologia fino a 20 passaggi, così puoi tornare indietro su una mossa sbagliata (o rifarla) senza ricostruire. L'eliminazione di un nodo richiede prima una conferma (v2.8), così non perdi un passaggio per un clic accidentale.
Non devi partire da un canvas vuoto. Il punto di ingresso "build as workflow" predispone un workflow per l'agente e ti porta direttamente nel builder — un'azione crea il workflow e apre l'editor, pronto per aggiungere nodi.
I workflow hanno tre stati:
- Draft — modificabile, non ancora live. Usa la Test Call per provarlo.
- Active — live per le chiamate reali. L'agente usa questo workflow dalla chiamata successiva in poi.
- Template — un progetto riutilizzabile, mai collegato direttamente a un agente. Puoi istanziarlo su più agenti.
Nodi
Ogni nodo è un passaggio nella conversazione. Diversi tipi di nodo fanno cose diverse — alcuni parlano, alcuni ascoltano, alcuni instradano, alcuni eseguono strumenti.
Agent
Il nodo agent è il cuore di una fase di un workflow. Quando il grafo raggiunge un nodo agent, quell'agente prende la parola e guida la conversazione finché qualcosa non attiva una transizione.
Configuri la persona e il compito del nodo agent direttamente sul canvas (la scheda Prompt si apre quando clicchi il nodo) — questo è il prompt per quella parte della conversazione, non per l'intera chiamata. Puoi anche collegare knowledge base e strumenti per singolo nodo.
Greeting — la frase di apertura. Se questo è il nodo di ingresso (la prima tappa dopo Start), è ciò che il chiamante sente per primo.
Quando un grafo governa una chiamata, il prompt del nodo attivo è sovrapposto al prompt base dell'agente (quello nella scheda Model). Il grafo possiede la personalità e il compito per ciascuna fase, mentre le istruzioni base dell'agente restano in vigore come fondamento.
Subagent
Un subagent è un assistente che viene eseguito in linea — prende in carico la conversazione per un compito focalizzato, poi restituisce il risultato a chi lo ha invocato.
I subagent sono ottimi quando una parte di lavoro è riutilizzabile o sembra distinta: "verifica l'identità del chiamante", "raccogli un indirizzo di spedizione", "qualifica un lead con il metodo SPIN". L'agente genitore chiama il subagent, il subagent fa il suo lavoro e riporta un risultato, il genitore riprende da dove aveva lasciato.
I nodi subagent hanno le stesse schede di un nodo agent (Prompt, Knowledge, Tools, Actions) — l'editor crea automaticamente per te un agente di supporto nascosto. Non vedi questo agente nascosto nell'elenco principale dei tuoi agenti e non conta nel limite di agenti del tuo piano.
Return variable — lo slot in cui memorizzare il risultato del subagent (es. identity_verified, lead_score).
Chi parla per primo
Per impostazione predefinita, un subagent apre il suo turno parlando — saluta o pone la sua prima domanda nel momento in cui prende il controllo. Due interruttori cambiano questo:
- Wait for the caller (don't speak first) — il subagent resta in silenzio all'ingresso e risponde solo quando il chiamante dice qualcosa. Attivalo quando il subagent è la prima tappa della chiamata e vuoi che il chiamante inizi (un vero "Pronto?") anziché l'agente che apre — oppure a metà chiamata, quando il passaggio precedente ha già detto tutto e il subagent dovrebbe solo ascoltare la risposta.
- Silent step (don't speak) — il subagent non parla affatto. Legge la conversazione fino a quel momento, decide un risultato e restituisce direttamente il controllo. Usalo come router invisibile: "leggi cosa ha chiesto il chiamante e decidi di quale reparto si tratta" — nessuna parola pronunciata, solo una decisione su cui il grafo ramifica.
Valori di risultato consentiti
Un subagent normalmente termina con qualunque valore ha ritenuto appropriato. Se hai intenzione di ramificare su quel risultato con edge di tipo Condition, fissalo invece a un elenco chiuso di valori consentiti:
- Elenca ciascun valore consentito sotto Allowed result values (es.
sales,support,billing). - Il subagent deve terminare con esattamente uno di essi — non può inventarne uno nuovo.
- Abbina ciascun valore a un edge Condition (
result is "sales"→ …) per un instradamento pulito e prevedibile.
Questo è il modo affidabile per far decidere e instradare un subagent: il risultato è garantito che corrisponda a uno dei tuoi rami.
Un subagent restituisce un unico risultato quando ha finito. Collega ciò che accade dopo con edge Condition o Always su quel risultato — l'uscita di un subagent non usa edge "AI decides". Ecco perché Allowed result values + edge Condition è il pattern consigliato per un subagent di instradamento.
Message
Il nodo Message pronuncia una frase fissa, nessun turno IA, nessuna improvvisazione. Usalo per le transizioni ("Un momento, la sto trasferendo…"), disclaimer legalmente richiesti o conferme predefinite dove le parole contano.
Text — cosa pronunciare. Supporta i token {{variable}} per iniettare valori raccolti, es. "Grazie {{first_name}}, ti ho prenotato per {{appointment_time}}."
Un nodo Message consuma il turno — l'agente non aggiunge nient'altro sopra.
Gather input
Un nodo Gather input pone una domanda e cattura la risposta del chiamante in una variabile.
Prompt — la domanda da porre. Supporta i {{token}}.
Variable — il nome dello slot in cui memorizzare la risposta.
Max silence (v2.8) — un limite per singola domanda su quanto attendere che il chiamante risponda prima di andare avanti. Impostalo per ciascun nodo Gather-input, così una rapida domanda sì/no può andare in timeout prima di una che chiede al chiamante di leggere un lungo numero di conto.
Usalo ogni volta che ti serve un valore specifico prima di continuare — email, numero di conto, numero di persone, categoria del problema. Il prossimo turno del chiamante diventa il valore; puoi ramificare su di esso con un edge Condition subito dopo.
Update state
Un nodo Update state scrive uno o più valori nelle variabili del workflow senza parlare o chiedere. Usalo per preimpostare valori predefiniti, contrassegnare flag di avanzamento o predisporre valori calcolati dai passaggi precedenti.
Variable / Value — una coppia chiave-valore. More variables (optional) — coppie chiave-valore aggiuntive.
Sia le chiavi che i valori supportano i {{token}}, così puoi comporre nuovi valori a partire da quelli esistenti.
Condition
Il nodo Condition è un nodo di solo instradamento — non parla, non chiede, invia semplicemente la chiamata lungo il ramo in uscita che corrisponde.
La condizione stessa risiede su ciascun edge in uscita, non sul nodo — vedi Edge Condition più sotto.
Usa un nodo Condition quando vuoi un chiaro punto di "fan-out" nel tuo grafo: molti rami che dipendono dal valore di una variabile. Rispetto al mettere condizioni sugli edge dei nodi agent, un nodo Condition dedicato rende la logica di instradamento visivamente evidente.
Tool
Il nodo Tool esegue uno degli strumenti collegati dell'agente come passaggio del grafo — senza dare all'IA alcuna voce in capitolo sul fatto di chiamarlo. Usalo quando vuoi un fatto, non una conversazione: "cerca questo cliente", "controlla le scorte", "GET del meteo attuale".
Puoi:
- Scegliere uno degli strumenti esistenti dell'agente (ricerca sul calendario, ricerca nella knowledge base, un'azione specifica di un'integrazione), oppure
- Configurare una chiamata HTTP in linea direttamente sul nodo (URL, metodo, header, parametri, corpo).
La risposta dello strumento diventa disponibile a tutti i nodi a valle. Se la risposta è un oggetto JSON, ogni campo di primo livello diventa la sua variabile — così una risposta come {"is_known": true, "tier": "gold"} scrive sia is_known che tier su cui ramificare.
Ogni campo di testo del nodo Tool — URL, valori degli header, corpo — supporta i {{token}}. Inserisci una variabile in un percorso URL, in un header o in un corpo di richiesta senza scrivere codice.
Se una chiamata a uno strumento fallisce (errore HTTP, timeout, rete), il nodo registra il fallimento e il grafo prosegue — senza i dati. Pianifica le tue condizioni a valle per gestire il caso "nessun valore".
Knowledge (RAG)
Il nodo Knowledge (RAG) è una variante del Tool focalizzata sul recupero dalla knowledge base. Scegli una delle knowledge base dell'agente, scrivi una query di ricerca (con i {{token}} se vuoi) e il nodo esegue la ricerca come passaggio del grafo.
Usalo quando vuoi che il workflow cerchi qualcosa prima che un nodo Agent parli — es. recupera l'ordine più recente del cliente così il nodo Agent successivo può menzionarlo senza dover chiedere. Il contenuto recuperato finisce in una variabile che puoi inserire in prompt e messaggi.
Integration
Il nodo Integration è una variante focalizzata del Tool, per i servizi esterni collegati — Google Calendar, Outlook, HubSpot. Scegli il provider e l'azione specifica (es. check_availability, create_event), imposti i parametri e il nodo chiama l'integrazione in modo deterministico.
Se l'integrazione non è collegata su questo agente, il nodo passa oltre senza fare nulla — il tuo grafo prosegue. Controlla le condizioni a valle per il caso "non eseguito".
Phone transfer
Il nodo Phone transfer trasferisce in modalità warm la chiamata a un numero di telefono esterno. Dopo un trasferimento riuscito, la chiamata ha lasciato il tuo workflow — il tuo agente non è più in linea.
Number — destinazione in formato internazionale con un + iniziale (es. +15551234567). Supporta i {{token}} così la destinazione può provenire da un passaggio precedente (es. la risposta a "a quale ufficio dovremmo metterla in contatto?").
Se il trasferimento non va a buon fine (numero non valido, nessuna risposta, connessione telefonica non configurata), il grafo torna indietro e l'agente corrente resta in linea. La conversazione prosegue normalmente — l'agente può scusarsi e provare un percorso diverso.
End call
Il nodo End call conclude — l'agente pronuncia il saluto di congedo configurato, poi si disconnette. Usalo come terminazione pulita per i rami "tutto fatto" o per il ramo "non possiamo aiutare, scusa" da una Condition difficile da gestire.
Nessuna configurazione necessaria oltre al collegamento di un edge in ingresso.
Riutilizzare un Workflow (Sub-workflow)
Un nodo Sub-workflow è riservato all'incorporamento di un altro workflow come sub-grafo. Questo nodo è presente nell'editor ma non è ancora completamente collegato — il grafo passa attraverso di esso senza fare nulla. Non fare affidamento su di esso per le chiamate in produzione. Lo attiveremo una volta rilasciati i sub-grafi riutilizzabili.
Edge (Connessioni)
Colleghi un nodo al successivo con un edge. Il trigger dell'edge decide quando la transizione si attiva.
Ci sono tre trigger:
| Trigger | Chi decide | Quando si attiva |
|---|---|---|
| AI decides | L'IA | Quando la conversazione lo rende il passaggio successivo naturale. L'IA riceve uno "strumento di transizione" che può chiamare. |
| Condition | Il runtime | Quando una variabile corrisponde a una regola che scrivi. Valutato prima che l'IA risponda. |
| Always | Il runtime | Incondizionatamente — nel momento in cui il nodo di origine termina. Nessun input del chiamante, nessun coinvolgimento dell'IA. |
AI decides (guidato dall'intento)
Usa AI decides quando solo l'IA può capire quando cambiare — "se il chiamante chiede i prezzi, trasferisci all'agente di vendita", "se sembra un reclamo, esegui il subagent di scuse".
Scrivi una breve descrizione dell'intento sull'edge (es. "Il chiamante chiede i prezzi o vuole fare l'upgrade"). L'IA la vede come uno strumento etichettato con quell'intento e decide se chiamarlo in base alla conversazione. Se esistono più edge AI-decides, l'IA ne sceglie al massimo uno per turno.
Condition (ramificazione deterministica)
Usa Condition quando vuoi che sia il grafo — non l'IA — a decidere in base a un fatto noto: "se lead_score is more than 7, invia al closer; altrimenti, termina educatamente la chiamata".
Le condizioni vengono valutate prima che l'IA risponda, quindi vincono sempre sull'IA in quel turno. L'IA non ha modo di scavalcare una condizione corrispondente.
Puoi costruire una condizione con questi operatori:
| Operatore | Significato | Esempio |
|---|---|---|
| is | corrispondenza esatta (senza distinzione maiuscole/minuscole per il testo) | intent is "billing" |
| is not | non corrisponde | status is not "active" |
| contains | corrispondenza di sottostringa (senza distinzione maiuscole/minuscole) | feedback contains "broken" |
| is more than | > numerico | lead_score is more than 7 |
| is less than | < numerico | wait_minutes is less than 5 |
Puoi anche combinare le clausole con All (ogni clausola deve corrispondere — AND) o Any (almeno una deve corrispondere — OR), e annidarle. Così una regola come "il chiamante è conosciuto e il suo livello è gold o premium" diventa:
All:
- is_known is true
- Any:
- tier is gold
- tier is premium
Se fai riferimento a una variabile che non è ancora stata impostata (es. l'IA non l'ha mai raccolta), le condizioni su di essa falliscono sempre — non generano errore, semplicemente non corrispondono. Quindi loyalty_tier is "gold" restituisce false se loyalty_tier non è mai stata impostata. Progetta i tuoi rami per gestire questo — di solito con un ramo else (vedi sotto).
Ramo Else — quando nessuna condizione corrisponde
Se hai diversi edge Condition che escono da un nodo e nessuno di essi corrisponde, la chiamata ricade sull'edge non-Condition a priorità più bassa (Always, o un edge AI-decides). Se non c'è alcun fallback, l'IA riprende il controllo e può continuare liberamente.
Un pattern comune: diverse Condition per i percorsi ben noti, più un edge Always verso un catch-all (Message qualcosa, poi End call, o trasferisci).
Always (avanzamento automatico)
Usa Always quando il passaggio successivo è incondizionato — nessuna decisione, nessun input del chiamante. Due usi naturali:
- Concatenare passaggi: Message → Update state → Message → Tool → Condition. Ogni passaggio termina e l'edge Always prosegue subito.
- Avanzare automaticamente dopo che l'agente ha finito di parlare: un nodo agent con un edge Always in uscita significa "non appena l'IA smette di parlare, prosegui" — non c'è bisogno che il chiamante risponda. Utile per flussi in stile monologo come un agente presenter che espone e poi passa alla sezione successiva.
Condition e Always (quelli deterministici) vincono sempre su AI decides. Se una Condition corrisponde, gli strumenti di transizione dell'IA vengono ignorati per quel turno. Questo è ciò che ti permette di scrivere regole che l'IA non può aggirare.
Ordine dei rami
Quando più edge escono dallo stesso nodo, l'editor ti permette di impostare una priorità trascinando le righe su o giù. I rami a priorità più bassa vengono controllati per primi. Questo conta solo quando due rami potrebbero attivarsi entrambi nello stesso turno — tipicamente due edge Condition con regole sovrapposte. Il primo ramo corrispondente vince.
Trasporta il contesto — quanto ricorda l'agente successivo
Ogni edge ha un'impostazione Carry context che controlla quanto della trascrizione della conversazione vede il nodo successivo:
- Full transcript (predefinito) — l'agente successivo vede tutto ciò che è stato detto finora.
- Summary only — la piattaforma riassume la conversazione precedente e passa un breve riepilogo all'agente successivo.
- Nothing — l'agente successivo parte da zero, senza alcuna trascrizione precedente.
Usa Summary only quando passi a un agente specialista che non ha bisogno di ogni parola — risparmia token e mantiene il nuovo agente focalizzato. Usa Nothing per i rami in cui la persona del nuovo agente deve essere separata (es. un sondaggio di soddisfazione alla fine della chiamata).
Variabili
Le variabili sono la memoria del workflow. La maggior parte delle cose in un workflow riguarda o l'impostazione di una variabile o la sua lettura.
Dichiarare le variabili
Il pannello Variables (pulsante nella barra degli strumenti) mostra ogni variabile nel workflow con i passaggi che impostano o leggono ciascuna. Clicca una variabile per saltare a un setter; questo è il modo più veloce per trovare dove qualcosa va storto.
Puoi dichiarare una variabile con un valore predefinito nel pannello — utile per flag come escalated=false che devono esistere fin dall'inizio così le tue condizioni non falliscono mai silenziosamente su "mancante".
Variabili di chiamata integrate
Alcune variabili vengono compilate per te all'inizio di ogni chiamata — non le dichiari né le imposti, sono semplicemente lì da leggere:
| Variabile | Cosa contiene |
|---|---|
{{call_from}} | Il numero di telefono del chiamante |
{{call_to}} | Il numero che è stato chiamato (il tuo numero) |
{{call_direction}} | inbound o outbound |
Poiché esistono fin dal primo momento, puoi ramificare su di esse sul primissimo nodo — ad esempio, una Condition su call_from per salutare per nome un VIP conosciuto, instradare per prefisso internazionale o inviare i numeri sconosciuti lungo un percorso di verifica prima che accada qualsiasi altra cosa.
Come vengono impostate le variabili
| Fonte | Esempio |
|---|---|
| Valori predefiniti (dichiarati nel pannello Variables) | escalated = false impostato prima che la chiamata inizi |
| Gather input | La risposta parlata del chiamante viene catturata nella variabile del nodo |
| Update state | Scrivi un valore (letterale o composto da {{token}}) direttamente |
| Risultato di Tool / Integration | L'intera risposta viene memorizzata sotto il nome del nodo; se la risposta è un oggetto JSON, ogni campo di primo livello diventa anche la sua variabile |
| Return del subagent | Qualunque valore con cui il subagent termina viene memorizzato nella return variable del nodo subagent |
Leggere le variabili — {{token}}
Ovunque tu possa digitare testo su un nodo — prompt dell'agente, testo del Message, prompt del Gather, URL / corpo / header del Tool, numero del Phone transfer, valore dell'Update state, valori delle condizioni — puoi inserire {{variable}} e verrà sostituita al runtime.
Funzionano anche i percorsi con punti per i dati annidati — es. se una risposta del Tool era {"customer": {"name": "Anna", "tier": "gold"}}, puoi leggere {{customer.name}} o {{customer.tier}}.
Se un token fa riferimento a una variabile inesistente, il testo letterale {{name}} viene lasciato al suo posto (non viene azzerato). Questo è intenzionale — rende i template rotti facili da individuare in una chiamata di test, invece di inghiottirli silenziosamente.
Pattern comuni
Qualifica → Ramifica → Instrada
Start
└─ Agent (greeting + qualify)
└─ Gather input (intent)
└─ Condition: intent == "sales" → Agent (sales)
└─ Condition: intent == "support" → Subagent (triage)
└─ Always (catch-all) → Message "Let me connect you" → Phone transfer
Ricerca → Personalizza
Start
└─ Tool (CRM lookup, writes is_known, name, tier)
└─ Condition: is_known == true → Agent (warm greeting with {{name}})
└─ Always (else) → Agent (cold greeting)
Assistente riutilizzabile (deviazione tramite Subagent)
Agent (main conversation)
└─ AI decides: "Caller mentions an address" → Subagent (address collector)
└─ on finish: result = full_address
└─ Agent continues with {{full_address}}
Cosa viene bloccato durante una chiamata con workflow
Alcuni valori predefiniti cambiano quando un grafo governa la chiamata:
- La lingua è bloccata su quella usata dal primo agente del workflow. L'IA non può cambiare lingua a metà chiamata. Questo evita che il modello vada alla deriva verso la lingua sbagliata su un turno rumoroso.
- Il prompt principale dell'agente viene sostituito dal prompt del nodo attivo. Questa è la regola "il grafo possiede la persona" — vedi l'avviso sotto Agent.
- Il primo messaggio proviene dal greeting del nodo di ingresso, non dal campo "Begin Message" principale dell'agente.
Sicurezza dai loop — Budget di passaggi
Ogni workflow ha un numero massimo di transizioni per chiamata (predefinito 25). Ogni volta che il grafo si sposta su un nuovo nodo, il contatore diminuisce di uno. Quando raggiunge zero, il workflow smette di saltare tra i nodi per evitare loop fuori controllo.
Puoi scegliere un nodo di fallback per questo caso (tipicamente un Phone transfer o un End call) — la chiamata viene deviata lì una volta esaurito il budget. Altrimenti l'IA riprende il controllo e il grafo di fatto si blocca per il resto della chiamata.
Molto raramente devi pensare a questo — è una rete di sicurezza per i grafi che vanno in loop accidentalmente. Se lo raggiungi nell'uso normale, probabilmente hai un ciclo da qualche parte.
Test
Il pulsante Test Call nell'editor apre una chiamata in-browser con la bozza corrente del workflow. Mentre la chiamata è in corso, una lucciola luminosa si muove tra i nodi sul canvas così puoi vedere esattamente dov'è la chiamata. L'editor è bloccato durante una chiamata di test per evitare che le modifiche si desincronizzino con lo stato live.
Usa la Test Call per verificare:
- Le tue condizioni corrispondono ai valori che ti aspetti (osserva la lucciola saltare oltre un ramo che pensavi si sarebbe attivato).
- I tuoi token si sostituiscono correttamente (ascolta un eventuale
{{name}}vagante se un valore non era ancora stato impostato). - I fallimenti degli strumenti degradano con eleganza (il tuo percorso di fallback si attiva davvero).
Modalità di fallimento da conoscere
| Situazione | Cosa accade |
|---|---|
| La chiamata a Tool / Integration fallisce | Il grafo prosegue senza i dati. Le tue condizioni a valle dovrebbero gestire la variabile mancante. |
| Il Phone transfer fallisce (numero non valido, nessuna risposta, connessione telefonica mancante) | Il grafo torna indietro, l'agente corrente resta in linea e la conversazione prosegue normalmente. |
| Il Subagent non riesce ad avviarsi | La deviazione viene annullata, l'agente genitore resta in linea e viene pronunciata una breve frase di fallimento. |
{{missing_variable}} nel testo | Lasciata letterale nell'output — facile da individuare durante le chiamate di test. |
| Nodo Sub-workflow | Attualmente passa oltre senza fare nulla. Non farci ancora affidamento. |
| Budget di passaggi esaurito | Devia al nodo di fallback se ne è impostato uno, altrimenti l'IA riprende il controllo. |
Quando NON usare un Workflow
I workflow sono potenti ma non sono la risposta giusta per ogni agente. Rimani con un singolo prompt quando:
- La conversazione è aperta ("rispondi alle domande del chiamante sui nostri prodotti").
- Non hai una logica di ramificazione netta — la maggior parte delle decisioni sono valutazioni che l'IA gestisce bene.
- Scriveresti un nodo agent e un End call — è solo un prompt con passaggi in più.
Ricorri a un workflow quando:
- Puoi abbozzare la chiamata come un diagramma di flusso con tre o più fasi distinte.
- Hai bisogno di almeno un ramo deterministico su una variabile (una Condition).
- Vuoi riutilizzare una parte di conversazione su più agenti (un subagent).
- Stai già accumulando regole "se il chiamante dice X allora fai Y" in un prompt e non sono affidabili.