8
n8n 한국어amn8n.com

AI 기반 GPT-4-Turbo 과제 채점 및 다중 형식 출력

중급

이것은Document Extraction, AI Summarization분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Set, Code, Webhook, ConvertToFile, Agent 등의 노드를 사용하며. GPT-4-Turbo를 사용한 과제 채점 및 다중 형식 보고서 생성 자동화

사전 요구사항
  • HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "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": "웹훅 - 시험지 업로드",
      "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": "시험지에서 텍스트 추출",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        352,
        -144
      ],
      "parameters": {
        "operation": "toText"
      },
      "typeVersion": 1
    },
    {
      "id": "b963d88c-cc9d-460a-8b80-f04ba04953e7",
      "name": "과제 데이터 준비",
      "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": "답안 스크립트 로드",
      "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": "AI 에이전트 - 과제 채점",
      "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 채팅 모델",
      "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": "구조화된 출력 파서",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1024,
        224
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "a54dc27f-f275-4ef7-b70d-06e0b9958ff1",
      "name": "결과 테이블 생성",
      "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": "HTML 파일로 변환",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1376,
        -192
      ],
      "parameters": {
        "operation": "text"
      },
      "typeVersion": 1.1
    },
    {
      "id": "db26bad8-9732-4cac-b320-6ec74769994e",
      "name": "CSV 파일로 변환",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1600,
        0
      ],
      "parameters": {
        "operation": "text"
      },
      "typeVersion": 1.1
    },
    {
      "id": "f4acb791-f4e0-49e3-9402-b09e6e721411",
      "name": "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": "웹훅에 응답",
      "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": "응답 형식 지정",
      "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": "스티키 노트",
      "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": "스티키 노트1",
      "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
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 문서 추출, AI 요약

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수15
카테고리2
노드 유형10
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

저자
Cheng Siong Chin

Cheng Siong Chin

@cschin

Prof. 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.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34