Guida passo passo per utilizzare i flussi di lavoro Dify
Guida passo passo per costruire un’app di notizie utilizzando i flussi di lavoro Dify
Introduzione
In questo blog, mostreremo come utilizzare i flussi di lavoro Dify per costruire un’app di notizie.
Il nostro obiettivo è ottenere gli ultimi articoli da Hacker News e inviare le notizie elaborate nel gruppo Feishu. Attraverso questo processo, sperimenteremo la potenza dei flussi di lavoro e la comodità dell’automazione.
Cos’è un flusso di lavoro
Prima di iniziare, diamo un’occhiata ai flussi di lavoro.
Un flusso di lavoro (Workflow) è una serie di compiti, attività o passaggi ordinati, progettati per completare un processo aziendale specifico o un flusso di lavoro. Un flusso di lavoro descrive l’ordine dei compiti, le condizioni, i responsabili e altre informazioni pertinenti, per garantire che il lavoro venga svolto secondo processi e regole stabilite. I flussi di lavoro coinvolgono spesso il coordinamento e l’interazione tra più partecipanti e sistemi.
I flussi di lavoro riducono la complessità del sistema suddividendo compiti complessi in sottocompiti (nodi) più piccoli, riducendo la dipendenza dalle tecnologie di suggerimento e dalle capacità di inferenza dei modelli, migliorando le prestazioni delle applicazioni LLM per compiti complessi e aumentando l’interpretabilità, la stabilità e la tolleranza agli errori del sistema.
Tipi di nodi utilizzati
Durante l’implementazione, utilizzeremo i seguenti tipi di nodi:
- Nodo di inizio: configura i parametri iniziali per l’avvio del programma.
- Nodo di richiesta HTTP: invia una richiesta HTTP per ottenere dati.
- Nodo di iterazione: attraversa un array per eseguire più passaggi.
- Nodo estrattore di parametri: elabora ed estrae parametri.
- Nodo di template: consente di eseguire conversioni di dati e elaborazione del testo in modo flessibile utilizzando il linguaggio di template Python Jinja2.
- Nodo LLM: chiama un modello di linguaggio di grandi dimensioni per elaborare il linguaggio naturale.
- Nodo di invio messaggi Feishu: invia le notizie elaborate a Feishu.
Passaggi operativi
Primo passo: Inizio
Attraverso il nodo di inizio, possiamo configurare i parametri iniziali per l’avvio del programma, come la chiave API, la categoria operativa, ecc. Così abbiamo fatto il primo passo. Ora iniziamo a raccogliere i dati desiderati.
Secondo passo: Richiesta HTTP
Prendiamo come esempio Hacker News, prima troviamo l’API per ottenere i dati della lista https://hacker-news.firebaseio.com/v0/beststories.json?print=pretty
.
Creiamo un nodo di richiesta HTTP, configurando la richiesta HTTP con URL, intestazioni, parametri di query, contenuto del corpo della richiesta e informazioni di autenticazione.
Il valore di ritorno della richiesta HTTP include il corpo della risposta, il codice di stato, le intestazioni della risposta e file, ecc. Queste variabili possono essere utilizzate direttamente nei nodi successivi, il che è molto comodo.
Dopo aver configurato il nodo, possiamo provare a eseguirlo.
Richiesta riuscita e abbiamo ottenuto gli ID della lista degli articoli. Tutto procede bene, ora dobbiamo attraversare gli ID per ottenere i dettagli degli articoli.
Terzo passo: Iterazione
L’iterazione serve ad eseguire più passaggi su un array fino a ottenere tutti i risultati, ed è uno strumento utile per compiti ripetitivi. Gli scenari di applicazione includono: generatori di articoli lunghi, richieste di attraversamento, ecc.
Basta inserire gli ID ottenuti dalla lista degli articoli nell’iteratore.
Tuttavia, dopo aver collegato il nodo di iterazione, ci siamo accorti che non ci sono variabili disponibili. Consultando la documentazione, scopriamo:
La condizione per utilizzare l’iterazione è garantire che il valore di input sia già formattato come oggetto lista
Nel formato di ritorno della richiesta della lista sopra, il corpo è una String. Pertanto, dobbiamo elaborare il risultato restituito, introducendo un estrattore di parametri
prima del nodo di iterazione.
Impostiamo il corpo restituito della lista come parametro di input, impostando l’estrazione dei parametri come array di numeri Ids. Dichiarando semplicemente l’istruzione:
esempio:
corpo: [1,2,3,4,5...500]
restituire Array[Numero], e mantenere solo 10
In questo modo possiamo non solo estrarre i parametri, ma anche pre-elaborarli, ad esempio limitando il numero di risultati, ecc. In questo modo, possiamo garantire che quando ci colleghiamo al nodo di iterazione, otteniamo un array di parametri ids
formattato e conforme ai requisiti.
Nel nodo di iterazione, possiamo ottenere ogni elemento attraversato, ovvero l’id
di ogni articolo. In questo modo, possiamo elaborare ulteriormente ogni id
, ad esempio inviando una nuova richiesta HTTP per ottenere i dettagli dell’articolo. Così possiamo elaborare uno ad uno gli id
degli articoli, garantendo che ogni articolo venga correttamente ottenuto e trattato.
Poi aggiungiamo il nodo HTTP per richiedere i dettagli, e possiamo eseguire per ottenere i risultati dei dettagli.
Traendo esperienza da prima, notiamo che la variabile di output dell’iteratore è Array[String].
E ora dobbiamo utilizzare il nodo LLM per organizzare i risultati restituiti, vediamo il nodo LLM.
Quarto passo: Nodo LLM
Il nodo LLM serve a chiamare un modello di linguaggio di grandi dimensioni per rispondere a domande o elaborare il linguaggio naturale.
Se stai utilizzando Dify per la prima volta, prima di scegliere un modello nel nodo LLM, devi completare in anticipo la configurazione del modello nelle Impostazioni di sistema - Fornitore di modelli.
Creiamo un nuovo nodo LLM collegato all’iterazione e configuriamo il nostro prompt. Quando inseriamo il contenuto dell’utente, ci accorgiamo che non possiamo ottenere i dettagli dell’articolo, poiché il nodo LLM non supporta parametri di input in formato array, quindi dobbiamo convertire l’array in testo per procedere.
Consultando la documentazione come convertire un array in testo, scopriamo che dobbiamo utilizzare un nodo di codice
per la conversione o un nodo di template
per la conversione.
Qui utilizziamo il nodo di template per la conversione:
In questo modo, il nostro nodo LLM può funzionare normalmente, facciamo clic su esegui per il debug.
Esecuzione riuscita.
Quinto passo: Inviare messaggi Feishu
Successivamente, invieremo le notizie elaborate a Feishu, aggiungendo un nodo - Strumento - Invia messaggio Feishu.
Dopo aver creato un bot nel gruppo Feishu, otteniamo la chiave WEBHOOK da inserire:
Risultato finale
Eseguiamo di nuovo, i risultati mostrano:
Così abbiamo completato un’app Dify per ottenere notizie - elaborare dati - inviare a IM. Attraverso questo processo, abbiamo mostrato come utilizzare i flussi di lavoro Dify per realizzare l’invio automatico di notizie e abbiamo sperimentato la potenza e la comodità dei flussi di lavoro.
Conclusione
Oggi abbiamo imparato come utilizzare i flussi di lavoro Dify per costruire un’app di notizie. Dalla configurazione dei parametri iniziali, abbiamo progressivamente ottenuto dati tramite richieste HTTP, utilizzato nodi di iterazione per elaborare i dati, quindi utilizzato nodi LLM per organizzare i dati, infine inviando le notizie elaborate a Feishu. L’intero processo non solo ha mostrato la potenza dei flussi di lavoro, ma ci ha anche fatto sperimentare la comodità dell’elaborazione automatica.
Naturalmente, le potenti funzionalità dei flussi di lavoro Dify non si fermano qui. Offrono anche più nodi e funzionalità, in attesa di essere esplorati e applicati. In futuro continueremo a pubblicare articoli correlati, guidando tutti a esplorare ulteriormente le possibilità dei flussi di lavoro Dify.