📁 RAG知識庫問答平台/ ├── app.py # Flask 後端主程式 ├── requirements.txt # Python 套件清單 ├── README.md # 說明文件 │ ├── 📁 templates/ │ └── index.html # 主頁面模板 │ ├── 📁 static/ │ ├── style.css # 樣式表 │ └── script.js # 前端邏輯 │ ├── 📁 data/ │ ├── knowledge_base.json │ └── knowledge_base_example.csv │ └── 📁 gas_scripts/ └── 知識庫API.gs # Google Apps Script
app.py - 所有後端邏輯
templates/ - HTML 頁面
static/ - CSS + JS
data/ - 知識庫資料
HTML + CSS + JS
使用者介面
Flask + Python
業務邏輯、API
JSON 檔案
知識庫儲存
Flask 是 Python 輕量級網頁框架,負責處理 HTTP 請求。
定義 URL 路徑對應的處理函式
/api/chat → 聊天功能
接收前端發送的 JSON 資料
request.json
將結果打包成 JSON 回傳
jsonify(result)
提供 CSS、JS、圖片等資源
/static/...
| 方法 | 端點 | 功能 |
|---|---|---|
POST |
/api/chat |
發送訊息,取得 AI 回覆 |
GET |
/api/knowledge-base |
取得知識庫列表 |
POST |
/api/knowledge-base |
新增知識 |
PUT |
/api/knowledge-base/<id> |
更新知識 |
DELETE |
/api/knowledge-base/<id> |
刪除知識 |
POST |
/api/knowledge-base/search |
搜尋知識庫 |
@app.route('/api/chat', methods=['POST'])
def chat():
# 1. 接收前端資料
data = request.json
message = data['message']
use_rag = data.get('use_rag', False)
# 2. 若啟用 RAG,進行知識庫搜尋
if use_rag:
relevant_docs = search_knowledge_base(message)
context = build_context(relevant_docs)
# 3. 呼叫 AI API
response = call_ai_api(message, context)
# 4. 回傳結果
return jsonify({
'response': response,
'sources': relevant_docs
})
前端使用原生 JavaScript(無框架),主要功能:
使用全域變數儲存對話記錄、設定等
使用 fetch() 發送 HTTP 請求
動態生成 HTML 元素顯示對話
使用 localStorage 保存設定
async function sendMessage(message) {
// 1. 準備請求資料
const requestData = {
message: message,
api_key: settings.apiKey,
api_type: settings.apiType,
use_rag: settings.useRAG
};
// 2. 發送 POST 請求
const response = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(requestData)
});
// 3. 解析回應
const result = await response.json();
// 4. 顯示結果
displayMessage(result.response);
displaySources(result.sources);
}
前端負責介面,後端負責邏輯,透過 API 溝通
處理 HTTP 請求、呼叫 AI、管理知識庫
使用標準的 HTTP 方法(GET/POST/PUT/DELETE)
前後端使用 JSON 格式傳遞資料
Part 5:知識庫管理與進階應用!