Skip to content

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 → Message

Configurazione Completa

Nodo Begin

ParametroValore
modeconversational
inputFields(vuoto)

Nodo Retrieval (retrieval_1)

ParametroValore
query{{sys.query}}
topK10
scoreThreshold0.5
useRerankingtrue
companyDocstrue
knowledgeBasetrue
legalSourcesfalse

Nodo LLM (llm_1)

ParametroValore
modelwriter
temperature0.3
maxTokens2048

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)

ParametroValore
content{{llm_1.content}}
formatmarkdown
showCitationstrue

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 statico

Configurazione Completa

Nodo Begin

ParametroValore
modeconversational

Nodo Categorize (categorize_1)

ParametroValore
input{{sys.query}}
minConfidence0.65

Categorie:

NomeDescrizioneGoto
TecnicoDomande su prodotti, specifiche tecniche, procedure, manuali, installazioni, configurazioni, guasti tecniciretrieval_tecnico
SempliceDomande di carattere generale, saluti, richieste di chiarimento breve, domande sui servizi basellm_rapido
FuoriAmbitoDomande non pertinenti all'attivita aziendale, argomenti personali, contenuti non consentitimessage_fuori_ambito

Ramo Tecnico

Nodo Retrieval (retrieval_tecnico):

ParametroValore
query{{sys.query}}
topK15
useRerankingtrue
companyDocstrue
knowledgeBasetrue

Nodo LLM writer (llm_tecnico):

ParametroValore
modelwriter
temperature0.2
maxTokens3000

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):

ParametroValore
content{{llm_tecnico.content}}
formatmarkdown
showCitationstrue

Ramo Semplice

Nodo LLM planner (llm_rapido):

ParametroValore
modelplanner
temperature0.5
maxTokens512

System Prompt:

Sei un assistente aziendale cordiale. Rispondi in modo conciso e diretto.

User Prompt:

{{sys.query}}

Nodo Message (message_rapido):

ParametroValore
content{{llm_rapido.content}}
formatmarkdown
showCitationsfalse

Ramo Fuori Ambito

Nodo Message (message_fuori_ambito):

ParametroValore
contentQuesta domanda non rientra nell'ambito dell'assistente. Puoi chiedermi informazioni sui prodotti, procedure tecniche o servizi aziendali.
formatplain
showCitationsfalse

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 Negativo

Configurazione Completa

Nodo Begin

ParametroValore
modetask

Input Fields:

NomeLabelTipoRequired
tipoSinistroTipo di Sinistroselect [Auto, Vita, Casa, Responsabilita Civile, Altro]Si
dataSinistroData dell'EventodateSi
descrizioneDescrizione dell'AccadutotextSi
numeroPolizzaNumero di PolizzastringSi
importoStimatoImporto del Danno Stimato (€)numberNo

Nodo Categorize (categorize_1)

ParametroValore
input{{sys.inputs.tipoSinistro}}: {{sys.inputs.descrizione}}
minConfidence0.70

Categorie:

NomeDescrizioneGoto
AutoIncidenti stradali, danni al veicolo, furto auto, responsabilita civile autovarassign_query
VitaDecesso, invalidita permanente, malattia grave, infortunivarassign_query
CasaDanni all'abitazione, incendio, alluvione, furto in casa, responsabilita civile casavarassign_query
RCResponsabilita civile verso terzi, danni a persone o cose causati dall'assicuratovarassign_query
AltroSinistri non classificabili nelle categorie precedentivarassign_query

(Tutte le categorie convergono sul nodo successivo; il valore {{categorize_1.category}} viene usato nella query)

Nodo VariableAssigner (varassign_query)

yaml
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)

ParametroValore
query{{varassign_query.queryRicerca}}
topK20
scoreThreshold0.45
useRerankingtrue
companyDocstrue
knowledgeBasetrue
legalSourcestrue

Nodo LLM Analisi Copertura (llm_analisi)

ParametroValore
modelwriter
temperature0.1
maxTokens3000
jsonModefalse

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)

ParametroValore
elseGotouserfillup_integrativi

Condizioni:

VariabileOperatoreValoreGoto
{{llm_analisi.content}}containsCOPERTURA CONFERMATAllm_report_positivo

Ramo Positivo — LLM Report (llm_report_positivo)

ParametroValore
modelwriter
temperature0.2
maxTokens2500

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)

ParametroValore
content{{llm_report_positivo.content}}
formatmarkdown
showCitationstrue

Ramo Negativo — UserFillUp (userfillup_integrativi)

ParametroValore
messageL'analisi iniziale non ha individuato una copertura certa. Per procedere con la valutazione, ti chiediamo di fornire la documentazione integrativa indicata di seguito.

Fields:

NomeLabelTipoRequired
fotoDannoFotografie del dannofileSi
periziaPerizia tecnica o stima dei dannifileNo
documentoProprietaDocumento di proprieta del bene assicuratofileNo
noteAggiuntiveNote aggiuntive o chiarimentitextNo

Tips: Formati accettati: PDF, JPG, PNG, DOCX. Dimensione massima per file: 20MB.

Retrieval Supplementare (retrieval_supplementare)

ParametroValore
query{{varassign_query.queryRicerca}} esclusioni limitazioni franchigia massimali
topK15
companyDocstrue
knowledgeBasetrue
legalSourcestrue

LLM Report Negativo (llm_report_negativo)

ParametroValore
modelwriter
temperature0.1
maxTokens3000

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)

ParametroValore
content{{llm_report_negativo.content}}
formatmarkdown
showCitationstrue

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

Queria - Document Intelligence con Cog-RAG