$ cat workspace-template.yaml
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
// Canvas Preview
// Instruction
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
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(valuealtext2). - 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(contentainput_text),Prompt Quiz(textaprompt). - Configurable inputs:
language(enum, lingua di output, predefinitoit). - 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_textainput_text). - Configurable inputs:
prompt(stringa, istruzioni per la formattazione del quiz),language(enum, lingua di output, predefinitoit). - 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_textainput_text). - Configurable inputs:
prompt(stringa, istruzioni per l'estrazione e la formattazione delle risposte),language(enum, lingua di output, predefinitoit). - 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_textatext). - Configurable inputs:
name(stringa, nome del file, predefinitoquiz.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_textatext). - Configurable inputs:
name(stringa, nome del file, predefinitorisposte-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
- Raccogli i parametri di costruzione. Chiama
requestUserDecisionUNA VOLTA per ottenere i documenti sorgente, la cartella di destinazione, la lingua di output e il tipo di quiz: 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]. Secancelled(answersè[]), annulla l'esecuzione. SesourceDocumentIdsodestinationFolderIdsono vuoti, informa l'utente e annulla. - 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" coninput: { driveItemId: sourceDocumentIds }. c.nodeFinder→ trova il nodo "Salva PDF nella cartella" (2767ada0-96c8-441d-bf2d-f0a8fcd4a81b). d.upsertNode→ configura "Salva PDF nella cartella" coninput: { destinationFolder: destinationFolderId }. e.nodeFinder→ trova il nodo "Salva Risposte" (7b418ba7-1b18-4e69-9897-ee17c78849cb). f.upsertNode→ configura "Salva Risposte" coninput: { destinationFolder: destinationFolderId }. - 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)" coninput: { language: outputLang }. c.nodeFinder→ trova il nodo "JSON → Testo Leggibile" (992d2566-c142-4207-bd4d-71a3e38d7726). d.upsertNode→ configura "JSON → Testo Leggibile" coninput: { language: outputLang }. e.nodeFinder→ trova il nodo "Risposte Corrette" (91eca925-f213-4f12-a440-2bb80559293f). f.upsertNode→ configura "Risposte Corrette" coninput: { language: outputLang }. - 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 ilvalueper il nodo "Formato Quiz" in base aquizTypeChoice: * IfquizTypeChoice === "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).". * IfquizTypeChoice === "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').". * IfquizTypeChoice === "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).". * IfquizTypeChoice === "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" coninput: { value: quizFormatValue }.
Phase 1 complete. Now proceed to Phase 2.
Phase 2: Generazione Quiz
- 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". - Esegui il merge del prompt.
a.
nodeFinder→ trova il nodo "Prompt Quiz" (3c74f276-c171-4d80-a394-b4fbf674d66c). b.nodeExecutor→ esegui "Prompt Quiz". - Genera il quiz.
a.
nodeFinder→ trova il nodo "Quiz Generator (a crocette)" (c64dfb3a-3591-491d-8123-0fe62649caab). b.nodeExecutor→ esegui "Quiz Generator (a crocette)". - 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". - 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
- 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". - Salva le risposte corrette.
a.
nodeFinder→ trova il nodo "Salva Risposte" (7b418ba7-1b18-4e69-9897-ee17c78849cb). b.nodeExecutor→ esegui "Salva Risposte". - 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
Error Handling
- ID Elemento Drive Mancante: Il nodo "Document Reader - Estrai Testo" fallirà se
driveItemIdnon 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
destinationFoldernon 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
valuenel 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
1from input import DriveDocumentReader2from process import TextTransform3from output import SaveFile4from input import Text5from process import TextMerge