Logo

Guida passo passo per utilizzare i flussi di lavoro Dify

avatar admin 02 Dec 2024

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:

  1. Nodo di inizio: configura i parametri iniziali per l’avvio del programma.
  2. Nodo di richiesta HTTP: invia una richiesta HTTP per ottenere dati.
  3. Nodo di iterazione: attraversa un array per eseguire più passaggi.
  4. Nodo estrattore di parametri: elabora ed estrae parametri.
  5. Nodo di template: consente di eseguire conversioni di dati e elaborazione del testo in modo flessibile utilizzando il linguaggio di template Python Jinja2.
  6. Nodo LLM: chiama un modello di linguaggio di grandi dimensioni per elaborare il linguaggio naturale.
  7. Nodo di invio messaggi Feishu: invia le notizie elaborate a Feishu.

Passaggi operativi

Primo passo: Inizio

start.png

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.

http.png

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.
http_result.png

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.
Iteration.png

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.
Paras.png

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.
Para2.png

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.

7.png

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.

8.png

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:
9.png

10.png

In questo modo, il nostro nodo LLM può funzionare normalmente, facciamo clic su esegui per il debug.

11.png

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:
12.png

Risultato finale

Eseguiamo di nuovo, i risultati mostrano:
13.png

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.

Tags
Dify
workflow
feishu