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

Deep Research
multi-step research cycle

For complex questions, students activate the ReAct multi-step research mode: gathering evidence across tools, self-reflection, and integrating it into a complete answer with citations. It includes a closed-loop design of planning / action / observation / reflection / integration, together with five layers of cost and safety safeguards.

1. Design philosophy

Deep Research is a research mode on the Uedu platform for learning questions that need 'cross-referencing multiple data sources and multi-step reasoning'. When a student asks a question involving course material integration, cross-disciplinary comparison, literature search, course planning, or other issues that are hard to answer in one sentence, AI automatically enters a ReAct (Reasoning + Acting) cycle, first planning, then calling tools step by step to gather evidence, continuously reflecting on whether the evidence is sufficient, and finally integrating it into a complete answer with citations.

This design addresses two limitations of ordinary LLM conversations:

  • A single Q&A round is hard to span multiple data sources: when a student asks “What is the teaching sequence for comparing list / tuple / dict / set?”, it is necessary to refer simultaneously to the Course materials, teaching papers and semester progress—one LLM call is not likely to integrate across data sources autonomously
  • Lack of verifiable citations: model-generated answers directly are prone to hallucination, and Students cannot check the source
Difference in positioning from ClassroomGPT / Aida

ClassroomGPT is a single-turn Q&A TA set up by the Instructor; Aida is a Socratic guiding companion under the AIDA framework; Deep Research is a 'researcher' role for complex problems, capable of autonomously completing research tasks across multiple steps and tools. The three share the same chat_tools.py tool registry, but their process patterns are entirely different: the TA and Aida are real-time back-and-forth conversations, whereas Deep Research is a long-running, multi-turn, task-based workflow that can run in the background.

Deep Research is off by default. Only after the teacher enables it via the switch in section 6 of Channel Settings, 'Deep Research', will the student chat box show a teal magnifying-glass button.

2. ReAct loop

Each research task follows the Plan → (Action → Observation → Reflect)* → Synthesize cycle until the LLM determines that sufficient data has been collected, or a system limit is reached.

StageOutputRole responsible
Plan Assess complexity (simple / moderate / complex), break it down into 2~6 sub-questions, and estimate the tools to be used Planner LLM(GPT-5.4-mini)
Action Select the next tool to call from the tool registry and generate parameters Action LLM with function calling
Observation Logs tool returns results (summary of the first N characters + full data for later LLM use) Engine
Reflect Assess whether the observations collected are sufficient to answer the original question; if not, return to Action; if sufficient, proceed to Synthesize Reflection LLM
Synthesize Integrate all observations, produce the final answer, assemble the citation list Synthesizer LLM with structured output

Subproblem decomposition (Planner)

Planner splits the original question into 2–6 sub-questions that can be researched independently, and suggests possible tools for each sub-question. The complexity judgement affects the number of subsequent execution steps and the overall token budget:

ComplexityTypical number of sub-questionsTypical number of tool calls
simple2~32~5
moderate3~45~10
complex4~610~20

Real-time SSE streaming

All stages are pushed to the front end via Server-Sent Events. Event types include connected, task_created, status_change, plan_complete, action_thinking, action_dispatch, action_complete, reflection_done, limit_hit, cancelled, completed, failed and the heartbeat sent every 15 seconds. The front end can display steps, tokens and tool-call status in real time.

Heartbeat mechanism and long-connection maintenance

Research may run for several minutes; the engine pushes a heartbeat event every 15 seconds to ensure the SSE long connection is not interrupted while waiting for tool responses, and the Student-side progress display continues to update.

3. Applicability judgement (Auto-judge)

Once Deep Research is activated, it consumes 30-60 seconds and tens of thousands of tokens, so it is not worth enabling for every question. The system provides two trigger paths:

Forced Trigger

After a Student explicitly clicks the magnifying-glass button and submits a question, the engine is triggered directly with trigger_mode='forced'.

Auto automatic suggestions

When a student enters a question in the general input box, the front end uses a lightweight LLM to determine whether it is worth activating. The auto-judge examines the following features:

Features suitable for Deep ResearchUnsuitable features
Requires integration across multiple data sources A single factual query can be answered in one sentence
Involving paper / textbook / syllabus comparison Pure arithmetic, single-concept definitions
Academic response with citations required Chit-chat, emotional response
Planning-type questions (teaching sequence / learning path) Single-step problem solvable by a tool call

The classifier also returns a confidence score (0~1). When the confidence score is above the threshold, the front end shows a card saying "This question is suitable for Deep Research"; the Student can decide whether to upgrade to DR mode or keep the general conversation.

Design considerations: education cost-sensitive

The per-use cost of Deep Research is about 30 to 100 times that of a normal conversation. To avoid students accidentally consuming quota, Auto mode only 'suggests' and does not 'automatically start' — research only runs after the student gives clear confirmation. This threshold is intentionally designed to preserve students' decision-making rights and to prompt them to think before pressing the button: 'Is this question worth researching in depth?'

4. Tool orchestration

The Action stage of Deep Research shares the chat_tools.py tool registry used by ClassroomGPT / Aida, but the subset actually called is dynamically adjusted according to the question context. Common tool-orchestration combinations:

Issue TypeTypical tool sequence
Course material integration get_course_overviewsearch_channel_materialslist_uedu_team_papers
Discipline-based teaching sequence planning get_hs_curriculumsearch_channel_materialssearch_advisor_papers
Research field exploration list_research_clustersget_cluster_advisorssearch_external_papers(OpenAlex)
Cross-course comparison get_course_overview (multiple times) → search_channel_materialslist_uedu_universities

Channel knowledge base integration

search_channel_materials This is the tool most often called in course contexts for Deep Research. It uses semantic retrieval (cosine similarity) on the RAG materials for this channel uploaded by the Instructor (PDF / DOCX / PPTX) to identify relevant passages, and returns the file name, page number and original passage for Synthesizer citation. See detailsRAG Methodology

External paper search

search_external_papers uses the OpenAlex public API to query academic papers from institutions in five countries: Taiwan, Singapore, Japan, South Korea and China. The engine strictly separates the Synthesize stage:

  • Uedu certified instructor papers (from search_advisor_papers): can label author and provide an advisor profile link
  • External paper (from OpenAlex): marked as “external data”, no “apply” or “contact” entry is provided, and it does not imply the author is willing to accept new students
Tool call limit

Up to 30 steps per research task (each step may call 1~N tools), a cumulative 200,000 tokens, and 10 minutes of execution time. When any limit is reached, the process enters the Synthesize stage (an answer will still be produced, but limit_hit will be pushed via SSE to explain the reason).

5. Integration and citation

Synthesiser design

Observations from all Action stages are sent together with the original question to the Synthesizer LLM, which outputs structured JSON (answer + citations). The Synthesizer uses response_format={"type":"json_object"} to enforce JSON output, and instructs the LLM to cite sources in the answer with labels such as [1] and [2].

FieldContent
answerAnswer text in Markdown format, with [N] labels embedded
citations[]Each entry includes id, title, url, source_tool, snippet

Parameter tuning

The Synthesiser is the most error-prone stage in the entire process, because it has to integrate a large amount of observations within a fixed token budget. In practice, two pitfalls have been encountered:

  • reasoning_effort='medium' will consume most of the max_completion_tokens, leaving too little space for the output and resulting in an empty string
  • max_completion_tokens set too low (e.g. 6,000) easily causes truncation part-way through the output

At present, the production environment is configured as reasoning_effort='low' + max_completion_tokens=12000, and finish_reason is checked for length to detect truncation.

How are citations verified?

Each citation is accompanied by source_tool (the tool that generated the citation) and snippet (the original paragraph or the first N characters). Students can expand the citation list below the answer to view the original content, and the research results page also retains the full plan_json / observations for later audit.

6. Five layers of cost and security safeguards

Deep Research is the platform's most expensive single feature. To avoid misuse, abuse or loss of control leading to runaway costs, the engine has built five layers of defence:

LayerMechanismTrigger condition
1. Built-in engine limit 30 steps / 200K tokens / 10 minutes per research task Any upper limit reached → enter Synthesize (still produce an answer)
2. Personal quota Students: 20 times/day, TAs: 40 times/day, Instructors and administrators: unlimited When the cumulative total for the day reaches the limit → refuse to start directly
3. Rate limiting Flask-Limiter (per user per minute) Frequent requests in a short period → 429 Too Many Requests
4. Cost alert cron scripts/deep_research_cost_alert.py runs daily When the cumulative cost for the day is > UEDU_DEEP_RESEARCH_ALERT_USD (default $20) → send an alert email
5. Daily hard limit for the platform Platform-wide accumulated cost cap Trigger → Pause all new research initiations

Cancellation billing policy

  • Student-initiated cancellation: deduct 0.5 time(s) (encourages stopping proactively when the direction is found to be wrong, to avoid waste)
  • System forced stop (when any one limit is reached: 30 steps / 200K tokens / 10 minutes): deduct 1.0 time (an answer has already been produced and still counts towards usage)
Why five layers instead of one?

A single layer of defence is not enough to cope with all kinds of runaway scenarios. For example: individual quotas cannot prevent a single research task from causing token explosions because an LLM recursively calls tools (engine-level caps are needed); engine-level caps cannot prevent the entire school's students from flooding in at once (platform daily caps are needed); hard caps cannot immediately tell administrators that a problem is happening (an alert cron is needed). Multiple independent layers of defence provide a fault-tolerance guarantee that "even if one layer fails, the others can still block the damage".

7. Quotas and billing

Role determination

At startup, the engine determines the user role according to the following priority order and sets today's quota accordingly:

  1. Platform admin → unlimited
  2. Channel owners (including student-created mygpts) → Unlimited (teacher)
  3. Channel teacher table (classroomgpt_teacher) → Unlimited (teacher)
  4. TA table (classroomgpt_ta) → 40 times / day (ta)
  5. No — 20 times / day (student)

Quota window

Uses a rolling 24-hour window, counted 24 hours forward from the time of first activation. Each successful activation deducts 1.0 use (deductions on cancellation follow the rules).

Use API

  • POST /api/deep_research/start — Start research (SSE stream)
  • POST /api/deep_research/cancel — Cancel an in-progress research task
  • GET /api/deep_research/quota — Check current remaining quota
  • GET /api/deep_research/my_tasks — Personal history list
  • GET /api/deep_research/task/<uuid> — Single task details

8. Persistence and sharing

Three-tier persistence

LayerSave locationContent
1. Task master table deep_research_tasks task_uuid、user_question、status、plan_json、final_answer、citations_json、tokens_used、duration_seconds
2. Step details deep_research_steps Every step's tool_name, args, result_preview, duration_ms
3. Chat records classroomgpt_my_log request rows (student questions) + response rows (DR answers, type='deep_research'), with deep_research_task_uuid foreign key

The dual-row design of Chat logs serves two purposes: (1) answers appear in the dialogue history and remain visible after refreshing the page; (2) the LLM context of subsequent conversations carries over the research findings, so students can continue to ask in-depth questions based on the results.

Consistency between real-time and refreshed data

When research starts, the engine first writes the request log to classroomgpt_my_log (and triggers Bloom cognitive level analysis), then pushes request_log_id via SSE to the front end, after which the front end polls the Bloom badge for that question bubble. At the end of the research, it writes the response log and replaces the inline progress card in the conversation history in place with the answer bubble. After refreshing the page, it reloads from chat history, and the visual result matches the live rendering.

Share Link

The results page for each research task is at /deep_research/task/<uuid>, and can be shared with peers or instructors. Access is restricted: only the owner, channel owner, Super TA, and platform admin can view it, to prevent sensitive research content (including students' personal questions) from leaking.

Personal history page

/deep_research/my Lists all research records of the user themself (including completed, cancelled, and failed), filterable by status and number of items; each item can be opened to review the full answer.

9. Ethics and permissions

IRB ethics foundation

The student usage data for Deep Research (task, steps, answer) are all covered by Uedu's existing IRB approval (NTU-REC 202507EM058). When teachers enable the DR switch on the channel, the default is to follow that informed-consent framework — using the channel is treated as consent for conversation data to be included in research analysis.

Instructor responsibilities

  • Assess whether the channel is suitable before enabling it (semester length, whether research-based learning is required)
  • Monitor DR usage within the channel (available from admin / channel dashboard)
  • Remind Students: the DR answer is an initial result in which AI integrates multiple data sources; it must not be used directly for assignment submission, and cited content must be checked by the Student

Data boundary

The DR toolkit strictly follows Uedu platform data boundary rules:

  • Will not read RAG materials from other channels (search_channel_materials is limited to the current channel)
  • Will not read sensitive data such as students’ grades, forum posts or AI conversation histories
  • External papers (OpenAlex) are strictly separated from Uedu-certified teachers, so as not to mislead students into "applying" to non opt-in instructors
Academic Integrity Reminder

The disclaimer for Deep Research answers is written directly into each answer bubble: 'This answer was assembled by AI from multiple data sources. Please verify the cited content yourself; do not submit it directly as coursework'. If teachers are concerned about misuse by students, they can disable the DR switch at channel level, or state the usage rules in the system prompt.

10. Research applications

Educational Omics Integration

Data generated by Deep Research can span multiple dimensions of the EO framework, and is one of the few features that can provide cognitive, language, and social learning-behaviour signals at the same time:

Omics dimensionData provided by Deep Research
Cognomics (cognitive processes)Bloom cognitive level of the question, sub-question decomposition pattern, depth of ReAct reflection
LinguomicsThe linguistic complexity of the Student's original question and the patterns in how the answer is further followed up
SociomicsShare link click counts; the spread of research findings being discussed within the channel
Ethicomics (Ethical Norms)Student response to the disclaimer, whether the results were misused in assignment submission

Researchable question

  • The relationship between Deep Research activation rates and learning outcomes across different disciplines / learning stages
  • The correlation between the quality of subproblem decomposition (Planner) and the quality of the final answer
  • Auto-judge accuracy for applicable judgements (adoption rate vs. Student final decision)
  • The timing of Student DR cancellation and its relationship with subsequent learning behaviour
  • How the ratio of Uedu teaching materials versus external papers in the citation list changes by year level

Data export

Researchers may follow Uedu's existing data governance process (sign the researcher responsibility form, export the consent form, super TA NDA) to apply to export DR-related data. SeeData export and data governance methodology

Citing the Uedu Deep Research system

If this system is mentioned in an academic paper, the recommended citation format is:
Chang, C.-K. (2026). Uedu Deep Research: A ReAct-based multi-step research mode for university learners. Uedu Platform.