Vai al contenuto principale

Dify AI: una guida con progetto demo

Scopri cos'è Dify e come creare un agente di viaggio AI usando la sua interfaccia low-code drag-and-drop.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Dify è una piattaforma intuitiva che ti aiuta a creare applicazioni AI con poco o nessun codice. Funziona trascinando e rilasciando blocchi con funzioni diverse. Le informazioni scorrono tra i blocchi e vengono elaborate e combinate per generare risposte.

In questo articolo, spiegherò i fondamenti di Dify guidandoti passo dopo passo nella creazione di un agente di viaggio AI.

Teniamo i nostri lettori aggiornati sulle ultime novità dell'AI con The Median, la nostra newsletter gratuita del venerdì che spiega le notizie chiave della settimana. Iscriviti e resta sul pezzo in pochi minuti a settimana:

Che cos'è Dify?

Dify è una piattaforma progettata per semplificare lo sviluppo di applicazioni AI senza richiedere competenze di programmazione approfondite. Offre un ambiente low-code e user-friendly in cui puoi creare app trascinando e rilasciando diversi componenti.

Immagina Dify come una cassetta degli attrezzi digitale piena di blocchi pronti all'uso che puoi assemblare per creare software funzionante. Questo approccio rende la tecnologia più accessibile, permettendo anche a chi ha poca esperienza di programmazione di dare vita alle proprie idee.

Ogni tipo di blocco ha degli input e li trasforma in output diversi, a seconda del tipo di blocco. Le informazioni vengono passate e trasformate da un blocco all'altro, producendo il risultato finale.

Prime operazioni con Dify

Abbiamo due modi per usare Dify:

  • Installazione locale.
  • Utilizzo della versione cloud.

In questo tutorial, usiamo la versione cloud. La versione cloud di Dify offre un piano gratuito, quindi puoi seguire il tutorial senza abbonarti a un piano a pagamento.

Se ti interessa l'installazione locale, il modo più semplice è:

  1. Scaricare o clonare Dify dall'repository ufficiale.
  2. Eseguire Dify con Docker come descritto nella sezione Quick Start del README del repository.

Creare un Chatflow con Dify

Dify offre diversi tipi di app. Ci concentreremo sulla creazione di un'app Chatflow, cioè un flusso AI in cui gli utenti interagiscono con l'agente tramite un'interfaccia di chat.

Per creare una nuova app Chatflow, fai prima clic su "Create from blank" e seleziona l'opzione "Chatflow".

Creare un flusso vuoto in Dify

Per creare il flusso, impostiamo un nome e poi clicchiamo sul pulsante “Create”:

Creare un Chatflow in Dify

Questo creerà il seguente flusso predefinito:

Il Chatflow predefinito in Dify

Questo flusso ha tre blocchi:

  • Il blocco di avvio è responsabile dell'avvio del flusso. Nel caso di un Chatflow, il flusso parte quando l'utente invia un messaggio.
  • Il nodo LLM prende in input il messaggio dell'utente e lo invia a un LLM, in questo caso gpt-4.
  • Il nodo finale viene utilizzato per mostrare un messaggio nella chat. In questo esempio è collegato al nodo LLM, quindi l'output del nodo LLM viene inviato in chat.

Questi tre nodi insieme creano di fatto una chat AI simile a ChatGPT. Prima di eseguire l'app, dobbiamo installare e configurare il plugin OpenAI.

Installare e configurare il plugin OpenAI

Per installare il plugin OpenAI, procedi così:

  1. Clicca il pulsante "Plugins" in alto a destra.

Aggiungere il plugin openai su dify

  1. Clicca “Install from Marketplace”.

Accedere al marketplace su dify

  1. Digita "openai" nella casella di ricerca e clicca sul plugin OpenAI.

Installare il plugin OpenAI su dify

  1. Seleziona il plugin OpenAI e clicca “Install”.

Poi dobbiamo configurare la chiave API di OpenAI. Se non ne hai ancora una, creala qui. Tieni presente che l'uso dell'API di OpenAI non è gratuito, quindi dovrai associare un metodo di pagamento alla chiave.

Una volta ottenuta la chiave, possiamo configurarla così:

  1. Seleziona il nodo LLM.

Selezionare un blocco Dify

  1. Clicca l'icona di configurazione accanto al nome del modello.

Configurare un blocco LLM su dify

  1. Clicca il menu a tendina del modello in alto.

Il menu a tendina del modello

  1. Clicca su "Model Provider Settings" in fondo all'elenco.

Configurare il provider del modello su dify

  1. Clicca "Setup" nella sezione della chiave API.

Configurazione del modello su dify

  1. Incolla la chiave API e clicca “Save”.

Configurare la chiave API di OpenAI su dify

Eseguire l'app

Ora possiamo eseguire l'app cliccando il pulsante di anteprima:

Anteprima dell'applicazione.

Al momento non è molto interessante perché è solo un chatbot AI. Ricorda che non farà nulla finché l'utente non invia un messaggio.

Chat di esempio su dify

Creare variabili

Dify permette di memorizzare lo stato dell'applicazione assegnando valori a variabili accessibili a tutti i blocchi.

Per creare una variabile, clicca il pulsante delle variabili:

Aggiungere una variabile su dify

Creiamo una variabile per memorizzare il nome dell'utente:

Configurazione variabile su dify

Questa configurazione ha creato una variabile chiamata name che memorizza una stringa (testo). Abbiamo lasciato il valore predefinito vuoto, quindi inizialmente la variabile sarà una stringa vuota.

Ci sono diversi modi per popolarla, ma il più comune è usare un blocco AI per ricavarla automaticamente dalla conversazione. Lo vedremo tra poco. Prima impariamo come controllare il valore di una variabile per gestire il flusso dell'applicazione.

Blocchi IF/ELSE

Per verificare il valore di una variabile, possiamo usare un blocco IF/ELSE. Questo blocco serve a eseguire azioni diverse a seconda del valore di una variabile.

Per aggiungere un nuovo blocco, clicca il pulsante "+" in basso:

Aggiungere un blocco su dify

Poi seleziona il blocco che vuoi aggiungere. In questo caso, selezioniamo "IF/ELSE":

Il blocco IF/ELSE su dify

Poi clicchiamo sul blocco per configurarlo selezionando la variabile name che abbiamo creato prima.

Per provarlo, aggiungiamo due blocchi Answer. Questi blocchi servono per mostrare un messaggio in chat. Ne colleghiamo uno all'uscita IF (che viene eseguita quando la condizione è vera) e l'altro all'uscita ELSE (che viene eseguita quando la condizione è falsa).

Controllare il flusso con un blocco IF/ELSE su dify

Per l'uscita IF, ho impostato la stringa "Sorry, I don't know your name." mentre per l'ELSE ho impostato "Hello, {name}!" Possiamo usare le parentesi graffe per inserire una variabile in una stringa. Questo sarà utile anche dopo per costruire i prompt.

Possiamo provare questo Chatflow cliccando il pulsante "Preview". Nota che un Chatflow viene attivato da un messaggio dell'utente, quindi dobbiamo prima inviare un messaggio, ad esempio "Hi". Ecco i risultati a seconda che il nome sia impostato o meno (nel secondo esempio l'ho impostato manualmente nell'interfaccia delle variabili):

Risultati del controllo del flusso

Blocchi Variable Assigner e Parameter Extractor

Possiamo usare l'AI per identificare ed estrarre i valori delle variabili tramite un blocco Parameter Extractor. Questo blocco usa un LLM per estrarre informazioni dalla conversazione.

Blocco Parameter extractor

Aggiungiamo prima un blocco Parameter Extractor collegato al ramo IF. Ecco la configurazione del blocco:

Configurazione del Parameter extractor su dify

  • La INPUT VARIABLE è impostata su sys.query, che corrisponde al messaggio dell'utente. Significa che il blocco Parameter Extractor proverà a estrarre il valore dal messaggio dell'utente.
  • Nelle EXTRACTION PARAMETERS definiamo le informazioni che stiamo cercando di estrarre. Purtroppo qui non possiamo specificare direttamente una variabile, quindi dobbiamo ridefinire quell'informazione cliccando il pulsante “+”.

Configurazione del parametro su dify

  • Il campo INSTRUCTION è il prompt che guida l'LLM su cosa fare.
  • Poi aggiungiamo un blocco Variable Assigner per assegnare il valore estratto dal Parameter Extractor (se presente) alla variabile name.

Blocco Variable assigner

Assicurati di assegnare il name estratto alla variabile name.

Configurazione del Variable assigner

Dopo questo passaggio, la variabile name potrebbe essere ancora non definita perché l'utente potrebbe non aver fornito il nome. Quindi aggiungiamo un altro blocco IF/ELSE per controllare. Se il nome è impostato, salutiamo l'utente. Altrimenti, lo chiediamo.

Il flusso di estrazione del nome

Ecco un esempio di interazione:

Chat di esempio con il flusso di estrazione del nome in dify

Questo flusso illustra i fondamenti dei workflow in Dify. Indipendentemente dal messaggio dell'utente, se il nome non è definito, prova a estrarlo dal messaggio. Se fallisce, lo chiede. Altrimenti, saluta semplicemente l'utente per nome.

A questo punto non c'è alcun blocco LLM, quindi l'agente non farà altro.

Blocco Code

I blocchi Code possono essere usati per eseguire codice Python personalizzato. Modifichiamo il flusso precedente per estrarre la località dell'utente invece del nome. Poi useremo un blocco Code per fare una richiesta a un'API meteo e inviare all'utente le previsioni.

  • Crea una nuova variabile chiamata location.
  • Modifica i blocchi IF/ELSE per controllare location invece di name.
  • Modifica il blocco Parameter Extractor per estrarre la località invece del nome.
  • Modifica il blocco Variable Assigner per assegnare il valore estratto alla variabile location.
  • Modifica i blocchi Answer per chiedere la località e per mostrarla, rispettivamente.

Dopo questi passaggi, il flusso dovrebbe apparire così:

Flusso di estrazione della località in dify

Ecco un'interazione di esempio:

Chat di esempio con l'estrattore di località

Il passo successivo è aggiungere un blocco Code dopo aver ottenuto la località. Questo blocco effettua una richiesta alla OpenWeather API per chiedere le previsioni meteo per quella località.

Questa API è gratuita da usare, a patto di non effettuare troppe richieste. 

Sostituisci il secondo blocco Answer con un blocco Code. 

Il blocco Code

Configuralo per ricevere un singolo parametro con il valore di location.

Configurare il blocco code

Per il codice Python, ecco come possiamo usare il pacchetto requests per ottenere il meteo dall'OpenWeather API:

import requests

API_KEY = "PASTE_YOUR_API_KEY_HERE"

def main(location: str) -> str:
    base_url = "http://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": location,
        "appid": API_KEY,
        "units": "metric",
    }
    response = requests.get(base_url, params=params)
    data = response.json()
    if response.status_code == 200:
        weather_desc = data["weather"][0]["description"]
        temp = data["main"]["temp"]
        return {
            "result": f"Current weather in {location}: {weather_desc}, Temperature: {temp}°C"
        }
    else:
        return {
            "result": "Could not retrieve weather data",
        }

Infine, colleghiamo l'output del nodo Code a un nodo Answer per mostrarlo all'utente.

Mostrare il risultato del blocco code

Ora abbiamo un Chatflow che può dirci le previsioni del tempo:

Esempio di chat con l'agente meteo

Progetto: creare un agente AI per pianificare viaggi

Ora abbiamo tutti gli strumenti per costruire un agente di viaggio AI. Le possibilità sono infinite, ma per non complicare troppo questo tutorial lo terremo semplice.

L'agente si concentrerà sulla pianificazione di un singolo giorno di viaggio. Inizierà raccogliendo la località dell'utente e i tipi di attività che gli piace fare. Per farlo, usiamo due variabili:

  • location: Memorizza la località in cui l'utente sta viaggiando.
  • activities: Un array di stringhe che memorizza le attività che l'utente vuole fare.

Configurazione della variabile activities in dify

Ecco come possiamo creare un flusso per estrarre entrambe le variabili:

Il flusso dual parameter extractor in dify

In questo esempio, iniziamo con un blocco di estrazione dei parametri per estrarre sia la location sia l'elenco di activities.

La configurazione del dual parameter extractor

Poi usiamo blocchi IF/ELSE per verificare se ciascuno di questi parametri è stato estratto e aggiornare le variabili, se lo sono. A differenza dei nostri esempi precedenti, questo permette all'utente di aggiornare i valori.

Al termine dell'estrazione dei valori e dell'assegnazione delle variabili, aggiungiamo un altro blocco IF/ELSE per controllare se mancano valori. Se manca qualcosa, chiediamo esplicitamente all'utente di fornirlo.

Richiedere i valori quando l'utente non li ha forniti.

Se sia location che activities sono definite, usiamo il blocco Code creato prima per ottenere il meteo della località indicata. Infine, forniamo meteo, località e attività a un blocco LLM per pianificare la giornata dell'utente.

Configurazione LLM dell'agente di viaggio.

Il blocco LLM è configurato con un prompt di sistema che dice al modello cosa fare. Località, attività e meteo vengono inseriti al suo interno. Ecco la parte finale del flusso:

Il flusso finale

Ecco un'interazione di esempio con l'agente:

Interazione di esempio con l'agente di viaggio in dify

Dalla risposta vediamo che, grazie al nodo Code, l'agente può fornire il meteo all'utente e tenerne conto nella pianificazione delle attività.

Per come è stato impostato il flusso, se l'utente fornisce subito le informazioni nel primo messaggio, l'agente proporrà direttamente un piano per la giornata.

Un altro esempio in cui l'utente fornisce direttamente le informazioni.

Definire un saluto personalizzato

Potresti notare che l'agente ha iniziato salutando l'utente con un messaggio:

Messaggio di saluto

Per abilitarlo, dobbiamo attivare la funzione Conversation Opener.

Accedere alle funzionalità di Dify

Abilitare il messaggio di saluto su dify

Strumenti di Dify

In questo tutorial abbiamo imparato i blocchi fondamentali di Dify. Un aspetto che non abbiamo trattato sono gli strumenti.

In Dify, gli strumenti sono potenti estensioni che permettono ai tuoi agenti AI di interagire con il mondo esterno oltre i limiti di un modello linguistico. Mentre un LLM può ragionare e generare risposte in base ai suoi dati di addestramento e al contesto del prompt, non ha accesso in tempo reale a dati live o servizi esterni.

Gli strumenti risolvono questo problema consentendo al tuo agente di effettuare chiamate API, interrogare database, eseguire calcoli, recuperare documenti e altro ancora, fungendo di fatto da ponte tra la tua AI e le fonti di informazione esterne.

Accedere agli strumenti di Dify

Puoi configurare gli strumenti in Dify tramite l'interfaccia visiva della piattaforma specificando il tipo di strumento (come richieste HTTP, interpreti di codice o plugin di terze parti), lo schema di input/output e gli eventuali requisiti di autenticazione. Una volta configurati, questi strumenti possono essere utilizzati nel flusso del tuo agente tramite i blocchi Tool, che ti consentono di passare dati da e verso lo strumento e di fornire i risultati ai nodi LLM o ad altri blocchi logici.

Aggiungere un blocco tool

Questo rende i tuoi agenti non solo più intelligenti, ma anche orientati all'azione, in grado di fornire risposte aggiornate e pertinenti al contesto interagendo con servizi reali.

Nel nostro esempio, abbiamo usato un blocco code per effettuare una richiesta all'API meteo. Un'alternativa sarebbe stata creare uno strumento e fornirlo all'LLM.

Conclusione

In questo tutorial, abbiamo esplorato alcuni dei blocchi fondamentali di cui avrai bisogno per iniziare a lavorare con Dify. Tuttavia, Dify offre molte altre funzionalità e capacità da scoprire.

Per consolidare la comprensione, un ottimo esercizio sarebbe migliorare l'agente di viaggio che abbiamo creato. Valuta di aggiungere funzionalità come la ricerca su internet per trovare attività locali online, così da arricchire le capacità dell'agente e fornire suggerimenti più dinamici.

Se ti interessano i builder di agenti AI come Dify, ti consiglio di consultare i nostri altri tutorial per continuare a imparare:


François Aubry's photo
Author
François Aubry
LinkedIn
Ingegnere full‑stack e fondatore di CheapGPT. Insegnare è sempre stata la mia passione. Fin dai primi anni da studente, cercavo con entusiasmo occasioni per fare da tutor e aiutare altri studenti. Questa passione mi ha portato a intraprendere un dottorato, durante il quale ho anche svolto il ruolo di assistente alla didattica a supporto del mio percorso accademico. In quegli anni ho trovato enorme soddisfazione nell'ambiente tradizionale dell'aula, creando connessioni e facilitando l'apprendimento. Con l'avvento delle piattaforme di apprendimento online, però, ho riconosciuto il potenziale trasformativo dell'educazione digitale. Di fatto, ho partecipato attivamente allo sviluppo di una di queste piattaforme nella nostra università. Sono profondamente impegnato a integrare i principi dell'insegnamento tradizionale con metodologie digitali innovative. La mia passione è creare corsi non solo coinvolgenti e informativi, ma anche accessibili a chi apprende in questa era digitale.
Argomenti
AI Agents
Intelligenza artificiale

Impara l'AI con questi corsi!

{count, plural, one {Corso} other {Corsi}}

Introduzione agli AI Agents

{hours} ore {minutes} min
145.1K
Scopri le basi degli agenti AI, come funzionano e come si usano nella vita di tutti i giorni, senza bisogno di programmare.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

{count, plural, one {blog} other {blogs}}

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

{count, plural, one {blog} other {blogs}}

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

{count, plural, one {blog} other {blogs}}

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro