KI-basierte Bewertung von GPT-4-Turbo-Aufgaben mit Mehrformat-Ausgabe
Dies ist ein Document Extraction, AI Summarization-Bereich Automatisierungsworkflow mit 15 Nodes. Hauptsächlich werden Set, Code, Webhook, ConvertToFile, Agent und andere Nodes verwendet. Automatisierung der Bewertung von Aufgaben und Erstellung von mehrformatigen Berichten mit GPT-4-Turbo
- •HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
- •OpenAI API Key
Verwendete Nodes (15)
{
"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-Trigger - Testpapier hochladen",
"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": "Text aus Testpapier extrahieren",
"type": "n8n-nodes-base.extractFromFile",
"position": [
352,
-144
],
"parameters": {
"operation": "toText"
},
"typeVersion": 1
},
{
"id": "b963d88c-cc9d-460a-8b80-f04ba04953e7",
"name": "Aufgabendaten vorbereiten",
"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": "Antwortskript laden",
"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": "KI-Agent - Aufgabe bewerten",
"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-Modell",
"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": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1024,
224
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "a54dc27f-f275-4ef7-b70d-06e0b9958ff1",
"name": "Ergebnistabelle generieren",
"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": "In HTML-Datei konvertieren",
"type": "n8n-nodes-base.convertToFile",
"position": [
1376,
-192
],
"parameters": {
"operation": "text"
},
"typeVersion": 1.1
},
{
"id": "db26bad8-9732-4cac-b320-6ec74769994e",
"name": "In CSV Datei konvertieren",
"type": "n8n-nodes-base.convertToFile",
"position": [
1600,
0
],
"parameters": {
"operation": "text"
},
"typeVersion": 1.1
},
{
"id": "f4acb791-f4e0-49e3-9402-b09e6e721411",
"name": "CSV Daten vorbereiten",
"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": "Auf Webhook-Trigger antworten",
"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": "Antwort formatieren",
"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": "Haftnotiz",
"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": "Haftnotiz1",
"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": "Auf Webhook antworten",
"type": "main",
"index": 0
}
]
]
},
"f4acb791-f4e0-49e3-9402-b09e6e721411": {
"main": [
[
{
"node": "db26bad8-9732-4cac-b320-6ec74769994e",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"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
}
]
]
},
"Webhook - Testpapier hochladen": {
"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
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Dokumentenextraktion, KI-Zusammenfassung
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
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.
Diesen Workflow teilen