Esempi Pratici
Tre esempi con complessita crescente: dal flusso RAG minimo fino a un agente assicurativo completo con form, categorizzazione, routing, sospensione e report differenziati.
Esempio 1 — RAG Chat (Semplice)
Obiettivo: Rispondere alle domande degli utenti attingendo ai documenti aziendali e alla Knowledge Base. Il flusso piu semplice e piu comune.
Flusso:
Begin → Retrieval → LLM → MessageConfigurazione Completa
Nodo Begin
| Parametro | Valore |
|---|---|
| mode | conversational |
| inputFields | (vuoto) |
Nodo Retrieval (retrieval_1)
| Parametro | Valore |
|---|---|
| query | {{sys.query}} |
| topK | 10 |
| scoreThreshold | 0.5 |
| useReranking | true |
| companyDocs | true |
| knowledgeBase | true |
| legalSources | false |
Nodo LLM (llm_1)
| Parametro | Valore |
|---|---|
| model | writer |
| temperature | 0.3 |
| maxTokens | 2048 |
System Prompt:
Sei un assistente aziendale preciso e professionale. Rispondi sempre in italiano.
Basa le tue risposte ESCLUSIVAMENTE sui documenti forniti nel contesto.
Se l'informazione richiesta non e presente nei documenti, dillo esplicitamente: non inventare.
Cita sempre le fonti con riferimenti numerici [N].User Prompt:
Documenti di contesto:
{{retrieval_1.formalized_content}}
Domanda dell'utente:
{{sys.query}}Nodo Message (message_1)
| Parametro | Valore |
|---|---|
| content | {{llm_1.content}} |
| format | markdown |
| showCitations | true |
Cosa Impari
- Come usare
{{sys.query}}come query di retrieval. - Come passare
{{retrieval_1.formalized_content}}al prompt LLM. - Il pattern fondamentale Begin → Retrieval → LLM → Message.
- Come il nodo Message gestisce citazioni e formatting.
Esempio 2 — Smart Router (Medio)
Obiettivo: Gestire domande di tipo diverso con LLM diversi. Le domande tecniche usano il modello writer per risposte approfondite; le domande semplici usano il modello planner per velocita; le domande fuori ambito ricevono un messaggio statico.
Flusso:
Begin → Categorize → [Tecnico] → LLM writer → Message risposta tecnica
→ [Semplice] → LLM planner → Message risposta rapida
→ [Fuori ambito] → Message staticoConfigurazione Completa
Nodo Begin
| Parametro | Valore |
|---|---|
| mode | conversational |
Nodo Categorize (categorize_1)
| Parametro | Valore |
|---|---|
| input | {{sys.query}} |
| minConfidence | 0.65 |
Categorie:
| Nome | Descrizione | Goto |
|---|---|---|
| Tecnico | Domande su prodotti, specifiche tecniche, procedure, manuali, installazioni, configurazioni, guasti tecnici | retrieval_tecnico |
| Semplice | Domande di carattere generale, saluti, richieste di chiarimento breve, domande sui servizi base | llm_rapido |
| FuoriAmbito | Domande non pertinenti all'attivita aziendale, argomenti personali, contenuti non consentiti | message_fuori_ambito |
Ramo Tecnico
Nodo Retrieval (retrieval_tecnico):
| Parametro | Valore |
|---|---|
| query | {{sys.query}} |
| topK | 15 |
| useReranking | true |
| companyDocs | true |
| knowledgeBase | true |
Nodo LLM writer (llm_tecnico):
| Parametro | Valore |
|---|---|
| model | writer |
| temperature | 0.2 |
| maxTokens | 3000 |
System Prompt:
Sei un esperto tecnico aziendale. Fornisci risposte dettagliate, precise e strutturate.
Usa liste puntate e intestazioni quando utile. Cita le fonti con [N].
La domanda e stata classificata come TECNICA (confidenza: {{categorize_1.confidence}}).User Prompt:
Documentazione tecnica disponibile:
{{retrieval_tecnico.formalized_content}}
Domanda tecnica:
{{sys.query}}Nodo Message (message_tecnico):
| Parametro | Valore |
|---|---|
| content | {{llm_tecnico.content}} |
| format | markdown |
| showCitations | true |
Ramo Semplice
Nodo LLM planner (llm_rapido):
| Parametro | Valore |
|---|---|
| model | planner |
| temperature | 0.5 |
| maxTokens | 512 |
System Prompt:
Sei un assistente aziendale cordiale. Rispondi in modo conciso e diretto.User Prompt:
{{sys.query}}Nodo Message (message_rapido):
| Parametro | Valore |
|---|---|
| content | {{llm_rapido.content}} |
| format | markdown |
| showCitations | false |
Ramo Fuori Ambito
Nodo Message (message_fuori_ambito):
| Parametro | Valore |
|---|---|
| content | Questa domanda non rientra nell'ambito dell'assistente. Puoi chiedermi informazioni sui prodotti, procedure tecniche o servizi aziendali. |
| format | plain |
| showCitations | false |
Cosa Impari
- Come usare Categorize per il routing semantico senza condizioni rigide.
- Come creare rami paralleli con LLM diversi per efficienza e qualita.
- Come usare
{{categorize_1.confidence}}nel prompt per trasparenza. - Come terminare rami con messaggi statici o dinamici.
Esempio 3 — Analisi Sinistro Assicurativo (Complesso)
Obiettivo: Gestire l'intera pipeline di valutazione di un sinistro assicurativo. Il flusso raccoglie i dati iniziali, categorizza il tipo di sinistro, recupera polizze e normativa applicabile, analizza la copertura e — se la copertura non e confermata — richiede documentazione integrativa all'utente prima di generare il report finale.
Flusso completo:
Begin (form)
→ Categorize (tipo sinistro)
→ VariableAssigner (prepara query)
→ Retrieval (polizze + normativa)
→ LLM Analisi (valutazione copertura)
→ Switch (COPERTURA CONFERMATA?)
→ [SI] LLM Report Positivo → Message Esito Positivo
→ [NO] UserFillUp (documenti integrativi)
→ Retrieval supplementare
→ LLM Report Negativo → Message Esito NegativoConfigurazione Completa
Nodo Begin
| Parametro | Valore |
|---|---|
| mode | task |
Input Fields:
| Nome | Label | Tipo | Required |
|---|---|---|---|
tipoSinistro | Tipo di Sinistro | select [Auto, Vita, Casa, Responsabilita Civile, Altro] | Si |
dataSinistro | Data dell'Evento | date | Si |
descrizione | Descrizione dell'Accaduto | text | Si |
numeroPolizza | Numero di Polizza | string | Si |
importoStimato | Importo del Danno Stimato (€) | number | No |
Nodo Categorize (categorize_1)
| Parametro | Valore |
|---|---|
| input | {{sys.inputs.tipoSinistro}}: {{sys.inputs.descrizione}} |
| minConfidence | 0.70 |
Categorie:
| Nome | Descrizione | Goto |
|---|---|---|
| Auto | Incidenti stradali, danni al veicolo, furto auto, responsabilita civile auto | varassign_query |
| Vita | Decesso, invalidita permanente, malattia grave, infortuni | varassign_query |
| Casa | Danni all'abitazione, incendio, alluvione, furto in casa, responsabilita civile casa | varassign_query |
| RC | Responsabilita civile verso terzi, danni a persone o cose causati dall'assicurato | varassign_query |
| Altro | Sinistri non classificabili nelle categorie precedenti | varassign_query |
(Tutte le categorie convergono sul nodo successivo; il valore {{categorize_1.category}} viene usato nella query)
Nodo VariableAssigner (varassign_query)
assignments:
- name: queryRicerca
type: concat
value: "Sinistro {{categorize_1.category}} polizza {{sys.inputs.numeroPolizza}} copertura condizioni esclusioni {{sys.inputs.descrizione}}"
- name: riepilogoSinistro
type: concat
value: |
TIPO SINISTRO: {{sys.inputs.tipoSinistro}} (categoria: {{categorize_1.category}})
DATA EVENTO: {{sys.inputs.dataSinistro}}
NUMERO POLIZZA: {{sys.inputs.numeroPolizza}}
IMPORTO STIMATO: {{sys.inputs.importoStimato}} EUR
DESCRIZIONE: {{sys.inputs.descrizione}}Nodo Retrieval Principale (retrieval_polizze)
| Parametro | Valore |
|---|---|
| query | {{varassign_query.queryRicerca}} |
| topK | 20 |
| scoreThreshold | 0.45 |
| useReranking | true |
| companyDocs | true |
| knowledgeBase | true |
| legalSources | true |
Nodo LLM Analisi Copertura (llm_analisi)
| Parametro | Valore |
|---|---|
| model | writer |
| temperature | 0.1 |
| maxTokens | 3000 |
| jsonMode | false |
System Prompt:
Sei un perito assicurativo senior con 20 anni di esperienza.
Analizza la documentazione fornita e determina se il sinistro e coperto dalla polizza.
REGOLE CRITICHE:
1. Basa la valutazione ESCLUSIVAMENTE sui documenti forniti. Non ipotizzare coperture non documentate.
2. Cita sempre i riferimenti contrattuali e normativi con [N].
3. Concludi SEMPRE la tua analisi con una delle due frasi esatte:
- "VERDETTO: COPERTURA CONFERMATA" se il sinistro rientra nelle coperture della polizza
- "VERDETTO: COPERTURA NON CONFERMATA" se mancano evidenze di copertura o ci sono esclusioni applicabili
4. Dopo il verdetto, elenca la documentazione aggiuntiva necessaria (se presente).User Prompt:
DATI SINISTRO:
{{varassign_query.riepilogoSinistro}}
DOCUMENTAZIONE POLIZZA E NORMATIVA:
{{retrieval_polizze.formalized_content}}
Esegui la valutazione peritale completa seguendo le regole operative.Nodo Switch (switch_copertura)
| Parametro | Valore |
|---|---|
| elseGoto | userfillup_integrativi |
Condizioni:
| Variabile | Operatore | Valore | Goto |
|---|---|---|---|
{{llm_analisi.content}} | contains | COPERTURA CONFERMATA | llm_report_positivo |
Ramo Positivo — LLM Report (llm_report_positivo)
| Parametro | Valore |
|---|---|
| model | writer |
| temperature | 0.2 |
| maxTokens | 2500 |
System Prompt:
Sei un esperto di comunicazione assicurativa. Redigi report professionali e chiari.User Prompt:
Sulla base della seguente analisi peritale, redigi un report ufficiale di accettazione sinistro
in italiano formale, strutturato con le sezioni: Riepilogo, Documentazione Esaminata,
Valutazione di Copertura, Prossimi Passi.
DATI SINISTRO:
{{varassign_query.riepilogoSinistro}}
ANALISI PERITALE:
{{llm_analisi.content}}Nodo Message Esito Positivo (message_positivo)
| Parametro | Valore |
|---|---|
| content | {{llm_report_positivo.content}} |
| format | markdown |
| showCitations | true |
Ramo Negativo — UserFillUp (userfillup_integrativi)
| Parametro | Valore |
|---|---|
| message | L'analisi iniziale non ha individuato una copertura certa. Per procedere con la valutazione, ti chiediamo di fornire la documentazione integrativa indicata di seguito. |
Fields:
| Nome | Label | Tipo | Required |
|---|---|---|---|
fotoDanno | Fotografie del danno | file | Si |
perizia | Perizia tecnica o stima dei danni | file | No |
documentoProprieta | Documento di proprieta del bene assicurato | file | No |
noteAggiuntive | Note aggiuntive o chiarimenti | text | No |
Tips: Formati accettati: PDF, JPG, PNG, DOCX. Dimensione massima per file: 20MB.
Retrieval Supplementare (retrieval_supplementare)
| Parametro | Valore |
|---|---|
| query | {{varassign_query.queryRicerca}} esclusioni limitazioni franchigia massimali |
| topK | 15 |
| companyDocs | true |
| knowledgeBase | true |
| legalSources | true |
LLM Report Negativo (llm_report_negativo)
| Parametro | Valore |
|---|---|
| model | writer |
| temperature | 0.1 |
| maxTokens | 3000 |
System Prompt:
Sei un esperto di comunicazione assicurativa. Redigi report professionali, trasparenti e precisi.
Il report deve essere chiaro sulle motivazioni del diniego o della richiesta integrativa,
e indicare con esattezza la documentazione necessaria per proseguire.User Prompt:
Redigi un report ufficiale di richiesta documentazione integrativa per il seguente sinistro.
Struttura il report con le sezioni: Riepilogo Sinistro, Analisi Preliminare,
Motivazione della Richiesta Integrativa, Documentazione Ricevuta, Prossimi Passi.
DATI SINISTRO:
{{varassign_query.riepilogoSinistro}}
ANALISI PERITALE INIZIALE:
{{llm_analisi.content}}
DOCUMENTAZIONE INTEGRATIVA RICEVUTA:
{{userfillup_integrativi.inputs.noteAggiuntive}}
NORMATIVA E CONDIZIONI AGGIUNTIVE:
{{retrieval_supplementare.formalized_content}}Nodo Message Esito Negativo (message_negativo)
| Parametro | Valore |
|---|---|
| content | {{llm_report_negativo.content}} |
| format | markdown |
| showCitations | true |
Cosa Impari
- Come costruire un form strutturato con Begin in mode
task. - Come usare Categorize per routing semantico con piu categorie.
- Come VariableAssigner prepara dati composti per i nodi successivi.
- Come LLM con System Prompt rigoroso produce output predicibile per Switch.
- Come Switch instrada in base al contenuto testuale della risposta LLM.
- Come UserFillUp sospende il flusso e raccoglie documenti aggiuntivi.
- Come un secondo Retrieval arricchisce il contesto dopo l'input utente.
- Come differenziare il tono e la struttura dei report per esito positivo e negativo.
Queria v3.1.2 -- Canvas Agent Builder