$ cat workspace-template.yaml

F

Flusso Creazione Quiz PDF da Drive

// 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

Overview

Questo flusso di lavoro legge il contenuto testuale da uno o più documenti di Google Drive, genera un quiz basato su tale contenuto in un formato scelto dall'utente (a scelta multipla, vero/falso, domande aperte o misto), e salva il quiz generato come file Markdown e le relative risposte corrette come un file Markdown separato in una cartella di Google Drive specificata. Richiede gli ID dei documenti di Drive da cui estrarre il testo e l'ID di una cartella di destinazione per salvare i file.

Workflow Chain

[Document Reader - Estrai Testo]  → [Quiz Generator (a crocette)]    → [JSON → Testo Leggibile]      → [Salva PDF nella cartella]    → [Risposte Corrette]      → [Salva Risposte][Formato Quiz]  → [Prompt Quiz]    → [Quiz Generator (a crocette)] (prompt input)

Node Reference

  • Document Reader - Estrai Testo (b5a39cbe-77b7-432e-8296-70f6d187aa97)
    • What it does: Legge il contenuto testuale da uno o più documenti di Google Drive specificati.
    • Inputs from: Selezione dell'utente.
    • Configurable inputs: driveItemId (stringa o array di stringhe, ID degli elementi di Drive per i documenti).
    • Output: content (stringa, il testo completo dei documenti).
  • Formato Quiz (eaea8ffe-b92b-4f17-9980-46da6b428ccf)
    • What it does: Fornisce un valore testuale costante che definisce il formato desiderato per il quiz, configurato in base alla scelta dell'utente.
    • Inputs from: Nessuno (valore costante).
    • Configurable inputs: value (stringa, il testo del formato del quiz, che include le istruzioni per il generatore).
    • Output: value (stringa, il testo costante).
  • Prompt Quiz (3c74f276-c171-4d80-a394-b4fbf674d66c)
    • What it does: Unisce un testo introduttivo fisso con il testo del formato del quiz (determinato dalla scelta dell'utente) per creare il prompt completo per il generatore di quiz.
    • Inputs from: Formato Quiz (value al text2).
    • Configurable inputs: text1 (stringa, prefisso fisso "Genera un quiz basato esclusivamente sul testo fornito. Formato del quiz: ").
    • Output: text (stringa, il prompt unito).
  • Quiz Generator (a crocette) (c64dfb3a-3591-491d-8123-0fe62649caab)
    • What it does: Trasforma il testo del documento di input in un quiz basato sul prompt fornito (che include il formato scelto dall'utente). L'output è in formato JSON.
    • Inputs from: Document Reader - Estrai Testo (content a input_text), Prompt Quiz (text a prompt).
    • Configurable inputs: language (enum, lingua di output, predefinito it).
    • Output: output_text (stringa, il quiz generato in formato JSON).
  • JSON → Testo Leggibile (992d2566-c142-4207-bd4d-71a3e38d7726)
    • What it does: Trasforma l'output JSON del quiz in un testo leggibile e ben formattato.
    • Inputs from: Quiz Generator (a crocette) (output_text a input_text).
    • Configurable inputs: prompt (stringa, istruzioni per la formattazione del quiz), language (enum, lingua di output, predefinito it).
    • Output: output_text (stringa, il testo del quiz formattato).
  • Risposte Corrette (91eca925-f213-4f12-a440-2bb80559293f)
    • What it does: Estrae solo le risposte corrette dall'output JSON del quiz e le formatta in un testo leggibile.
    • Inputs from: Quiz Generator (a crocette) (output_text a input_text).
    • Configurable inputs: prompt (stringa, istruzioni per l'estrazione e la formattazione delle risposte), language (enum, lingua di output, predefinito it).
    • Output: output_text (stringa, il testo delle risposte corrette formattato).
  • Salva PDF nella cartella (2767ada0-96c8-441d-bf2d-f0a8fcd4a81b)
    • What it does: Salva il testo del quiz formattato come file Markdown in una cartella di Drive specificata.
    • Inputs from: JSON → Testo Leggibile (output_text a text).
    • Configurable inputs: name (stringa, nome del file, predefinito quiz.md), destinationFolder (stringa, ID della cartella di Drive).
    • Output: driveItemId (stringa, ID del file salvato).
  • Salva Risposte (7b418ba7-1b18-4e69-9897-ee17c78849cb)
    • What it does: Salva il testo delle risposte corrette formattato come file Markdown in una cartella di Drive specificata.
    • Inputs from: Risposte Corrette (output_text a text).
    • Configurable inputs: name (stringa, nome del file, predefinito risposte-quiz.md), destinationFolder (stringa, ID della cartella di Drive).
    • Output: driveItemId (stringa, ID del file salvato).

Execution Strategy

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

Phase 1: Setup e Raccolta Input

  1. Raccogli i parametri di costruzione. Chiama requestUserDecision UNA VOLTA per ottenere i documenti sorgente, la cartella di destinazione, la lingua di output e il tipo di quiz:
    requestUserDecision({  questions: [    {      key: "sourceDocuments",      question: "Seleziona uno o più documenti di Drive da cui generare il quiz.",      header: "Documenti Sorgente",      context: "Il testo di questi documenti verrà utilizzato per creare le domande del quiz.",      options: [], // Pure free-text input for Drive Item IDs      allowMultiple: true    },    {      key: "destinationFolder",      question: "Seleziona la cartella di Drive dove salvare il quiz e le risposte.",      header: "Cartella Destinazione",      context: "Il quiz e le risposte verranno salvati come file Markdown in questa cartella.",      options: [], // Pure free-text input for Drive Item ID      allowMultiple: false    },    {      key: "outputLanguage",      question: "In quale lingua vuoi che sia il quiz?",      header: "Lingua Output",      context: "La lingua selezionata verrà applicata al quiz generato e alle risposte.",      options: [        { id: "it", label: "Italiano" },        { id: "en", label: "English" },        { id: "es", label: "Español" },        { id: "fr", label: "Français" },        { id: "de", label: "Deutsch" },        { id: "auto", label: "Automatico (segue la lingua del documento sorgente)" }      ],      allowMultiple: false    },    {      key: "quizType",      question: "Che tipo di quiz vuoi generare?",      header: "Tipo Quiz",      context: "Il formato del quiz influenzerà la struttura delle domande e delle risposte.",      options: [        { id: "a_crocette", label: "A scelta multipla (a crocette)" },        { id: "vero_falso", label: "Vero o Falso" },        { id: "domande_aperte", label: "Domande aperte" },        { id: "misto", label: "Misto (scelta multipla, vero/falso, aperte)" }      ],      allowMultiple: false    }  ],})
    Memorizza: sourceDocumentIds = answers.find(a => a.key === "sourceDocuments")?.selectedIds, destinationFolderId = answers.find(a => a.key === "destinationFolder")?.selectedIds?.[0], outputLang = answers.find(a => a.key === "outputLanguage")?.selectedIds?.[0], quizTypeChoice = answers.find(a => a.key === "quizType")?.selectedIds?.[0]. Se cancelled (answers è []), annulla l'esecuzione. Se sourceDocumentIds o destinationFolderId sono vuoti, informa l'utente e annulla.
  2. Configura i nodi di input e output. a. nodeFinder → trova il nodo "Document Reader - Estrai Testo" (b5a39cbe-77b7-432e-8296-70f6d187aa97). b. upsertNode → configura "Document Reader - Estrai Testo" con input: { driveItemId: sourceDocumentIds }. c. nodeFinder → trova il nodo "Salva PDF nella cartella" (2767ada0-96c8-441d-bf2d-f0a8fcd4a81b). d. upsertNode → configura "Salva PDF nella cartella" con input: { destinationFolder: destinationFolderId }. e. nodeFinder → trova il nodo "Salva Risposte" (7b418ba7-1b18-4e69-9897-ee17c78849cb). f. upsertNode → configura "Salva Risposte" con input: { destinationFolder: destinationFolderId }.
  3. Configura la lingua di output per i nodi LLM. a. nodeFinder → trova il nodo "Quiz Generator (a crocette)" (c64dfb3a-3591-491d-8123-0fe62649caab). b. upsertNode → configura "Quiz Generator (a crocette)" con input: { language: outputLang }. c. nodeFinder → trova il nodo "JSON → Testo Leggibile" (992d2566-c142-4207-bd4d-71a3e38d7726). d. upsertNode → configura "JSON → Testo Leggibile" con input: { language: outputLang }. e. nodeFinder → trova il nodo "Risposte Corrette" (91eca925-f213-4f12-a440-2bb80559293f). f. upsertNode → configura "Risposte Corrette" con input: { language: outputLang }.
  4. Configura il formato del quiz in base alla scelta dell'utente. a. nodeFinder → trova il nodo "Formato Quiz" (eaea8ffe-b92b-4f17-9980-46da6b428ccf). b. Determina il value per il nodo "Formato Quiz" in base a quizTypeChoice: * If quizTypeChoice === "a_crocette": quizFormatValue = "Genera un quiz a scelta multipla (a crocette) con 4 opzioni per domanda, indicando la risposta corretta. L'output deve essere in formato JSON, con un array di oggetti, dove ogni oggetto ha 'domanda', 'opzioni' (array di stringhe) e 'risposta_corretta' (stringa).". * If quizTypeChoice === "vero_falso": quizFormatValue = "Genera un quiz con domande Vero/Falso. L'output deve essere in formato JSON, con un array di oggetti, dove ogni oggetto ha 'domanda' e 'risposta_corretta' ('Vero' o 'Falso').". * If quizTypeChoice === "domande_aperte": quizFormatValue = "Genera un quiz con domande aperte che richiedono risposte brevi. L'output deve essere in formato JSON, con un array di oggetti, dove ogni oggetto ha 'domanda' e 'risposta_corretta' (testo della risposta).". * If quizTypeChoice === "misto": quizFormatValue = "Genera un quiz misto che includa domande a scelta multipla, Vero/Falso e domande aperte. L'output deve essere in formato JSON, con un array di oggetti, dove ogni oggetto ha 'tipo' ('scelta_multipla', 'vero_falso', 'aperta'), 'domanda', e 'risposta_corretta' (e 'opzioni' se scelta multipla).". c. upsertNode → configura "Formato Quiz" con input: { value: quizFormatValue }.

Phase 1 complete. Now proceed to Phase 2.

Phase 2: Generazione Quiz

  1. Esegui il lettore di documenti. a. nodeFinder → trova il nodo "Document Reader - Estrai Testo" (b5a39cbe-77b7-432e-8296-70f6d187aa97). b. nodeExecutor → esegui "Document Reader - Estrai Testo".
  2. Esegui il merge del prompt. a. nodeFinder → trova il nodo "Prompt Quiz" (3c74f276-c171-4d80-a394-b4fbf674d66c). b. nodeExecutor → esegui "Prompt Quiz".
  3. Genera il quiz. a. nodeFinder → trova il nodo "Quiz Generator (a crocette)" (c64dfb3a-3591-491d-8123-0fe62649caab). b. nodeExecutor → esegui "Quiz Generator (a crocette)".
  4. Formatta il quiz in testo leggibile. a. nodeFinder → trova il nodo "JSON → Testo Leggibile" (992d2566-c142-4207-bd4d-71a3e38d7726). b. nodeExecutor → esegui "JSON → Testo Leggibile".
  5. Estrai le risposte corrette. a. nodeFinder → trova il nodo "Risposte Corrette" (91eca925-f213-4f12-a440-2bb80559293f). b. nodeExecutor → esegui "Risposte Corrette".

Phase 2 complete. Now proceed to Phase 3.

Phase 3: Salvataggio Output e Verifica

  1. Salva il quiz formattato. a. nodeFinder → trova il nodo "Salva PDF nella cartella" (2767ada0-96c8-441d-bf2d-f0a8fcd4a81b). b. nodeExecutor → esegui "Salva PDF nella cartella".
  2. Salva le risposte corrette. a. nodeFinder → trova il nodo "Salva Risposte" (7b418ba7-1b18-4e69-9897-ee17c78849cb). b. nodeExecutor → esegui "Salva Risposte".
  3. Verifica l'esecuzione e l'output. a. verification → verifica che tutti i nodi siano stati eseguiti con successo e che i file siano stati salvati. b. followUp → riepiloga i risultati e suggerisci i prossimi passi, come controllare i file nella cartella di Drive specificata.

Phase 3 complete. Now proceed to Phase 4.

Configuration Tips

User saysConfigure
"Genera un quiz da questo documento"Document Reader - Estrai Testo: driveItemId = ID del documento
"Salva il quiz in questa cartella"Salva PDF nella cartella: destinationFolder = ID della cartella; Salva Risposte: destinationFolder = ID della cartella
"Voglio il quiz in inglese"Quiz Generator (a crocette): language = en; JSON → Testo Leggibile: language = en; Risposte Corrette: language = en
"Cambia il formato del quiz a vero/falso"Formato Quiz: value = istruzioni per "Vero o Falso"
"Il quiz si deve chiamare 'Storia.md'"Salva PDF nella cartella: name = Storia.md
"Le risposte si devono chiamare 'Storia-risposte.md'"Salva Risposte: name = Storia-risposte.md

Error Handling

  • ID Elemento Drive Mancante: Il nodo "Document Reader - Estrai Testo" fallirà se driveItemId non viene fornito. Soluzione: Richiedi all'utente l'ID o gli ID corretti dei documenti di Drive.
  • Cartella di Destinazione Mancante: I nodi "Salva PDF nella cartella" e "Salva Risposte" falliranno se destinationFolder non viene fornito. Soluzione: Richiedi all'utente un ID di cartella di Drive valido.
  • Contenuto del Documento Vuoto: Se il documento di input è vuoto o illeggibile, il nodo "Quiz Generator (a crocette)" potrebbe produrre un quiz vuoto o senza senso. Soluzione: Verifica il contenuto del documento sorgente e assicurati che contenga testo rilevante.
  • Formato Quiz Non Valido: Se il nodo "Formato Quiz" contiene un formato non valido o ambiguo, il nodo "Quiz Generator (a crocette)" potrebbe produrre un output inatteso. Soluzione: Rivedi e modifica il value nel nodo "Formato Quiz" per fornire istruzioni chiare.
  • Output JSON Non Valido: Se il nodo "Quiz Generator (a crocette)" produce un JSON non valido, i nodi "JSON → Testo Leggibile" e "Risposte Corrette" potrebbero fallire o produrre output errati. Soluzione: Controlla il prompt del "Quiz Generator (a crocette)" per assicurarti che le istruzioni per la generazione JSON siano chiare e precise.

// Dependencies

requirements.py
1from input import DriveDocumentReader2from process import TextTransform3from output import SaveFile4from input import Text5from process import TextMerge