cwadayi's picture
Upload 15 files
3aab70e verified
# config/data.py
import pandas as pd
# 課程進度表
schedule_data = {
"週次": ["第一週 (9/10)", "第二週 (9/17)", "第三週 (9/24)", "第四週 (10/1)", "第五週 (10/8)", "第六週 (10/15)", "第七週 (10/22)", "第八週 (10/29)", "第九週 (11/5)", "第十週 (11/12)", "第十一週 (11/19)", "第十二週 (11/26)", "第十三週 (12/3)", "第十四週 (12/10)", "第十五週 (12/17)", "第十六週", "十七週", "第十八週"],
"地球物理知識": ["地球物理概要", "折射探勘學", "校園野外實驗 (折射探勘)", "地球物理專題演講", "折射探勘學", "重力探勘學", "重力探勘學", "期中考", "板塊構造與地震", "板塊構造與地震", "板塊構造與地磁", "板塊構造與地磁", "板塊構造與地熱", "板塊構造與地熱", "期末專題發表", "行憲紀念日 (放假)", "元旦 (放假)", "參訪大屯火山觀測中心 (暫定)"],
"資料處理技能": ["安裝Python, 申請各類帳號, 使用Colab/Codespace/Dify", "PyGMT, ObsPy, Streamlit, Gradio 介紹", "-", "-", "Hugging Face Space 製作互動程式", "Colab 使用", "GitHub 與 Codespace 使用", "-", "PyGMT", "PyGMT", "ObsPy", "ObsPy", "Gemini API 申請, Dify", "Dify", "-", "-", "-", "-"]
}
schedule_df = pd.DataFrame(schedule_data)
# AI 助教知識庫
KNOWLEDGE_BASE = {
"course": [
{"keywords": ["成績", "評分", "分數", "grading"], "answer": "本課程的評分標準經過精心設計,旨在全面評估您的學習成效。其中 **作業佔比 50%**,是最大的一部分,因為我們深信「做中學」的價值,這包括所有程式碼實作、數據分析報告與 GitHub 更新紀錄,用以衡量您的實踐能力。**期中考佔 40%**,主要檢核您對前半學期地球物理核心理論與程式工具的理解程度。最後 **10% 為平時成績**,我們鼓勵您積極參與課堂討論、勇於提問,因為主動的學習態度是深化知識的關鍵。"},
{"keywords": ["進度", "課綱", "課程表", "schedule", "syllabus", "第幾週"], "answer": "您可以在本網站的「🗓️ 課程進度」分頁中,找到最完整、最詳細的課程安排。整個學期的課程設計是循序漸進的,前半段我們將專注於地球物理的基礎理論與 Python 程式設計的基本功。後半段則會深入探討板塊構造的宏觀議題,並結合 AI 工具進行更複雜的數據分析。建議您隨時查閱進度表,以便為接下來的課程做好充分準備,並了解各週的學習重點與技能目標。"},
{"keywords": ["期末", "專題", "報告", "final project"], "answer": "期末專題安排在第十五週進行發表,這是您展現本學期學習成果的最終舞台。我們期望您能整合所學的地球物理知識與數據處理技能,自選一個感興趣的主題進行深入研究。這不僅僅是一份報告,更是一個完整的專案,從問題定義、數據搜集、程式分析到成果視覺化,您將完整走過一遍科學研究的流程。這也是一個絕佳的機會,將您的作品打造成線上應用,成為您未來求學或求職的亮點。"},
{"keywords": ["考試", "期中考", "midterm"], "answer": "期中考預計安排在第八週舉行,測驗範圍將全面涵蓋前七週的教學內容。考試內容分為兩大部分:第一部分是**地球物理學識**,包含折射震測、重力探勘等核心概念的理解。第二部分則是**資料處理技能**,您需要熟悉如 PyGMT、ObsPy 等工具的使用,以及 Git/GitHub 的基本操作。準備上,強烈建議您務必親手完成所有作業,並複習課堂上講解的理論與範例,確保理論與實作能力兼備。"},
{"keywords": ["專題", "題目", "想法", "topic", "idea"], "answer": "正在為期末專題尋找靈感嗎?這裡提供幾個方向:\n1. **特定區域地震活動分析**:使用 ObsPy 下載台灣特定區域(如花蓮外海)的地震資料,分析其時空分佈、震源深度,並用 PyGMT 或 Cartopy 繪製成專業圖件,探討其與板塊活動的關聯。\n2. **重力或磁力異常圖的解譯**:尋找公開的重磁資料,繪製異常圖並嘗試解讀其對應的地質構造,例如特定盆地或山脈的深層結構。\n3. **AI 應用於地球物理**:訓練一個簡易的機器學習模型,用來自動區分地震波紀錄中的 P 波和 S 波到達時間,這在地震學中有重要的應用價值。\n4. **互動式地球物理教學工具**:利用 Gradio 或 Streamlit 製作一個互動小工具,用來展示特定概念,例如模擬震波傳遞或板塊運動。"},
{"keywords": ["野外", "field work", "實驗", "準備", "穿什麼"], "answer": "為了讓您在第三週的校園折射震測實驗中能有安全且愉快的體驗,請參考以下準備建議:\n* **服裝**:建議穿著輕便、耐髒且適合活動的長褲與運動鞋或登山鞋。場地可能涉及草地或泥土地,請避免穿著拖鞋或涼鞋。\n* **防護**:戶外天氣多變,請依據當天天氣預報,準備好帽子、防曬乳以防曬傷,或輕便雨具以應對陣雨。\n* **其他**:務必攜帶足夠的飲用水以補充水分,並帶著筆記本與筆,方便您隨時記錄觀測數據和心得。這是一次寶貴的實務經驗,請認真對待!"}
],
"geophysics": [
{"keywords": ["地球物理", "geophysics", "學什麼"], "answer": "地球物理學(Geophysics)可以想像成是「為地球做健康檢查的科學」。它利用物理學的原理與方法(如聲波、重力、磁力、電磁、熱流等)來透視我們腳下這顆星球的內部結構與運作機制。它主要分為兩大領域:**固體地球物理學**,專注於研究地球的整體與內部,例如透過地震波了解地核與地函的狀態;以及**應用地球物理學**,更側重於解決實際問題,例如尋找石油、天然氣、礦產等資源,或應用於工程地質調查與環境監測。"},
{"keywords": ["折射", "震測"], "answer": "折射震測(Seismic Refraction)是一種常見的淺層地球物理探勘方法。它的原理是,當我們在地面上用重鎚敲擊或小型爆炸產生人工震波後,震波會向地下傳遞。當震波遇到不同速度的地層介面時,一部分能量會發生折射,並沿著高速層的頂部傳播,再傳回地面被一系列稱為「檢波器」(Geophone) 的儀器接收。藉由分析震波從激發到被各個檢波器接收到的「走時」,我們就能反推出地下地層的速度與深度,就像是為地底照X光一樣。"},
{"keywords": ["重力", "gravimetry"], "answer": "重力探勘(Gravimetry)是一門透過精密測量地表重力值微小變化的技術,來推斷地下物質密度分佈的科學。地球上各地的重力並非完全相同,它會因海拔高度、地形以及地下岩石密度的不同而有差異。例如,如果地下埋藏著密度極高的金屬礦床,該區域的重力值就會比周圍稍高,形成「正重力異常」。反之,若底下有密度較低的鹽丘或空洞,則會形成「負重力異常」。這項技術廣泛應用於礦產探勘、油氣調查及大地構造研究。"},
{"keywords": ["板塊", "tectonics"], "answer": "板塊構造學說(Plate Tectonics)是現代地球科學的基石理論,它完美地解釋了全球的地震、火山活動與造山運動。該學說認為,地球最外層的岩石圈並非完整一塊,而是由十幾個巨大的、剛性的板塊所拼合而成。這些板塊漂浮在底下較具塑性的軟流圈之上,並以每年數公分的速度持續移動。在板塊的邊界處,由於板塊間的相互作用(碰撞、分離或錯動),累積了巨大的應力,最終導致了地震的發生,並形成了火山、海溝與山脈等壯麗的地質景觀。"},
{"keywords": ["地磁", "古地磁", "磁場", "geomagnetism", "paleomagnetism"], "answer": "地球本身就像一個巨大的棒狀磁鐵,擁有一個從南極指向北極的磁場,這就是「地磁」。而「古地磁」則是指被岩石記錄下來的古代地球磁場。當火山噴發的熾熱岩漿冷卻時,其中的磁性礦物(如磁鐵礦)就像成千上萬個微小的指南針,它們會將當時地球磁場的方向和強度「鎖定」在岩石中。科學家發現,海底中洋脊兩側的玄武岩,記錄了地球磁場在數百萬年間多次反轉的歷史,並且呈現完美對稱的條帶狀分佈。這成為了海底擴張與板塊構造學說最經典、最無可辯駁的證據之一。"},
{"keywords": ["地熱", "能源", "geothermal"], "answer": "地熱(Geothermal Energy)是源自地球內部的一種穩定且潔淨的可再生能源。其能量主要來自地球深處放射性元素衰變所產生的熱。我們主要透過鑽井到地下的「熱儲層」,將高溫的蒸汽或熱水引導至地表,用以推動渦輪機發電。地熱發電最大的優點是**穩定**,能 24 小時不間斷供電,不像太陽能或風能受天氣影響;同時**碳排放極低**。地熱資源通常集中在板塊邊界,因為這裡地殼較薄、岩漿活動頻繁。台灣正好位於歐亞板塊與菲律賓海板塊的碰撞帶上,因此擁有發展地熱的絕佳地理條件。"},
{"keywords": ["地震儀", "地震學", "seismograph", "seismology", "差別"], "answer": "這兩個詞彙的關係,就像是天文學家與望遠-鏡的關係。**地震學(Seismology)** 是一門**科學**,是地球物理學的一個重要分支,它專門研究地震的成因、地震波的傳播、地球的內部構造以及如何減輕地震災害。而**地震儀(Seismograph)** 則是一種**儀器**,是地震學家進行研究時所使用的核心工具。它能精密地偵測並記錄地面的任何微小振動,並將這些振動轉換成一張稱為「地震圖」(Seismogram) 的紀錄。簡單來說:**地震學家使用地震儀來進行地震學研究。**"}
],
"tools": [
{"keywords": ["pygmt", "gmt", "cartopy", "地圖", "map"], "answer": "`PyGMT` 和 `Cartopy` 都是 Python 中用於繪製專業地理圖件的強大函式庫。`PyGMT` 是經典學術軟體 GMT (Generic Mapping Tools) 的 Python 介面,繼承了 GMT 指令簡潔、功能強大、出圖品質極高的優點,特別適合產出學術出版等級的圖件。`Cartopy` 則是與 Python 的主流繪圖庫 `matplotlib` 完美整合,讓使用者可以用物件導向的方式輕鬆地在地圖上添加各種地理資訊,如海岸線、國界、投影座標系統等,非常適合進行探索性的數據分析與客製化繪圖。"},
{"keywords": ["obspy"], "answer": "ObsPy 是一個專為地震學研究設計的開源 Python 函式庫,被譽為「地震學家的瑞士刀」。它提供了一整套完整且易於使用的工具,能處理從讀寫各種複雜的地震波形資料格式(如 SAC、MiniSEED)、進行基本的訊號處理(如濾波、去趨勢、儀器響應校正),到與國際大型地震資料中心(如 IRIS)進行數據交換等任務。無論是地震學的初學者還是資深研究員,ObsPy 都能大幅簡化資料處理的流程,讓科學家能更專注於研究本身。"},
{"keywords": ["gradio", "streamlit"], "answer": "Gradio 和 Streamlit 都是能讓您用純 Python 快速將數據分析腳本或機器學習模型,打包成互動式網頁應用(Web App)的優秀工具。`Gradio` 的設計理念更偏向於為「函式」或「模型」快速打造一個展示介面,程式碼通常非常簡潔,特別適合用於製作機器學習模型的 Demo。`Streamlit` 則更像是一個數據儀表板(Dashboard)的建構工具,它會由上到下執行您的 Python 腳本,並將腳本中的變數、圖表、互動元件渲染成網頁,適合用於呈現數據分析的完整流程與故事。"},
{"keywords": ["hugging face", "hf", "huggingface"], "answer": "Hugging Face 是一個以開源與協作為核心的 AI 社群與平台,常被譽為「AI 界的 GitHub」。它不僅提供了知名的 `transformers` 函式庫,讓使用者能輕鬆取用各種最先進的預訓練模型,更提供了一個龐大的平台,讓全世界的開發者可以分享、探索、協作模型、資料集與 AI 應用。其中,**Hugging Face Spaces** 是一個殺手級功能,它提供免費的運算資源,讓您可以非常輕易地將您使用 Gradio 或 Streamlit 建立的應用程式部署到雲端,產生公開的網址分享給任何人使用。"},
{"keywords": ["gemini", "dify"], "answer": "Gemini 是由 Google DeepMind 開發的一系列功能強大的大型語言模型(LLM),是目前業界的頂尖模型之一。您可以把它想像成一個非常聰明、能理解與生成複雜文本的「大腦」。而 `Dify` 則是一個 Low-code(低程式碼)的 AI 應用開發平台,它扮演著「工廠」或「指揮中心」的角色。Dify 讓我們可以不需要撰寫大量繁瑣的後端程式碼,就能快速地串接像 Gemini 這樣的大腦,並為其添加記憶、知識庫、工具使用等能力,從而打造出功能完整的聊天機器人或 AI 智能體(Agent)應用。"},
{"keywords": ["安裝", "環境", "anaconda", "miniconda", "setup", "environment"], "answer": "對於科學計算,強烈推薦使用 **Anaconda** 或 **Miniconda** 來管理您的 Python 環境。**Anaconda** 是一個全功能的發行版,預先安裝了數百個常用的科學計算套件,適合初學者。**Miniconda** 則是一個更輕量的版本,僅包含 Python 和 `conda` 套件管理器。使用 `conda` 的最大好處是能夠輕鬆建立獨立的「虛擬環境」。每個環境就像一個乾淨的專案房間,您可以在裡面安裝特定版本的套件,而不會與其他專案的套件發生衝突,這對於維持專案的穩定性與可重複性至關重要。"},
{"keywords": ["colab", "codespaces", "比較", "差別", "difference"], "answer": "`Google Colab` 和 `GitHub Codespaces` 都是頂尖的雲端開發環境,但各有側重。**Colab** 的強項在於數據分析與機器學習,它提供免費的 GPU/TPU 運算資源,並採用大家熟悉的 Jupyter Notebook 介面,非常適合執行計算密集型的分析腳本與模型訓練。**GitHub Codespaces** 則提供了一個完整的、雲端版的 VS Code 開發環境,它與您的 GitHub 儲存庫深度整合,包含終端機、版本控制、擴充套件等所有功能,更適合進行較大型的軟體專案開發,例如建立一個完整的網站或應用程式。"},
{"keywords": ["git", "github", "版本控制", "版控", "version control", "commit"], "answer": "`Git` 是一個強大的「分散式版本控制系統」,您可以把它想像成一個能為您的專案(特別是程式碼)拍攝無限快照的時光機。`GitHub` 則是一個「托管 Git 專案的雲端平台」,它不僅能儲存您的專案,更提供了團隊協作、議題追蹤、程式碼審查等強大功能。使用版本控制的核心好處有三:**1. 紀錄歷程**:您可以隨時回溯到任何一個過去的版本。**2. 團隊協作**:多人可以同時在不同電腦上修改專案,並智慧地合併彼此的工作。**3. 分支開發**:您可以安全地開闢一個「分支」來實驗新功能,而不影響主線的穩定。"},
{"keywords": ["api", "應用程式介面"], "answer": "您可以將 **API (Application Programming Interface)** 想像成餐廳的**服務生與菜單**。身為顧客的您(一個應用程式),不需要知道廚房(另一個系統)內部的複雜運作方式,只需要看懂菜單(API 文件),然後告訴服務生(API 端點)您想要什麼(發送請求,例如:一份牛排,五分熟)。服務生會將您的訂單傳遞給廚房,廚房準備好後,服務生再將做好的菜(數據或結果)送回您的餐桌上。API 定義了這種互動的標準化流程,讓不同的軟體服務之間可以有效率地溝通與協作。"},
{"keywords": ["視覺化", "可視化", "visualization", "好圖", "圖表"], "answer": "一張好的科學數據視覺化圖表,其終極目標是「誠實且有效地傳達資訊」。它應具備四大要素:**清晰性**,讓觀看者能輕易理解圖表的各個元素;**準確性**,忠實地呈現數據,不產生誤導;**簡潔性**,去除所有不必要的視覺噪音(如過多的顏色或網格線);以及**故事性**,圖表本身就應該能講述一個關於數據的發現或觀點。請記住,圖表的目的是揭示數據背後的洞見,而不僅僅是為了展示花俏的繪圖技巧。一張好圖勝過千言萬語。"}
],
"general": [
{"keywords": ["你好", "哈囉", "hello", "hi"], "answer": f"你好!我是課程 AI 助教,很高興能為您服務。今天是 {pd.Timestamp.now(tz='Asia/Taipei').strftime('%Y年%m月%d日')},有任何關於課程、地球物理或程式工具的問題,都隨時可以問我喔!"},
{"keywords": ["你是誰", "功能", "幹嘛", "who are you"], "answer": "我是本課程專屬的 AI 助教。我的核心任務是根據內建的課程知識庫,回答您關於**地球物理、程式工具**與**課程安排**的靜態問題。\n\n**更厲害的是,我現在還能查詢即時資訊!** 試著問我看看:\n- `「最新的 CWA 地震報告」`\n- `「今天有什麼新聞?」`\n- `「全球最近有什麼大地震?」`\n- `「現在有地震預警嗎?」`"},
{"keywords": ["謝謝", "感謝", "thank"], "answer": "不客氣!很高興我的回答能對您有幫助。學習的路上有任何問題,都歡迎隨時再來找我討論。祝您學習順利,一起探索地球的奧秘!"},
{"keywords": ["笑話", "好玩", "有趣"], "answer": "好的,這是一個我很喜歡的地質學冷笑話:\n\n一位地質學家走進一家酒吧,酒保問他:「嗨,今天要喝點什麼?」\n\n地質學家回答:「給我一杯『夸克』(Quark)!」\n\n...等等,抱歉,那是物理學家的笑話。我的版本是:\n\n為什麼地質學家從來不賭博?\n\n...因為他們太了解什麼叫做「斷層」(Fault) 了! 😄"}
]
}