$ cat workspace-template.yaml

C

Creazione Quiz da Folder o da File

// Crea 1 documento con domande e risposte a partire da un input (doc/video/audio) e 1 documento con le risposte corrette

Document Generation

// Canvas Preview

canvas.flow

// Instruction

instruction.md

Flusso Creazione Quiz PDF da Drive

Questo template genera un quiz e le relative risposte basandosi su un argomento e un set di documenti forniti. Il quiz viene creato in formato testuale leggibile e salvato come file PDF (o testo) in una cartella di Google Drive, insieme a un file separato contenente solo le risposte corrette.

Overview

Il workflow prende in input un argomento, un formato di quiz desiderato (es. Vero/Falso, a crocette), il numero di domande, e una cartella o un file di Google Drive da usare come base di conoscenza. Utilizza un agente RAG (Retrieval Augmented Generation) per recuperare informazioni pertinenti dai documenti forniti, quindi genera un quiz e un elenco di risposte corrette. Infine, salva il quiz e le risposte come file separati nella cartella di destinazione specificata in Google Drive.

Workflow Chain

[Input]  → [Argomento Quiz]  → [Formato Quiz]  → [Numero Domande]  → [Cartella Destinazione (Drive Emblema)]  → [Nome File Quiz]  → [Nome File Risposte]    → [RAG Agent]      → [Prompt Quiz]      → [Prompt Numero]        → [Prompt Completo]          → [Quiz Generator (a crocette)]            → [JSON → Testo Leggibile]              → [Salva PDF nella cartella]            → [Risposte Corrette]              → [Salva Risposte]

Node Reference

  • Argomento Quiz (5cd512c3-7f06-4fc3-921b-a181ae9e6f4b)
    • What it does: Definisce l'argomento principale del quiz.
    • Inputs from: Nessuno (input costante).
    • Configurable inputs: value (stringa, es. "documenti legali").
    • Output: Il testo dell'argomento.
  • Formato Quiz (eaea8ffe-b92b-4f17-9980-46da6b428ccf)
    • What it does: Specifica il formato desiderato per le domande del quiz.
    • Inputs from: Nessuno (input costante).
    • Configurable inputs: value (stringa, es. "Vero/Falso", "a crocette").
    • Output: Il testo del formato del quiz.
  • Numero Domande (2c7609fd-2910-43e5-852f-af8d17bf6bf6)
    • What it does: Imposta il numero di domande da generare per il quiz.
    • Inputs from: Nessuno (input costante).
    • Configurable inputs: value (stringa numerica, es. "10").
    • Output: Il testo del numero di domande.
  • Cartella Destinazione (Drive Emblema) (5590c31a-d0c6-4430-8610-0e80aa3d3d94)
    • What it does: Seleziona la cartella di Google Drive dove verranno salvati i file del quiz e delle risposte.
    • Inputs from: Nessuno (input costante).
    • Configurable inputs: driveItemId (ID della cartella di Drive).
    • Output: L'ID della cartella di Drive selezionata.
  • Nome File Quiz (b94e6fd3-46f5-482f-9200-0aaebf5253ac)
    • What it does: Definisce il nome del file per il quiz generato.
    • Inputs from: Nessuno (input costante).
    • Configurable inputs: value (stringa, es. "quiz").
    • Output: Il testo del nome del file del quiz.
  • Nome File Risposte (4021133b-0635-4798-bb7a-ca3c04de5606)
    • What it does: Definisce il nome del file per le risposte corrette del quiz.
    • Inputs from: Nessuno (input costante).
    • Configurable inputs: value (stringa, es. "quiz-risposte").
    • Output: Il testo del nome del file delle risposte.
  • RAG Agent (7004d0c2-e2a8-4299-aa77-5fe83ecb5f7e)
    • What it does: Recupera e analizza i contenuti da una cartella o un file di Drive basandosi su un prompt.
    • Inputs from: Argomento Quiz (input prompt), utente (input driveItemId).
    • Configurable inputs: driveItemId (ID della cartella/file di Drive).
    • Output: Il testo della risposta dell'agente (contenuto recuperato).
  • Prompt Quiz (3c74f276-c171-4d80-a394-b4fbf674d66c)
    • What it does: Unisce una parte fissa del prompt con il formato del quiz.
    • Inputs from: Formato Quiz (text2).
    • Configurable inputs: text1 (parte fissa del prompt).
    • Output: Il testo unito.
  • Prompt Numero (68a871d4-5854-45e0-a91f-8d85d7a840a2)
    • What it does: Unisce una parte fissa del prompt con il numero di domande.
    • Inputs from: Numero Domande (text2).
    • Configurable inputs: text1 (parte fissa del prompt).
    • Output: Il testo unito.
  • Prompt Completo (a2675469-5637-4251-973b-9acb5cc2b0fb)
    • What it does: Unisce le parti del prompt (Prompt Quiz e Prompt Numero) per creare il prompt finale per la generazione del quiz.
    • Inputs from: Prompt Quiz (text1), Prompt Numero (text2).
    • Configurable inputs: Nessuno (tutti gli input provengono da altri nodi).
    • Output: Il prompt completo per la generazione del quiz.
  • Quiz Generator (a crocette) (c64dfb3a-3591-491d-8123-0fe62649caab)
    • What it does: Genera il quiz in formato JSON basandosi sul contenuto recuperato e sul prompt completo.
    • Inputs from: RAG Agent (input_text), Prompt Completo (prompt).
    • Configurable inputs: language (lingua di output, impostata dinamicamente).
    • Output: Il quiz generato in formato JSON.
  • JSON → Testo Leggibile (992d2566-c142-4207-bd4d-71a3e38d7726)
    • What it does: Trasforma il quiz in formato JSON in un testo leggibile e ben formattato.
    • Inputs from: Quiz Generator (a crocette) (input_text).
    • Configurable inputs: language (lingua di output, impostata dinamicamente).
    • Output: Il quiz formattato come testo leggibile.
  • Risposte Corrette (91eca925-f213-4f12-a440-2bb80559293f)
    • What it does: Estrae le risposte corrette dal quiz JSON e le formatta in un elenco leggibile.
    • Inputs from: Quiz Generator (a crocette) (input_text).
    • Configurable inputs: language (lingua di output, impostata dinamicamente).
    • Output: L'elenco delle risposte corrette.
  • Salva PDF nella cartella (2767ada0-96c8-441d-bf2d-f0a8fcd4a81b)
    • What it does: Salva il testo del quiz formattato come file nella cartella di Drive specificata.
    • Inputs from: JSON → Testo Leggibile (text), Cartella Destinazione (Drive Emblema) (destinationFolder), Nome File Quiz (name).
    • Configurable inputs: Nessuno (tutti gli input provengono da altri nodi).
    • Output: L'ID dell'elemento di Drive salvato.
  • Salva Risposte (7b418ba7-1b18-4e69-9897-ee17c78849cb)
    • What it does: Salva il testo delle risposte corrette come file nella cartella di Drive specificata.
    • Inputs from: Risposte Corrette (text), Cartella Destinazione (Drive Emblema) (destinationFolder), Nome File Risposte (name).
    • Configurable inputs: Nessuno (tutti gli input provengono da altri nodi).
    • Output: L'ID dell'elemento di Drive salvato.

Execution Strategy

You MUST complete all 4 phases in order: Phase 1 → Phase 2 → Phase 3 → Phase 4. Do NOT skip any phase.

Phase 1: Configurazione Iniziale

  1. Risolvi la lingua di output: Determina la lingua di output desiderata. Se l'utente ha specificato una lingua nella sua richiesta, usa quella. Altrimenti, usa la lingua della richiesta dell'utente. Se non è risolvibile, imposta language su auto. Memorizza il risultato in resolvedLanguage.
  2. Raccogli i parametri di configurazione: Chiama requestUserDecision UNA VOLTA per raccogliere tutti i parametri necessari dall'utente. Tutti gli input sono obbligatori e non hanno valori predefiniti:
    requestUserDecision({  questions: [    {      key: "driveItem",      question: "Seleziona la cartella o il file di Google Drive da usare come fonte di conoscenza per il quiz.",      header: "Fonte Drive",      context: "L'agente RAG userà i documenti in questa posizione per generare il quiz. Fornisci l'ID del Drive Item o il percorso completo.",      options: [],    },    {      key: "quizTopic",      question: "Qual è l'argomento principale del quiz?",      header: "Argomento",      context: "Questo aiuterà l'agente RAG a focalizzare la ricerca e la generazione del quiz.",      options: [],    },    {      key: "quizFormat",      question: "Quale formato vuoi per il quiz?",      header: "Formato",      context: "Es. 'Vero/Falso', 'a crocette', 'domande aperte'.",      options: [        { id: "Vero/Falso", label: "Vero/Falso" },        { id: "a crocette", label: "A crocette" },        { id: "domande aperte", label: "Domande aperte" },      ],    },    {      key: "numQuestions",      question: "Quante domande vuoi nel quiz?",      header: "N. Domande",      context: "Inserisci un numero intero.",      options: [],    },    {      key: "destinationFolder",      question: "Seleziona la cartella di Google Drive dove salvare il quiz e le risposte.",      header: "Cartella Dest.",      context: "I file del quiz e delle risposte verranno salvati qui. Fornisci l'ID della cartella o il percorso completo.",      options: [],    },    {      key: "quizFileName",      question: "Nome del file per il quiz (senza estensione).",      header: "Nome Quiz",      context: "Il file verrà salvato come 'nomefile.txt' o 'nomefile.pdf'.",      options: [],    },    {      key: "answersFileName",      question: "Nome del file per le risposte (senza estensione).",      header: "Nome Risposte",      context: "Il file verrà salvato come 'nomefile.txt' o 'nomefile.pdf'.",      options: [],    },  ],})
    Memorizza le risposte in variabili: driveItem = answers.find(a => a.key === "driveItem")?.selectedIds?.[0] || answers.find(a => a.key === "driveItem")?.otherText, quizTopic = answers.find(a => a.key === "quizTopic")?.selectedIds?.[0] || answers.find(a => a.key === "quizTopic")?.otherText, quizFormat = answers.find(a => a.key === "quizFormat")?.selectedIds?.[0], numQuestions = answers.find(a => a.key === "numQuestions")?.selectedIds?.[0] || answers.find(a => a.key === "numQuestions")?.otherText, destinationFolder = answers.find(a => a.key === "destinationFolder")?.selectedIds?.[0] || answers.find(a => a.key === "destinationFolder")?.otherText, quizFileName = answers.find(a => a.key === "quizFileName")?.selectedIds?.[0] || answers.find(a => a.key === "quizFileName")?.otherText, answersFileName = answers.find(a => a.key === "answersFileName")?.selectedIds?.[0] || answers.find(a => a.key === "answersFileName")?.otherText. Se l'utente annulla (cancelled è true), termina l'esecuzione con followUp.
  3. nodeFinder → Trova i nodi necessari per la configurazione:
    • Argomento Quiz (5cd512c3-7f06-4fc3-921b-a181ae9e6f4b)
    • Formato Quiz (eaea8ffe-b92b-4f17-9980-46da6b428ccf)
    • Numero Domande (2c7609fd-2910-43e5-852f-af8d17bf6bf6)
    • Cartella Destinazione (Drive Emblema) (5590c31a-d0c6-4430-8610-0e80aa3d3d94)
    • Nome File Quiz (b94e6fd3-46f5-482f-9200-0aaebf5253ac)
    • Nome File Risposte (4021133b-0635-4798-bb7a-ca3c04de5606)
    • RAG Agent (7004d0c2-e2a8-4299-aa77-5fe83ecb5f7e)
    • Quiz Generator (a crocette) (c64dfb3a-3591-491d-8123-0fe62649caab)
    • JSON → Testo Leggibile (992d2566-c142-4207-bd4d-71a3e38d7726)
    • Risposte Corrette (91eca925-f213-4f12-a440-2bb80559293f)
  4. upsertNode → Configura i nodi con i valori raccolti dall'utente e la lingua risolta:
    • Argomento Quiz: value = quizTopic
    • Formato Quiz: value = quizFormat
    • Numero Domande: value = numQuestions
    • Cartella Destinazione (Drive Emblema): driveItemId = destinationFolder
    • Nome File Quiz: value = quizFileName
    • Nome File Risposte: value = answersFileName
    • RAG Agent: driveItemId = driveItem
    • Quiz Generator (a crocette): language = resolvedLanguage
    • JSON → Testo Leggibile: language = resolvedLanguage
    • Risposte Corrette: language = resolvedLanguage

Phase 1 complete. Now proceed to Phase 2.

Phase 2: Recupero Contenuti e Preparazione Prompt

  1. nodeExecutor → Esegui il nodo RAG Agent per recuperare i contenuti dalla fonte Drive specificata.
  2. nodeFinder → Trova i nodi per la costruzione del prompt:
    • Prompt Quiz (3c74f276-c171-4d80-a394-b4fbf674d66c)
    • Prompt Numero (68a871d4-5854-45e0-a91f-8d85d7a840a2)
    • Prompt Completo (a2675469-5637-4251-973b-9acb5cc2b0fb)
  3. nodeExecutor → Esegui i nodi Prompt Quiz, Prompt Numero e Prompt Completo in sequenza per costruire il prompt finale che verrà utilizzato per la generazione del quiz.

Phase 2 complete. Now proceed to Phase 3.

Phase 3: Generazione e Formattazione Quiz

  1. nodeExecutor → Esegui il nodo Quiz Generator (a crocette) per generare il quiz in formato JSON, utilizzando il contenuto recuperato e il prompt completo.
  2. nodeExecutor → Esegui il nodo JSON → Testo Leggibile per convertire il quiz JSON generato in un formato testuale leggibile e ben formattato.
  3. nodeExecutor → Esegui il nodo Risposte Corrette per estrarre e formattare le risposte corrette dal quiz JSON.

Phase 3 complete. Now proceed to Phase 4.

Phase 4: Salvataggio Output

  1. nodeExecutor → Esegui il nodo Salva PDF nella cartella per salvare il quiz formattato come file nella cartella di Drive specificata.
  2. nodeExecutor → Esegui il nodo Salva Risposte per salvare le risposte corrette come file separato nella stessa cartella di Drive.
  3. verification → Verifica che entrambi i file siano stati salvati correttamente in Google Drive.
  4. followUp → Riassumi che il quiz e le risposte sono stati generati e salvati con successo nella cartella di Drive specificata.

Configuration Tips

User saysConfigure
"Voglio un quiz su [argomento]"Argomento Quiz: value = [argomento]
"Il quiz deve essere [formato]"Formato Quiz: value = [formato]
"Voglio [N] domande"Numero Domande: value = [N]
"Salva in [nome cartella]"Cartella Destinazione (Drive Emblema): driveItemId = ID della cartella
"Il file del quiz si chiami [nome]"Nome File Quiz: value = [nome]
"Il file delle risposte si chiami [nome]"Nome File Risposte: value = [nome]
"Usa i documenti in [cartella/file Drive]"RAG Agent: driveItemId = ID della cartella/file

Error Handling

  • File o cartella Drive non trovati: Se l'ID o il percorso fornito per driveItem o destinationFolder non corrisponde a un elemento Drive esistente, l'agente chiederà all'utente di fornire un ID valido o un percorso corretto.
  • Generazione quiz fallita: Se Quiz Generator (a crocette) non produce un output valido, verifica il prompt completo (Prompt Completo) e il contenuto fornito da RAG Agent. Potrebbe essere necessario affinare l'argomento o il formato del quiz.
  • Salvataggio file fallito: Se Salva PDF nella cartella o Salva Risposte falliscono, assicurati che la Cartella Destinazione (Drive Emblema) sia accessibile e che i nomi dei file siano validi.

// Dependencies

requirements.py
1from process import TextTransform2from output import SaveFile3from input import Text4from process import TextMerge5from input import Folder6from ai import RAGAgent

$ git log --oneline

v1.1.3
HEAD
2026-10-08

migliorato il flusso, migliorate le istruzioni

v1.1.22026-10-06

fix istruzioni iniziali

v1.1.12026-10-06

ristrutturato il flusso

v1.0.42026-10-05

corretta dicitura istruzioni

v1.0.32026-09-29

aggiunto naming output

v1.0.22026-09-29

ora crea un quiz a partire da un folder drive, con possibilità di lettura multi document

v1.0.12026-09-28

input iniziali per lancio template

v1.0.02026-09-25

l'utente sceglie input/output e tipo quiz