老師們現在不僅對教學充滿熱情,也愈來愈善於運用科技工具,如LINE官方帳號,來與學生和家長保持緊密的溝通。這些努力無疑是朝著以下兩大目標邁進:
- 激發學生的好奇心:鼓勵學生主動提問,並引導他們思考解決問題的方法。
- 個別化教學:深入了解每位學生的學習進度和思維方式,以因材施教。
🤖 專案介紹
這個專案的核心目的是要讓老師們能在已有的LINE官方帳號上,快速加入一個AI助教—使用ChatGPT技術。這樣一來,AI助教能夠第一時間回應學生的問題,如果遇到AI不能解決的問題,它還會建議學生直接聯繫老師。這讓老師有更多的時間和空間來專注於其他重要的教學任務。
🛠️ 如何開始?
這個專案極力降低相關的技術門檻。實際上,在幾乎不需要寫任何程式碼的情況下,老師就能設置起這個AI助教服務。你只需完成以下幾個簡單的步驟:
- 註冊本服務
- 在LINE官方帳號後台進行相應設定
- 啟用ChatGPT作為你的AI助教
完成以上步驟後,你就能讓ChatGPT開始擔任你的AI助教,預先回答學生的問題。
👉 歡迎各位老師運用,打造更智慧、更高效、教學相長的教學環境!
📚 在開始之前,你需要了解的
在你開始使用這個專案之前,有一些基礎的技術和費用信息你需要知道。
技術環境
- 涉及的技術和環境如下:
- 程式語言: Python
- 伺服器後端框架: Flask
- FaaS雲端服務: Vercel
- AI對話功能: OpenAI API (ChatGPT-3.5-tubo)
- 聊天環境: LINE (LINE Message API)
花費預估
Vercel
- Hobby方案允許你免費建立最多3個專案。
- 注意:如果伺服器處理時間超過10秒,將會被判定為Time Out。
- Vercel 費用詳情
OpenAI API
- 初次註冊有免費額度,API使用需綁信用卡。
- 本專案預設使用的是2023/11釋出的 GPT-4-1106-preview。
- OpenAI 費用詳情
LINE 主動訊息
- 額度內免費,目前是200則訊息(2023/9月前為500則)。
- 由使用者提問的回覆(Reply)免費。
- 老師主動發送的訊息(Push)有200則限制。
- LINE 費用詳情
提醒您: 所有的費用和限制可能會隨著各個服務供應商的政策改變而變動,建議定期查看官方網站以獲取最新資訊。
如何建立自己的 LINE AI助教?
這份指南將引領您從LINE 官方帳號開始,不同於開發者通常從 LINE Developers 開始。不過,不管從哪裡出發,最終目標相同:建立一個集成 ChatGPT 的 LINE 官方帳號。
🌟 步驟1:初始化 LINE 官方帳號 🌟
首先,我們需要建立一個基本的、無AI功能的 LINE 官方帳號。學生們可以即刻加入這個帳號。這個帳號初期僅支持手動聊天,AI 功能將在後續逐步加入。
填寫必要資訊:這些資訊也會是學生看到的名稱。
選擇「稍後認證官方帳號」:這個認證過程不會影響本專案。
(選擇性)建立圖文選單:利用圖文選單可提供班級公告、相片集等。
- 主頁 > 圖文選單 > 參考說明
- 主頁 > 圖文選單 > 參考說明
啟用 Webhook 🔗
- Webhook 是一個可用程式處理訊息的通道。
- 通過 Webhook,我們將使用 Vercel 平台、Python Flask 框架和 OpenAI API。
🌟 步驟2:註冊必要的平台並獲取 API Token
- 註冊必要平台:包括 GitHub、Vercel、OpenAI API、LINE Developers。
- 獲取 OpenAI API Token:保存好這個 Token,它是一次性的。
🌟 步驟3:設置 LINE Developer Channel 及獲取 Secret, Token 🌟
3.1 獲取 Channel Secret
🔒
- 從 LINE 官方帳號或 LINE Developer Channel 都可獲取。
3.2 獲取 Channel Access Token
🔑
- 在 LINE Developer Channel 下生成。
🌟 步驟4:Fork GitHub 專案 🌟
- Fork 這個專案至您自己的 GitHub 儲存庫。
🌟 步驟5:部署至 Vercel 🌟
- 建立 Vercel 專案
- 連接 GitHub 和選擇專案
- 設定環境變數並部署
您需要設定的環境變數為
OPENAI_API_KEY
、LINE_CHANNEL_ACCESS_TOKEN
及LINE_CHANNEL_SECRET
,在這裡的環境變數能受到較佳的保護,至少比放在程式碼裡安全許多。
- 修正支援的Nodejs版本
如果遇到Python安裝版本問題,依據官方文件,Vercel預設的Node.js版本為20.x,不支援Python,請在專案的設定>一般的選項裡,將Node.js改選為18.x版本。
修改後請選擇部署,或到專案的佈署歷程中選擇再次部署,就會改用Node.js 18.x版再跑一次。
🎉 完成! 🎉
恭喜您,現在您已經成功建立了自己的 AI 助教!現在可以透過 LINE 官方帳號進行測試。
🔧 進階設定:打造個性化的AI助手
- 若要讓AI助手更符合你的需求和風格,OpenAI API提供了一個彈性的方式讓你自行設定AI的角色。具體來說,你只需要在對話設定中添加
messages: [{ role: "system", content: "你的AI助手人設" }]
即可。 - 進行這項設定只需前往
api/prompt.py
並在AI_GUIDELINES
後修改提示文字即可。不過,因為Vercel的免費版有10秒的運行時限制,過長的提示可能會導致Time Out,因此建議不要設置過於複雜的指引。 - 本專案經過精心測試後,已經內建一組最佳實踐的
AI_GUIDELINES
,但你也可以隨心所欲地進行調整:AI_GUIDELINES = '你是一個AI助教,專門使用蘇格拉底教學法來回答學生的問題,如果有需要,會建議學生與老師進一步確認。'
- 修改方式也非常簡單,只需登入你的GitHub帳號,找到該專案的
api/prompt.py
文件,點擊右側的鋼筆圖示✏️即可進行線上編輯。 - 完成後,選擇“Commit Changes”並填入適當的描述。
🚀 專案成果
出色的問答回應: 這個AI助手自2023年11月7日OpenAI大幅降低費率後,採用GPT 4模型,更能通順的、即時地回應學生的問題。
問題過濾: 對於需要更深層次討論的問題,AI助手會提供適當的處理建議,協助老師過濾和分類問題,同時也啟發老師改進教學。
引導學生思考: 透過蘇格拉底教學法,AI助手不僅回答問題,還能引導學生學會如何提問和解決問題。
同學A 老師我想要問BMI的python程式怎麼寫
----
AI助教 嗨!關於BMI的Python程式,我可以幫你一起思考。首先,你知道BMI是什麼嗎?
----
同學A BMI=體重/身高平方
----
AI助教 沒錯!BMI是體重除以身高的平方。那麼,你想要寫一個計算BMI的Python程式對吧?你已經有身高和體重的數值了嗎?
----
同學A 70/(1.73**2)
----
AI助教 沒錯!你可以使用這個公式來計算BMI。現在我們可以開始寫一個Python程式來計算BMI。你想要將身高和體重作為變數輸入嗎?
----
同學A 想
----
AI助教 好的!我們可以寫一個簡單的Python函數來計算BMI。以下是一個範例程式碼:
```python
def calculate_bmi(weight, height):
bmi = weight / (height ** 2)
return bmi
weight = float(input("請輸入您的體重(公斤):"))
height = float(input("請輸入您的身高(公尺):"))
bmi = calculate_bmi(weight, height)
print("您的BMI為:", bmi)
```
這個程式會要求使用者輸入體重和身高,然後使用`calculate_bmi`函數計算BMI並輸出結果。請注意,身高的單位應該是公尺,體重的單位應該是公斤。
----
同學A 請幫我也寫出測試碼,之後會用pytest測試
----
AI助教 當然!我們可以寫一些測試碼來驗證我們的BMI計算函數是否正確。以下是一個範例的測試碼:
```python
import pytest
def calculate_bmi(weight, height):
bmi = weight / (height ** 2)
return bmi
def test_calculate_bmi():
assert calculate_bmi(70, 1.73) == pytest.approx(23.39, 0.01)
assert calculate_bmi(80, 1.65) == pytest.approx(29.38, 0.01)
assert calculate_bmi(60, 1.80) == pytest.approx(18.52, 0.01)
if __name__ == "__main__":
pytest.main()
```
這個測試碼使用了pytest套件來執行測試。我們定義了一個`test_calculate_bmi`函數,其中包含了幾個斷言語句,用來驗證`calculate_bmi`函數的輸出是否符合預期。每個斷言語句都使用了`pytest.approx`函數來比較浮點數的近似值,並指定了一個容忍誤差範圍。
你可以將這個測試碼保存為一個.py檔案,然後使用pytest運行測試。如果所有的測試通過,則表示你的BMI計算函數正確無誤。
----
同學A 謝謝老師,我的超人
----
AI助教 不客氣!如果你有任何其他問題,隨時都可以問我。祝你一切順利!
專案成果
- 出色的回應學生問題: 這個功能不僅可以即時解答學生的問題,還可以減輕老師的負擔。
- 過濾問題: 能過濾並指導學生如何更有效地提問,是一個對教師非常有幫助的功能。
- 引導學生思考: 這是最讓人印象深刻的部分,因為不僅解答了問題,還教會了學生如何解決問題。
這個專案不僅具有高度的實用性,也很有教育意義。它不只是一個問答工具,更是一個能夠協助教學和學習的平台。
參考資料
- GPT-3 API 官方文件
- Vercel 官方文件
- GitHub 如何編輯文件
- 本專案GitHub Repo,Forked & Modified from howarder3