Come ho strutturato un flusso multi-agente con Mastra AI per la pianificazione giornaliera

Pubblicato il 11/09/2025
Nel progetto Sarion, assistente IA personale, ho sviluppato un sistema avanzato di pianificazione giornaliera utilizzando Mastra AI, un framework open-source basato su TypeScript per la creazione di agenti intelligenti. Mastra consente di orchestrare flussi di lavoro complessi con facilità, grazie alla sua architettura modulare e alla gestione avanzata degli stati.
Cos’è Mastra AI?
Mastra AI è una piattaforma progettata per costruire applicazioni AI complesse, offrendo strumenti per la gestione degli agenti, l’orchestrazione dei flussi di lavoro, l’integrazione con modelli linguistici e la gestione della memoria. La sua struttura a flussi di lavoro consente di definire sequenze di operazioni condizionali, convalidare i dati e gestire gli stati in modo efficiente.
Il flusso “Plan My Day”
Il flusso “Plan My Day” è stato progettato per raccogliere dati, generare un piano giornaliero, affinare il piano attraverso iterazioni e tradurlo nella lingua preferita dell’utente. Questo processo è suddiviso in due workflow principali: raccolta dati e gestione del ciclo e flusso di generazione e rifinitura .
Ho scelto di suddividere e specializzare i diversi agenti per ottimizzare costi e tempi di esecuzione.
L'utilizzo di un unico agente comporta diversi svantaggi quali l'imprevedibilità dei tempi di esecuzioni (con il relativo costo), una maggiore complessità del prompt che potrebbe sfuggire dal controllo alla lunga, la necessità di dover utilizzare un unico LLM potente, ma costoso invece che diversi LLM più piccoli e magari specializzati, la difficoltà nel poter scalare solo i flussi che lo necessitano.
1. Raccolta dei dati e gestione ciclo
Il primo passo consiste nella raccolta delle informazioni necessarie per creare un piano giornaliero. Il codice seguente definisce il flusso di lavoro per questa fase:
export const planMyDayWorkflow = createWorkflow({ id: "planMyDayWorkflow", inputSchema, outputSchema, }) .then(gatherData) .dowhile(refinePlan, async ({ inputData }) => { return !inputData.isPlanRefined && inputData.repetition < MAX_REPETITIONS; }) .map(async ({ inputData }) => { return { response: inputData.dayPlan, }; }) .then(translateDayPlan) .commit();
In questo flusso, vengono raccolti dati come attività quotidiane, compiti mancanti dai giorni precedenti, voci del diario degli ultimi sei mesi, compiti generali e note personali che sono poi inviate come dati in ingresso al flusso "refinePlan" che sarà ciclato fino a che o si raggiunge il massimo numero di ripetizioni o il piano viene considerato rifinito.
2. Flusso di affinamento del piano
Una volta raccolti i dati, il piano viene affinato per migliorarne la qualità e la fattibilità. Il codice seguente definisce il flusso di lavoro per questa fase:
export const refinePlan = createWorkflow({ id: "refinePlanWorkflow", inputSchema: inputSchemaRefinePlan, outputSchema: outputSchemaRefinePlan, }) .branch([ [ async ({ inputData: { refinementSuggestions } }) => !refinementSuggestions, generateTaskList, ], [ async ({ inputData: { refinementSuggestions } }) => !!refinementSuggestions, correctTaskList, ], ]) .map(async ({ inputData }) => { const { "correct-task-list": correctTaskList, "generate-task-list": generateTaskList, } = inputData; }) .branch([ [ async ({ inputData: { refinementSuggestions } }) => !refinementSuggestions, generateDayPlan, ], [ async ({ inputData: { refinementSuggestions } }) => !!refinementSuggestions, correctDayPlan, ], ]) .map(async ({ inputData }) => { const { "generate-day-plan": generateDayPlan, "correct-day-plan": correctDayPlan, } = inputData; }) .then(evaluateRefinement) .commit();
In questa fase, il sistema valuta la qualità del piano, corregge eventuali errori e affina ulteriormente il piano in base al feedback ricevuto.
La struttura che ho scelto è quindi questa:
Caratteristiche principali
- Consapevolezza contestuale: Utilizza i dati storici per prendere decisioni di pianificazione più informate.
- Affinamento iterativo: Migliora continuamente il piano in base al feedback ricevuto.
- Autocorrezione: Identifica e corregge autonomamente eventuali problemi nel piano.
- Supporto multilingue: Traduce il piano finale nella lingua preferita dell’utente.
- Gestione degli errori: Log completa ad ogni passo e gestione degli errori per prevenire loop infiniti.
Conclusioni
Utilizzando Mastra AI, ho creato un sistema di pianificazione giornaliera altamente personalizzato e adattivo, in grado di apprendere dalle interazioni passate e migliorare continuamente. Questo approccio basato su flussi di lavoro modulari e agenti intelligenti offre una soluzione scalabile e flessibile per la gestione delle attività quotidiane.
Se sei interessato a esplorare ulteriormente le potenzialità di Mastra AI, ti invito a provare l’applicazione Sarion disponibile su getsarion.com.
Sarion sfrutta la potenza di Mastra per offrire un’esperienza di pianificazione intelligente e personalizzata.
Parlami della tua idea
Hai un'idea che vuoi trasformare in realtà? Contattami per discutere come posso aiutarti a costruire il tuo MVP.
Contattami