National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Teacher Console
Course Setup
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

7

Local AI

--

Uedu Code

--

AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

METHODOLOGY

Bloom's Taxonomy
cognitive level analysis methodology

Explain how Uedu uses a large language model (LLM) to automatically classify cognitive levels in dialogue between Students and the AI TA, for reference when teaching researchers write papers.

1. Overview

In every conversation between students and AI teaching assistants (UeduGPTs) on the Uedu platform, the messages sent by students are automatically classified by Bloom's Revised Taxonomy cognitive levels. This analysis is carried out entirely on the back end and does not affect the student experience; the results are available for teachers to review on the dashboard and may also be exported for research use.

This document explains the complete methodology of this automated classification system, including the theoretical basis, technical implementation, prompt design and data quality control, to help researchers understand how the data are produced.

Current Prompt version

The classification logic described in this document is based on v1.4, and the model used is gpt-5-mini. See Section 10 for historical version changes.

Peer review literature

This methodology has been used in two peer-reviewed papers — the journal Computers and Education: Artificial Intelligence, and the ACM Learning @ Scale 2026 conference. Full bibliography and DOI are listed in Section 9.

2. Theoretical basis

This system uses Bloom's Revised Taxonomy (Anderson & Krathwohl, 2001) as the cognitive-level classification framework, dividing students' cognitive operations into six levels from lowest to highest:

Level English Definition Example student messages
1. Memory Remember Recall and recognise factual knowledge 'What is photosynthesis?'
2. Understanding Understand Explain, summarise, and infer meaning "Why use recursion?"
3. Application Apply Execute or use knowledge in new contexts 'How do I use a for loop to print the multiplication table?'
4. Analysis Analyze Break down elements and identify relationships and structure "What is the difference between these two methods?"
5. Evaluation Evaluate Make a judgement according to the criteria 'Which plan is more suitable, A or B?'
6. Create Create Integrate elements to create something new 'Help me design an experimental plan'

Classification principles

  • Classify by the cognitive operations shown by the Student, rather than by topic difficulty (even a simple topic may show high-level cognitive operations)
  • When the same message involves multiple levels, determine bloom_level by the main cognitive operation
  • The sum of the six level scores (scores) is 1.0, reflecting the distribution of weights across the levels

3. System architecture and data flow

The following flowchart explains the complete data flow of a student message from submission to completion of Bloom classification:

Bloom's Taxonomy cognitive level analysis — data flow diagram Students send messages in UeduGPTs app.py Write the message to classroomgpt_my_log Record log_id, chat_id, classroom_id, user_id, message calling analyze_bloom_async() Start background daemon thread (live path) Step A: Query conversation context Retrieve the first 2-3 request/response rounds from classroomgpt_my_log If a Student message includes an image, extract and encode it in base64 as well Step B: Assemble Prompt System Prompt (classification rules + six-level definitions + output format) User Message (conversation context + student message awaiting classification + image) Step C: Call OpenAI API model=gpt-5-mini, response_format=json_object Retry up to 3 times on failure Step D: Verify and parse response JSON format validation, bloom_level validity checks, scores value validation If verification fails, retry; if it ultimately fails, record a failure record Step E: Write to classroomgpt_bloom_analysis INSERT IGNORE ensures idempotency (the same log_id is not written twice) Batch path (Batch Worker) 10 parallel daemon threads Poll unanalysed logs every 10 seconds Partition by log_id % 10 to avoid conflicts For backfilling historical data Teacher Dashboard / Export API query analysis results

Process summary

  1. When a student sends a message in UeduGPTs, app.py writes the original message to the classroomgpt_my_log table
  2. After writing is complete, immediately call analyze_bloom_async() to start a background thread
  3. Background thread fetches the student's most recent 2-3 rounds of dialogue context (including images)
  4. Assemble the classification rules (System Prompt) and Student message (User Message), then call the OpenAI API
  5. Parse the JSON returned by the LLM and validate the format and field validity
  6. Write the analysis results to classroomgpt_bloom_analysis

4. Classification prompt design

Prompts use the System / User split pattern (from v1.2 onwards):

  • System Prompt: includes role definition, classification rules, definitions of the six cognitive levels, judgement principles, and output format. This section remains fixed within the same session and can benefit from the LLM’s prompt caching mechanism.
  • User Message: contains only the Student message to be classified (dialogue context and images may be included).

4.1 Meaningfulness judgement (Meaningfulness)

Before classification, LLM will first determine whether the message is a meaningful learning message (is_meaningful). The following types are regarded as meaningless:

  • Greetings / polite expressions (thank you, OK, fine, hmm)
  • Test message (123, test, aaa)
  • Symbols / emoji only
  • Tool instructions (translation, editing, no cognitive operations involved)
  • Emotional response / exclamation (amazing, wow, incredible)
  • Chit-chat (who are you, tell a joke)
  • Confirm / acknowledge (understood, got it, received)
  • Repeat / prompt (hurry up, continue,???)
  • Pure paste with no question (text / code pasted, but no question asked)

A message that is short but has a clear learning intention is still judged to be meaningful, for example, 'Why?' or 'What is DNA?'.

4.2 Conversation context handling

The system queries the most recent 2-3 rounds of conversation records before the Student's current message (Student questions + AI replies) as prior context, but the LLM only classifies the last Student message; the preceding context is used only to understand the situation.

For example, when a Student replies, 'Why?', the preceding context can help determine whether this is a request for a conceptual explanation (Understand) or an exploration of causal relationships (Analyze).

4.3 Multimodal support

Student messages may include images (screenshots, photos, handwritten notes, etc.). The system encodes the images as base64 and sends them to the LLM in OpenAI's multimodal content format, so the classifier can make a judgement based on both text and image content.

5. Output format and fields

LLM returns strict JSON format, which is stored in the database after system validation. Each analysis result includes the following fields:

Field Type Description
is_meaningful Boolean Whether it is meaningful learning information
bloom_level Enum Primary cognitive levels: remember / understand / apply / analyse / evaluate / create (NULL for meaningless messages)
scores 6 Floats The respective weight scores of the six levels, with a total = 1.0
evidence Text The basis for the LLM's judgement (within 30 characters)
skip_reason String If is_meaningful = false, record the reason
method String Model name used (e.g. gpt-5-mini)
prompt_version String Prompt version number (e.g. v1.4)
About interpreting scores

bloom_level represents the main cognitive level determined by the LLM (single label), while the six-dimensional scores reflect the distribution of that message across the levels. Researchers may choose either a single label (distribution statistics) or continuous scores (radar charts, trajectory analysis) as needed.

6. Dual-path data processing

The system adopts parallel real-time path + batch path operation to ensure that every Student message can be analysed:

Real-time path Batch path (Batch)
Trigger timing Triggered immediately after a student message is submitted Background daemon polls every 10 seconds
Implementation method Single daemon thread 10 parallel daemon threads
(partitioned by log_id % 10)
Purpose Real-time analysis of new messages Backfill historical data and handle missing real-time paths
Duplicate prevention mechanism Database UNIQUE KEY on log_id, INSERT IGNORE ensures idempotency

7. Data quality control

7.1 Response validation

The system performs multi-layer validation on each result returned by the LLM:

  1. Non-empty validation: checks whether the LLM returns empty content (possibly due to token limits or abnormal termination)
  2. JSON format validation: use response_format=json_object to force LLM output into JSON, then parse and validate again on the client side
  3. bloom_level validity: confirm that it is one of six valid values; if is_meaningful=true but bloom_level is invalid, retry
  4. score value validation: confirm that all six scores are valid numbers

7.2 Retry mechanism

Any verification failure triggers retries, up to 3 times, with a 1-second interval between attempts. If all 3 attempts fail, the system writes a failure record (method='error') to prevent the batch worker from retrying the same record indefinitely.

7.3 Prompt version tracking

Each analysis result records the prompt_version and method (model name) used. When the Prompt or model is updated, researchers can filter data by version number to ensure consistency of analysis.

8. APIs available to Instructors

Instructors (with Instructor / TA permissions for the Course) can obtain analytics data via the following API:

API endpoint Description
GET /api/bloom/classroom/{id}/overview Overview of the class's cognitive-level distribution (number of items and average scores at each level)
GET /api/bloom/classroom/{id}/students Analytical summary for each Student (main cognitive level, average score)
GET /api/bloom/classroom/{id}/trajectory Cognitive Level Time Trajectory (aggregated by week, can filter specific Students)
GET /api/bloom/classroom/{id}/export Export complete class data (JSON, aggregated by student × week)

9. Suggested research citation

9. Published research produced using this methodology

The classification method described on this page has been used in two peer-reviewed papers. When writing the methodology section, you may cite the following works to explain the validity and scope of the classification approach:

Journal Articles

Chang, C.-K., & Li, K.-H. (2026). Chat as learning: Student–AI conversations as discipline-associated cognitive engagement patterns. Computers and Education: Artificial Intelligence, 11, 100644. https://doi.org/10.1016/j.caeai.2026.100644

Using this methodology, analyse the cognitive engagement patterns in student–AI dialogue and present differences in cognitive-level distribution across disciplines. Chinese summary at Research Evidence · Dialogue as Learning.

Seminar paper

Chang, C.-K., & Li, K.-H. (2026). AI Teaching Assistants at Scale: Cross-Disciplinary Patterns of Adoption and Cognitive Engagement Across Hundreds of University Courses. In Proceedings of the Twelfth ACM Conference on Learning @ Scale (L@S '26). https://doi.org/10.1145/3774398.3811596

Apply this methodology across hundreds of Courses to compare adoption patterns and differences in cognitive engagement across disciplines. Chinese abstract: Research evidence · Large-scale AI TA.

This paper was shortlisted for ACM L@S 2026 Best Paper, one of only four shortlisted works across the conference.

9.2 Template description of the methodology

If you use Bloom's Taxonomy cognitive-level data generated by the Uedu platform in an academic paper, it is recommended that you explain the following information in the methodology section:

Methodology description template

Each message in the dialogue between the Student and the AI TA is automatically classified by the Uedu platform into cognitive levels using Bloom's Revised Taxonomy (Anderson & Krathwohl, 2001). The classification system uses a large language model (LLM; OpenAI gpt-5-mini) as the classifier, and through a structured Prompt (version v1.4) instructs the model to determine the primary cognitive level based on the cognitive operations shown by the Student (rather than topic difficulty), and outputs a six-dimensional score distribution. During classification, the previous 2-3 dialogue turns are included to understand the context, and text and image multimodal input are supported. The system validates the format and legality of each LLM response, retrying up to three times on failure. See https://uedu.tw/doc/bloom for a detailed methodological explanation.

It is recommended to provide the following information as well:

  • Prompt version used during the data collection period (can be checked in the prompt_version field of the exported data)
  • LLM model name used (can be checked in the method field)
  • Scope of analysis and sample size
  • Ratio of meaningful to meaningless messages

10. Version history

Version Prompt Mode Main changes
v1.4 System / User split Concise version, optimised for gpt-5-mini, reducing empty responses. Adds descriptions of meaningless types (emotional reactions, small talk, confirming agreement, prompting, pure pasting). Adds multimodal (image) support notes.
v1.3 System / User split Add dialogue-context handling rules (classify only the final message; earlier context is for understanding only)
v1.2 System / User split Split into system prompt + user prompt for the first time, enabling prompt caching
v1.1 Merged Add is_meaningful judgement and skip_reason field
v1.0 Merged Initial version, basic six-level classification