Notation de tâches GPT-4-Turbo pilotée par l'IA avec des sorties multi-format
Ceci est unDocument Extraction, AI Summarizationworkflow d'automatisation du domainecontenant 15 nœuds.Utilise principalement des nœuds comme Set, Code, Webhook, ConvertToFile, Agent. Utiliser GPT-4-Turbo pour automatiser la notation de devoirs et la génération de rapports multi-formats
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
- •Clé API OpenAI
Nœuds utilisés (15)
Catégorie
{
"id": "jZ83o0HlyE8wjTR7",
"meta": {
"instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502",
"templateCredsSetupCompleted": true
},
"name": "AI-Powered GPT-4-Turbo Assignment Grading with Multi-Format Output",
"tags": [],
"nodes": [
{
"id": "31e0cb5c-e843-4c3e-b34d-b3adf5d38d54",
"name": "Webhook - Téléverser le Sujet d'Examen",
"type": "n8n-nodes-base.webhook",
"position": [
128,
-144
],
"webhookId": "a98c19ae-7d0f-43ee-aa09-df8f4f5b0e1d",
"parameters": {
"path": "grade-assignment",
"options": {
"rawBody": true
},
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "f103dd78-faf1-4ee4-a9af-d3350f1c7831",
"name": "Extraire le Texte du Sujet d'Examen",
"type": "n8n-nodes-base.extractFromFile",
"position": [
352,
-144
],
"parameters": {
"operation": "toText"
},
"typeVersion": 1
},
{
"id": "b963d88c-cc9d-460a-8b80-f04ba04953e7",
"name": "Préparer les Données du Devoir",
"type": "n8n-nodes-base.set",
"position": [
576,
-144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "studentName",
"name": "studentName",
"type": "string",
"value": "={{ $json.body.studentName || 'Unknown Student' }}"
},
{
"id": "assignmentTitle",
"name": "assignmentTitle",
"type": "string",
"value": "={{ $json.body.assignmentTitle || 'Engineering Assignment' }}"
},
{
"id": "testPaperText",
"name": "testPaperText",
"type": "string",
"value": "={{ $('Extract Text from Test Paper').item.json.data }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f1fce13f-f81c-43d7-94d0-9f4ebeb9994b",
"name": "Charger la Copie de Réponses",
"type": "n8n-nodes-base.set",
"position": [
720,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "answerScript",
"name": "answerScript",
"type": "string",
"value": "=Question 1: Explain Ohm's Law and its applications (10 marks)\nAnswer: Ohm's Law states V=IR where V is voltage, I is current, R is resistance. Applications include circuit design, electrical troubleshooting, power calculations.\n\nQuestion 2: Describe the working principle of a DC motor (15 marks)\nAnswer: DC motor converts electrical energy to mechanical energy using electromagnetic induction. Current through armature creates magnetic field that interacts with stator field causing rotation.\n\nQuestion 3: Calculate stress in a beam under load (20 marks)\nAnswer: Stress = Force/Area. For bending stress: σ = My/I where M is moment, y is distance from neutral axis, I is moment of inertia.\n\nQuestion 4: Explain thermodynamic cycles (15 marks)\nAnswer: Common cycles include Carnot, Otto, Diesel, Rankine. Each involves heat addition, expansion, heat rejection, compression stages for energy conversion.\n\nQuestion 5: Discuss Boolean algebra and logic gates (10 marks)\nAnswer: Boolean algebra uses AND, OR, NOT operations. Logic gates implement these: AND gate outputs 1 only when all inputs are 1, OR gate outputs 1 when any input is 1."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8877e50a-d8cc-42be-8592-6f91979861ea",
"name": "Agent IA - Corriger le Devoir",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
864,
0
],
"parameters": {
"text": "=You are an expert engineering professor grading student assignments. \n\nANSWER SCRIPT (Correct Answers with Marks):\n{{ $json.answerScript }}\n\nSTUDENT SUBMISSION:\n{{ $json.testPaperText }}\n\nGrade this engineering assignment by:\n1. Comparing student answers against the answer script\n2. Award marks based on correctness, completeness, and technical accuracy\n3. Provide detailed feedback for each question\n4. Calculate total marks obtained\n\nProvide output in this JSON format:\n{\n \"questions\": [\n {\n \"questionNumber\": 1,\n \"maxMarks\": 10,\n \"marksObtained\": 8,\n \"feedback\": \"Good explanation of Ohm's Law but missing practical examples\"\n }\n ],\n \"totalMarks\": 70,\n \"totalObtained\": 55,\n \"percentage\": 78.57,\n \"grade\": \"B+\",\n \"overallFeedback\": \"Strong understanding of core concepts with room for improvement in practical applications\"\n}",
"options": {
"systemMessage": "You are a precise grading assistant. Always return valid JSON only."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "c31a1abe-1b74-4c92-b391-14fd677337f1",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
832,
224
],
"parameters": {
"model": "gpt-4-turbo",
"options": {}
},
"credentials": {
"openAiApi": {
"id": "OGYj7DgYv5GFLFZk",
"name": "OpenAi account 2"
}
},
"typeVersion": 1
},
{
"id": "5abe696d-6ca7-48ac-8e60-cf6ea12ccba0",
"name": "Analyseur de Sortie Structurée",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1024,
224
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "a54dc27f-f275-4ef7-b70d-06e0b9958ff1",
"name": "Générer le Tableau de Résultats",
"type": "n8n-nodes-base.code",
"position": [
1152,
0
],
"parameters": {
"jsCode": "const gradingResult = $input.first().json;\nconst studentName = $('Prepare Assignment Data').first().json.studentName;\nconst assignmentTitle = $('Prepare Assignment Data').first().json.assignmentTitle;\n\n// Create HTML table\nlet htmlTable = `\n<h2>Grading Report: ${assignmentTitle}</h2>\n<h3>Student: ${studentName}</h3>\n<table border=\"1\" cellpadding=\"10\" cellspacing=\"0\" style=\"border-collapse: collapse; width: 100%;\">\n <thead>\n <tr style=\"background-color: #4CAF50; color: white;\">\n <th>Question</th>\n <th>Max Marks</th>\n <th>Marks Obtained</th>\n <th>Feedback</th>\n </tr>\n </thead>\n <tbody>\n`;\n\ngradingResult.questions.forEach(q => {\n htmlTable += `\n <tr>\n <td>Question ${q.questionNumber}</td>\n <td>${q.maxMarks}</td>\n <td>${q.marksObtained}</td>\n <td>${q.feedback}</td>\n </tr>\n `;\n});\n\nhtmlTable += `\n </tbody>\n <tfoot>\n <tr style=\"background-color: #f2f2f2; font-weight: bold;\">\n <td>TOTAL</td>\n <td>${gradingResult.totalMarks}</td>\n <td>${gradingResult.totalObtained}</td>\n <td>Grade: ${gradingResult.grade} (${gradingResult.percentage.toFixed(2)}%)</td>\n </tr>\n </tfoot>\n</table>\n<p><strong>Overall Feedback:</strong> ${gradingResult.overallFeedback}</p>\n`;\n\n// Create CSV data\nlet csvData = \"Question,Max Marks,Marks Obtained,Feedback\\n\";\ngradingResult.questions.forEach(q => {\n csvData += `\"Question ${q.questionNumber}\",${q.maxMarks},${q.marksObtained},\"${q.feedback.replace(/\"/g, '\"\"')}\"\\n`;\n});\ncsvData += `\"TOTAL\",${gradingResult.totalMarks},${gradingResult.totalObtained},\"Grade: ${gradingResult.grade} (${gradingResult.percentage.toFixed(2)}%)\"\\n`;\n\nreturn {\n studentName,\n assignmentTitle,\n htmlTable,\n csvData,\n gradingResult,\n summary: `${studentName} scored ${gradingResult.totalObtained}/${gradingResult.totalMarks} (${gradingResult.percentage.toFixed(2)}%) - Grade: ${gradingResult.grade}`\n};"
},
"typeVersion": 2
},
{
"id": "cea0caf8-7c57-4a2b-ad16-afc77130cb52",
"name": "Convertir en Fichier HTML",
"type": "n8n-nodes-base.convertToFile",
"position": [
1376,
-192
],
"parameters": {
"operation": "text"
},
"typeVersion": 1.1
},
{
"id": "db26bad8-9732-4cac-b320-6ec74769994e",
"name": "Convertir en Fichier CSV",
"type": "n8n-nodes-base.convertToFile",
"position": [
1600,
0
],
"parameters": {
"operation": "text"
},
"typeVersion": 1.1
},
{
"id": "f4acb791-f4e0-49e3-9402-b09e6e721411",
"name": "Préparer les Données CSV",
"type": "n8n-nodes-base.set",
"position": [
1376,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "data",
"name": "data",
"type": "string",
"value": "={{ $('Generate Results Table').first().json.csvData }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "7b2f31c8-620b-4e86-8c67-6762de1c25d9",
"name": "Répondre à Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1600,
192
],
"parameters": {
"options": {
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.1
},
{
"id": "70b0f767-fe68-41f4-92ff-b12592a85e9a",
"name": "Formater la Réponse",
"type": "n8n-nodes-base.set",
"position": [
1376,
192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "status",
"name": "status",
"type": "string",
"value": "success"
},
{
"id": "message",
"name": "message",
"type": "string",
"value": "={{ $('Generate Results Table').first().json.summary }}"
},
{
"id": "results",
"name": "results",
"type": "object",
"value": "={{ $('Generate Results Table').first().json.gradingResult }}"
},
{
"id": "htmlReport",
"name": "htmlReport",
"type": "string",
"value": "={{ $('Generate Results Table').first().json.htmlTable }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4903bfe6-d63b-47e0-b8a2-27a3ee94b0fe",
"name": "Note Adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-192
],
"parameters": {
"width": 624,
"height": 560,
"content": "## Introduction\nAutomates AI-driven assignment grading with HTML and CSV output. Designed for educators evaluating submissions with consistent criteria and exportable results.\n## How It Works\nWebhook receives papers, extracts text, prepares data, loads answers, AI grades submissions, generates results table, converts to HTML/CSV, returns response.\n## Workflow Template\nWebhook → Extract Text → Prepare Data → Load Answer Script → AI Grade (OpenAI + Output Parser) → Generate Results Table → Convert to HTML + CSV → Format Response → Respond to Webhook\n## Workflow Steps\n1. Input & Preparation: Webhook receives paper, extracts text, prepares data, loads answer script.\n2. AI Grading: OpenAI evaluates against answer key, Output Parser formats scores and feedback.\n3. Output & Response: Generates results table, converts to HTML/CSV, returns multi-format response.\n## Setup Instructions\n1. Trigger & Processing: Configure webhook URL, set text extraction parameters.\n2. AI Configuration: Add OpenAI API key, customize grading prompts, define Output Parser JSON schema.\n"
},
"typeVersion": 1
},
{
"id": "6a1ddb69-1170-4be7-b121-77f705304ee1",
"name": "Note Adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
32
],
"parameters": {
"color": 3,
"width": 336,
"height": 448,
"content": "## Prerequisites\n- OpenAI API key\n- Webhook platform\n- n8n instance\n## Use Cases\n- University exam grading\n- Corporate training assessments\n## Customization\n- Modify rubrics and criteria\n- Add PDF output\n- Integrate LMS (Canvas, Blackboard)\n## Benefits\n- Consistent AI grading\n- Multi-format exports\n- Reduces grading time by 90%"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "7e3e4fd2-236b-4ffa-ac24-5fdd3e7b2b70",
"connections": {
"70b0f767-fe68-41f4-92ff-b12592a85e9a": {
"main": [
[
{
"node": "7b2f31c8-620b-4e86-8c67-6762de1c25d9",
"type": "main",
"index": 0
}
]
]
},
"f4acb791-f4e0-49e3-9402-b09e6e721411": {
"main": [
[
{
"node": "db26bad8-9732-4cac-b320-6ec74769994e",
"type": "main",
"index": 0
}
]
]
},
"c31a1abe-1b74-4c92-b391-14fd677337f1": {
"ai_languageModel": [
[
{
"node": "8877e50a-d8cc-42be-8592-6f91979861ea",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"f1fce13f-f81c-43d7-94d0-9f4ebeb9994b": {
"main": [
[
{
"node": "8877e50a-d8cc-42be-8592-6f91979861ea",
"type": "main",
"index": 0
}
]
]
},
"a54dc27f-f275-4ef7-b70d-06e0b9958ff1": {
"main": [
[
{
"node": "cea0caf8-7c57-4a2b-ad16-afc77130cb52",
"type": "main",
"index": 0
},
{
"node": "f4acb791-f4e0-49e3-9402-b09e6e721411",
"type": "main",
"index": 0
},
{
"node": "70b0f767-fe68-41f4-92ff-b12592a85e9a",
"type": "main",
"index": 0
}
]
]
},
"b963d88c-cc9d-460a-8b80-f04ba04953e7": {
"main": [
[
{
"node": "f1fce13f-f81c-43d7-94d0-9f4ebeb9994b",
"type": "main",
"index": 0
}
]
]
},
"5abe696d-6ca7-48ac-8e60-cf6ea12ccba0": {
"ai_outputParser": [
[
{
"node": "8877e50a-d8cc-42be-8592-6f91979861ea",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"8877e50a-d8cc-42be-8592-6f91979861ea": {
"main": [
[
{
"node": "a54dc27f-f275-4ef7-b70d-06e0b9958ff1",
"type": "main",
"index": 0
}
]
]
},
"31e0cb5c-e843-4c3e-b34d-b3adf5d38d54": {
"main": [
[
{
"node": "f103dd78-faf1-4ee4-a9af-d3350f1c7831",
"type": "main",
"index": 0
}
]
]
},
"f103dd78-faf1-4ee4-a9af-d3350f1c7831": {
"main": [
[
{
"node": "b963d88c-cc9d-460a-8b80-f04ba04953e7",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Extraction de documents, Résumé IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Cheng Siong Chin
@cschinProf. Cheng Siong CHIN serves as Chair Professor in Intelligent Systems Modelling and Simulation in Newcastle University, Singapore. His academic credentials include an M.Sc. in Advanced Control and Systems Engineering from The University of Manchester and a Ph.D. in Robotics from Nanyang Technological University.
Partager ce workflow