將 MIT OpenCourseWare 等開放式課程匯入 Uedu,搭配以逐字稿為基礎的對話式 AI 助教,讓自學者能與課程內容進行有脈絡的問答互動,將「閱讀/觀看」型的開放教材升級為「對話」型的學習體驗。
開放式課程(OpenCourseWare, OCW)自 2002 年 MIT 帶頭之後,已累積數萬門高品質教材。但對自學者而言,OCW 仍是單向廣播:影片、講義、習題均為靜態資源,無法回答「這段公式為什麼成立」「我看不懂這個比喻」這類即時困惑。
Uedu Open 將開放教材匯入平台,並針對每堂 lecture 提供獨立的 AI 對話夥伴。AI 知道學生正在看哪一堂課、哪一段內容,能根據逐字稿提供有脈絡的引導,將「看講義」升級為「跟講師討論」。
ClassroomGPT 服務正式選課學生,由教師設定 system prompt;Aida 是平台層級的 Agentic AI,採 AIDA 框架引導;Uedu Open 則是針對 OCW 等公開教材的輕量對話介面,無教師個別設定,預設使用通用引導 prompt + lecture 逐字稿作為脈絡。
Uedu Open 由兩個 Flask Blueprint 組成,定義於 app_uedu_open.py:
uedu_open(前綴 /open):UI 路由,提供課程目錄、課程詳情、Lecture 播放頁面uedu_open_api(前綴 /api/open):API 路由,提供 AI 對話 SSE 串流、對話歷史、學習指南| 頁面 | 路由 | 功能 |
|---|---|---|
| 課程目錄 | /open/ | 分類、學科、難度、關鍵字搜尋(MySQL FULLTEXT) |
| 課程詳情 | /open/course/<slug> | 課綱、Lectures 列表、教材檔案、AI 學習指南 |
| Lecture 播放 | /open/lecture/<lecture_id> | 影片播放器 + 右側 AI 對話面板 |
gpt-5.4-mini(單一模型,無 function calling)共 6 張主要資料表,定義於 sql/open_tables.sql:
| 資料表 | 用途 | 關鍵欄位 |
|---|---|---|
open_sources |
開放教材來源定義 | code、name、homepage_url、api_config(JSON,含 API endpoint 與認證資訊) |
open_courses |
課程主表 | slug、title / title_zh、description / description_zh、instructors(JSON)、topics(JSON)、level、course_number、source_id |
open_lectures |
單堂 lecture / 影片 | video_id、video_platform(YouTube / 本地)、duration、transcript_text、order_index |
open_materials |
課程附件(PDF / 講義 / 作業) | file_path、category、size_bytes |
open_chat_sessions |
學習者對話紀錄 | session_uuid、user_id、course_id、lecture_id、messages(JSON 陣列) |
open_study_guides |
AI 自動產生的學習指南 | summary、key_terms、quiz_questions(皆 JSON) |
初始 seed 資料只啟用 MIT OpenCourseWare 一個來源,schema 預留 nthu_ocw、stanford_edx、edx_api 等識別碼,未來可由各來源實作獨立的匯入腳本。
外部資料透過背景匯入流程進入資料庫,目前以 MIT Learn API(https://api.learn.mit.edu/api/v1/courses/)為主要來源:
open_sources.api_config 連接外部 APIopen_coursesopen_materialsopen_study_guides匯入的教材必須符合來源的開放授權條款(MIT OCW 為 CC BY-NC-SA 4.0)。Uedu Open 不主張對教材的著作權,僅提供「對話式探索介面」,原始教材的著作權與引用責任歸屬原作者與機構。
核心 endpoint 為 POST /api/open/chat/stream(SSE),實作於 api_open_chat_stream():
lecture_id,撈取對應 lecture + 所屬 course 的 metadatabuild_system_prompt() 動態組裝 system prompt(見下節)session_uuid,從 open_chat_sessions.messages 還原既有對話脈絡;否則建立新 sessiongpt-5.4-mini,temperature=0.7,max_completion_tokens=1500,啟用 streamingmessages JSON,更新 open_chat_sessionsGET /api/open/chat/history?session_uuid=... 回傳完整對話陣列,前端據此重建歷史對話 UI。同一使用者在同一 lecture 可有多個 session,互不污染。
Uedu Open 採逐字稿基礎的 prompt augmentation,而非 RAG embedding 檢索。原因有三:
你是一位協助學習開放式課程的 AI 助教。
# 課程資訊
- 課程:{course.title_zh} / {course.title}
- 課號:{course.course_number}
- 學期:{course.semester}
- 講師:{course.instructors}
- 難度:{course.level}
# 本堂 Lecture
- 標題:{lecture.title}
- 順序:第 {lecture.order_index} 堂
# 講授內容(節錄)
{lecture.transcript_text[:3000]}
# 你的角色
- 以蘇格拉底式對話引導學生思考,不直接給答案
- 若學生問題超出本堂範圍,提示可能在哪堂講次
- 使用繁體中文回應
OCW 的對話量級可能比正式課程高 10 倍以上(自學者沒有上限),需平衡品質與成本。GPT-5.4-mini 在 mid-tier 模型中提供最佳 token 性價比,且支援長 context(足以容納 3,000 字逐字稿 + 多輪對話)。
所有 AI 對話皆寫入 open_chat_sessions,包含 user_id、課程 / lecture 連結、完整 messages JSON。這些資料具有以下研究價值:
Uedu Open 是研究「對話式自學行為」的天然實驗場。可探索的研究議題包含:
引用本系統時,請標註「Uedu Open: an AI conversational interface for open courseware (https://uedu.tw/open)」並說明使用的是 GPT-5.4-mini 模型 + 逐字稿基礎的 prompt augmentation 策略。同時應註明原始教材來源(如 MIT OpenCourseWare)的授權條款。