I moderni sistemi di AI si stanno evolvendo oltre le semplici interazioni di prompt-risposta. Gli agenti di oggi possono eseguire ragionamenti strutturati e in più fasi, processi decisionali e coordinare attività complesse in modo autonomo. Agente AI Questa capacità emergente è nota come workflow agentico—un potente cambiamento nel machine learning in cui gli agenti operano attraverso una serie di passaggi logici per risolvere i problemi in modo più efficace.
In questo tutorial, esploreremo come creare tali workflow di agentic AI utilizzando due strumenti chiave: LangGraph, un framework per la costruzione di percorsi di ragionamento basati su grafici e i modelli IBM Granite, una soluzione robusta che integra questa struttura. Ogni fase del workflow, chiamata "nodo", è gestita da un agente, tipicamente basato su modelli linguistici di grandi dimensioni. Questi agenti si spostano tra gli stati in base agli output del modello o alla logica condizionale, formando un grafico dinamico e basato sulle decisioni.
Per dare vita a questi workflow, esamineremo più da vicino due componenti essenziali: LangGraph e Granite.
LangGraph è un potente framework progettato per semplificare lo sviluppo di workflow basati su AI rappresentando i modelli AI come agenti stateful all'interno di un grafico computazionale. Consente agli sviluppatori di creare sistemi Scalabili, modulari in cui ogni comportamento o punto decisionale è definito come un nodo nel grafico.
Con LangGraph puoi:
I sistemi e i framework multiagente come LangGraph, se applicati alle attività di AI generativa (gen AI), in genere strutturano l'esecuzione delle attività come workflow sequenziali o condizionali. Che tu stia lavorando conLangChain, i modelli IBM Granite, i modelli GPT di OpenAI o altri strumenti di intelligenza artificiale, LangGraph aiuta a ottimizzare il workflow per scalabilità e prestazioni migliori.
LangGraph introduce un approccio moderno all'orchestrazione delle tecnologie AI, scomponendo i workflow complessi in componenti modulari e intelligenti. A differenza dell'automazione tradizionale o dell'automazione robotica dei processi (RPA), LangGraph consente l'esecuzione di attività dinamiche e sensibili al contesto utilizzando logica e memoria in tempo reale. Ecco i quattro componenti chiave su cui si basa questo framework:
Insieme, questi componenti consentono a LangGraph di trasformare il modo in cui le organizzazioni progettano ed eseguono i workflow basati su AI, colmando il divario tra gli strumenti AI e i processi aziendali del mondo reale.
Granite-4.0-Tiny-Preview, sviluppato da IBM Research, è un modello di linguaggio open source leggero ma efficiente, progettato per risolvere problemi complessi e attività pratiche di elaborazione del linguaggio naturale (NLP). Sebbene sia più piccolo dei modelli commerciali come GPT-4, Granite è veloce, efficiente e completamente compatibile con Hugging Face, una caratteristica che lo rende un'ottima scelta per gli sviluppatori che cercano l'efficienza operativa senza rinunciare alle prestazioni.
Granite eccelle in:
In questo tutorial, il modello Granite svolge un ruolo chiave in diverse fasi del workflow agentico, supportando sia la risoluzione dei problemi che la generazione di contenuti. Il suo design leggero lo rende adatto per le applicazioni del mondo reale in cui l'intervento umano potrebbe essere limitato e in cui modelli di progettazione scalabile sono essenziali per creare solide soluzioni di AI su diversi set di dati e fornitori.
In questo tutorial, creeremo un workflow che funge da assistente creativo per la scrittura di brevi sceneggiature animate.
Data un'idea di storia da parte dell'utente, l'agente si occuperà di:
Questo caso d'uso è progettato per mostrare sia le funzionalità di ragionamento che quelle generative di un modello linguistico, strutturato tramite il workflow compositivo di LangGraph.
Ognuno dei passaggi seguenti viene implementato come nodo LangGraph:
Questi nodi sono collegati in sequenza in un LangGraph e il modello si sposta attraverso di essi portando avanti un dizionario di stati modificabile.
Questo workflow crea un equilibrio tra generazione creativa e pianificazione strutturale. Dimostra:
Inoltre si ridimensiona bene, puoi facilmente estenderlo aggiungendo passaggi di revisione, più generatori di scene o persino ramificazioni basate sui personaggi.
Per creare un progetto watsonx.ai è necessario un account IBM Cloud .
Sebbene sia possibile scegliere tra diversi strumenti, questo tutorial illustra come configurare un account IBM per utilizzare un Jupyter Notebook.
Questo passaggio apre un ambiente notebook in cui è possibile copiare il codice da questo tutorial. In alternativa, puoi scaricare questo notebook sul tuo sistema locale e caricarlo nel tuo progetto watsonx.ai come asset. Per visualizzare altri tutorial su Granite, visita l'IBM Granite Community. Questo tutorial è disponibile anche su GitHub
Questa cella installa le librerie di base necessarie per utilizzare il modello IBM Granite ospitato su Hugging Face:
Il
Nota: se stai eseguendo questo tutorial in un ambiente virtuale e non hai langgrapg preinstallato, usa pip install langgraph per installarlo nel tuo ambiente locale.
Questa cella importa tutte le librerie principali necessarie per creare ed eseguire il workflow:
Insieme, queste importazioni preparano l'ambiente per l'interazione dei modelli, la strutturazione del workflow e la presentazione dell'output.
Questa cella carica un modello
Il
Questo passaggio inizializza efficacemente il modello Granite come "motore di ragionamento" alla base del nostro workflow.
Questa funzione,
Dettagli principali:
Questa funzione verrà riutilizzata in tutto il workflow agentico per richiamare il modello Granite in vari nodi decisionali o di generazione.
Questa funzione,
Input:
Costruzione del prompt: la richiesta chiede al modello di:
Generazione del testo: il prompt viene passato alla funzione di utilità
Analisi dell'output: un semplice ciclo estrae il genere e il tono dalla risposta del modello in base ai prefissi di riga (
Aggiornamento stato: i valori
Questo nodo agisce come classificatore creativo, consentendo ai nodi successivi di generare contorni, strutture e scene contestualmente allineati, utilizzando il genere e il tono come parametri fondamentali.
Il
Input: la funzione riceve il dizionario di stato contenente:
Costruzione del prompt: il modello è incaricato di:
Generazione del testo: il prompt viene inviato a
Aggiornamento dello stato: il contorno della trama generata viene aggiunto allo stato sotto la chiave
Questo nodo traduce l'intento creativo astratto in uno schizzo narrativo, fornendo un'impalcatura per la struttura dettagliata in tre atti che segue. Assicura che i nodi a valle funzionino a partire da una linea di base coerente e fantasiosa.
Il
Input: il nodo accetta il dizionario di stato, che ora include:
Costruzione del prompt: il modello è incaricato di:
Requisiti della scena:
Generazione di testo:
Aggiornamento dello stato: la scena generata viene aggiunta al dizionario di stato sotto la chiave
Introduce l'immersione narrativa e la narrazione visiva nel workflow. Invece di limitarsi a riassumere la storia, questo nodo la fa rivivere con dettagli sensoriali ed emotivi, essenziali per la sceneggiatura di cortometraggi animati.
Il
Input: il nodo si aspetta lo stato
Costruzione del prompt: il modello viene guidato verso:
Linee guida per il dialogo:
Generazione: la chiamata
Aggiornamento dello stato: la finestra di dialogo viene salvata nello stato con la chiave
Questa funzione ausiliaria
Scopo della funzione: racchiudere un nodo (ad esempio, generate_scene_node) con un decorator che registra:
Parametri:
Wrapper interno:
Restituisce: una versione modificata della funzione che aggiunge messaggi di avanzamento ma per il resto si comporta in modo identico.
Man mano che i workflow progrediscono, diventa importante tenere traccia della fase che viene eseguita, soprattutto se alcune fasi (come la generazione o la modifica) richiedono più tempo o possono causare problemi come il sovraccarico della memoria. Il wrapper dell'avanzamento garantisce la trasparenza ed è utile per il debug e la diagnostica del tempo di esecuzione.
Questa cella definisce la logica del workflow per generare una breve storia animata utilizzando LangGraph, un framework di programmazione basato su grafici compositivi progettato per il flusso di lavoro LLM. Ogni passaggio nel grafico rappresenta un'attività creativa e viene eseguito in una sequenza specifica per produrre la sceneggiatura finale.
Componenti del workflow:
Registrazione del nodo con monitoraggio dei progressi: ogni passaggio (selezione del genere, generazione di contorni, scrittura di scene, scrittura di dialoghi) viene aggiunto come nodo con il wrapper with_progress () -
Questo approccio garantisce che ogni nodo registri il tempo di esecuzione e il progresso quando viene eseguito.
Edge dei workflow (sequenziamento dei nodi): la sequenza della pipeline creativa è chiaramente definita:
Questa struttura consente un workflow LLM modulare, leggibile e debuggabile. Ogni fase del processo creativo è isolata, può essere profilata separatamente e successivamente scambiata o estesa (ad esempio, aggiungendo un passaggio "revisiona scena" o un nodo "riepiloga output"). Il flag
Quest'ultima cella di codice è dove esegui l'intero workflow creativo e mostra i risultati di ogni fase della generazione della storia.
Visualizzazione dei risultati: il dizionario di stato finale ora contiene chiavi popolate da vari nodi:
Questa sezione dimostra come l'intento dell'utente viene trasformato in un miniscript completo attraverso un workflow modulare e graduale. Si tratta di una pipeline creativa end-to-end interattiva, interpretabile e personalizzabile.
Nota: l'esecuzione del codice richiederà circa 15-17 minuti se si utilizza una GPU o un TPU. Ci vorranno circa 65-70 minuti di tempo su un ambiente virtuale locale per eseguire e generare l'output, in base all'infrastruttura utilizzata per eseguire il cede.
Cerchiamo di capire come il sistema trasforma il prompt dell'utente, "Voglio scrivere una storia fantasy per bambini su un drago perduto che trova la sua casa", in una storia animata completa. Ogni passaggio si basa su quello precedente, guidato dai nodi creativi del workflow e potenziato dal modello Granite.
1. Genere e tono. Il workflow inizia interpretando il prompt dell'utente: Voglio scrivere una storia fantasy per bambini su un drago perduto che trova la sua casa. Sulla base di questo input, select_genre_node classifica correttamente la narrazione come fantasy stravagante e identifica il tono incantevole e commovente appropriato. Questo risultato è accurato e contestualmente allineato, poiché l'uso di frasi come "stravagante", "per bambini" e "drago perduto che trova la sua casa" segnala chiaramente uno stile narrativo magico ma delicato. Il genere e il tono agiscono come parametri fondamentali che modellano ogni fase di generazione successiva nel workflow.
2. Trama e descrizioni dei personaggi. Nella fase successiva, al modello viene chiesto di creare una trama basata sul genere, sul tono e sull'idea originale dell'utente identificati. L'output include non solo un riepilogo della storia di 3-5 frasi, ma anche descrizioni di personaggi bonus, probabilmente dovute a un leakage del prompt o alla formattazione conservata delle istruzioni rispetto alle iterazioni precedenti.
La trama è incentrata su una ragazza di nome Lily che scopre un drago ferito e lo aiuta a tornare nella foresta incantata con la guida di un vecchio erborista. Questa trama rispecchia esattamente l'intento dell'utente: concentrarsi su un viaggio magico a misura di bambino con sfumature emotive sulla guarigione, l'appartenenza e l'amicizia. Gli schizzi dei personaggi del drago, di Lily e dell'erborista aggiungono profondità, trasformando un'idea vaga in un concetto strutturato con ruoli, personalità e responsabilità narrative definiti. Questo passaggio garantisce che la storia passi da un'intenzione astratta a una struttura tangibile adatta all'adattamento cinematografico.
3. Scena chiave. Dato lo schema completo della trama,
Il momento scelto è quando Lily si prende cura del drago ferito nella foresta incantata, stabilendo un rapporto emotivo e una comprensione reciproca tra i personaggi. Questo momento è critico perché fa da snodo alla storia verso il ritorno a casa del drago. La scena è ricca di immagini ed emozioni, aderisce ai vincoli "stravaganti" e "commoventi" pur essendo visivamente espressiva, perfettamente adatta per un breve formato animato.
La capacità del modello di mantenere la coerenza del tono e del genere tra le fasi dimostra il valore del workflow di LangGraph per il passaggio degli stati e le funzionalità del modello Granite.
4. Dialogo in formato sceneggiatura. Infine,
Ogni fase del workflow traduce il prompt originale "una storia fantasy per bambini su un drago perduto che trova la sua casa" in un output narrativo strutturato, creativo ed espressivo. Dalla selezione del genere alla formattazione dei dialoghi, il sistema crea in modo incrementale un arco narrativo coerente. Il framework LangGraph garantisce che le transizioni tra le attività siano connesse logicamente e il modello IBM Granite consente la generazione di testo sensibile al contesto con un tono coerente. Il risultato è una breve storia di animazione compatta e pronta per lo schermo che emerge interamente da un input utente a riga singola e che dimostra la potenza pratica dei workflow agentici nelle applicazioni di AI creative.
Per rendere l'esperienza di narrazione ancora più coinvolgente, ecco una semplice visualizzazione basata su HTML che formatta magnificamente gli elementi della storia generati: genere, tono, trama, scena e dialogo. Inoltre, con un solo clic, è possibile scaricare l'intero script come file di testo per un uso futuro o per la condivisione. Diamo vita alla storia sullo schermo!
Questo tutorial utilizza il modello per la generazione di testo Granite-4.0-Tiny-Preview. Sebbene sia uno dei modelli più piccoli della famiglia Granite, richiede comunque un ambiente abilitato alla GPU per funzionare in modo efficiente, soprattutto quando si eseguono più nodi in un workflow LangGraph.
Configurazione consigliata:
Note sulle prestazioni:
Se stai eseguendo questo tutorial in un ambiente notebook in hosting (ad esempio, IBM watsonx.ai o Google Colab Pro), assicurati che la GPU sia abilitata nelle impostazioni di tempo di esecuzione.
Per gli ambienti con poche risorse, prendi in considerazione:
In questo tutorial, abbiamo creato un workflow modulare e agentico per lo storytelling utilizzando LangGraph e il modello linguistico Granite-4.0-Tiny-Preview di IBM. Partendo da un semplice prompt, abbiamo costruito una pipeline passo dopo passo che classifica genere e tono, genera una struttura della trama, scrive una scena chiave e termina con dialoghi in stile sceneggiatura. Lungo il percorso, abbiamo dimostrato come:
Questo framework agentico non è solo potente per la scrittura delle sceneggiature, ma può essere esteso a un'ampia gamma di casi d'uso creativi o di routing delle attività. Con pochi nodi, hai costruito un assistente di scrittura in miniatura in grado di trasformare un'idea stravagante in una storia pronta per la sceneggiatura.
Che tu sia uno sviluppatore, un narratore o un ricercatore, questo tutorial ti offre una base pratica per esplorare l'ingegneria del workflow basata su LLM nei domini creativi.
Vuoi creare i tuoi agenti? Lascia fluire la creatività con i modelli IBM Granite e IBM watsonx Orchestrate.
Crea, implementa e gestisci assistenti e agenti AI potenti che automatizzano workflow e processi con l'AI generativa.
Costruisci il futuro della tua azienda con soluzioni AI di cui puoi fidarti.
I servizi di AI di IBM Consulting aiutano a reinventare il modo in cui le aziende lavorano con l'AI per la trasformazione.
1 Lang Cao. 2024. GraphReason: Enhancing Reasoning Capabilities of Large Language Models through A Graph-Based Verification Approach. In Proceedings of the 2nd Workshop on Natural Language Reasoning and Structured Explanations (@ACL 2024), pagine 1–12, Bangkok, Thailandia. Association for Computational Linguistics.