8000
Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

港話通(HKChat)Web

一個基於 Node.js 的 AI 聊天 Web 應用,提供類似 ChatGPT 的用戶界面,連接到港話通(HKChat)AI 服務,支持實時流式響應和多種功能模塊。

📖 關於港話通(HKChat)

港話通(HKChat)是一個專為香港用戶設計的 AI 聊天助手,提供多種本地化功能,包括巴士查詢、法律諮詢、金融服務、深度思考和天氣查詢等模塊。

✨ 功能特點

  • 🚀 Express 服務器 - 提供 SSE API 端點,連接 HKChat 後端服務
  • 💬 現代化聊天界面 - 類似 ChatGPT 的用戶體驗
  • 📡 實時流式響應 - 使用 Server-Sent Events (SSE) 實現打字機效果
  • 🎨 美觀的深色主題 - 專業的 UI 設計
  • 📱 響應式設計 - 完美支持桌面和移動設備
  • 📝 Markdown 支持 - AI 回應自動渲染 Markdown 格式
  • ⚙️ 功能模塊切換 - 支持多種 HKChat 功能模塊:
    • 🚌 巴士查詢
    • ⚖️ 法律諮詢
    • 💰 金融服務
    • 🧠 深度思考
    • 🌤️ 天氣查詢
  • 💾 聊天歷史管理 - 側邊欄顯示所有聊天記錄
  • 🔄 對話上下文 - 自動維護對話歷史

🛠️ 技術棧

後端

  • Node.js - 運行時環境
  • Express - Web 框架
  • TypeScript - 類型安全的 JavaScript
  • Axios - HTTP 客戶端
  • eventsource-parser - SSE 流式數據解析

前端

  • 原生 HTML/CSS/JavaScript - 無框架依賴
  • Marked.js - Markdown 解析和渲染
  • 響應式 CSS - 移動端適配

開發工具

  • ts-node - TypeScript 直接執行
  • nodemon - 開發時自動重啟
  • TypeScript Compiler - 編譯檢查

📦 安裝

前置要求

  • Node.js >= 14.0.0
  • npm >= 6.0.0

安裝步驟

# 克隆項目
git clone <repository-url>
cd hkchat-web

# 安裝依賴
npm install

🚀 開發

開發模式(推薦)

使用 nodemon 啟動開發服務器,支持自動重啟:

npm run dev

服務器將在 http://localhost:3000 啟動,並自動監聽 src 目錄下的 TypeScript 文件變更。

生產環境

# 編譯 TypeScript
npm run build

# 啟動服務器
npm start

📖 使用指南

基本使用

  1. 啟動服務器後,在瀏覽器中打開 http://localhost:3000
  2. 在輸入框中輸入您的問題
  3. Enter 或點擊發送按鈕
  4. AI 將以流式方式回應您的問題

功能模塊

點擊標題欄右上角的「⚙️ 功能設定」按鈕,可以啟用/禁用以下功能:

  • 巴士查詢 - 查詢香港巴士路線和時間
  • 法律諮詢 - 獲取法律相關建議
  • 金融服務 - 金融資訊和建議
  • 深度思考 - 啟用更深入的思考模式
  • 天氣查詢 - 查詢天氣資訊

聊天管理

  • 側邊欄 - 顯示所有聊天記錄
    • 桌面端:側邊欄始終顯示
    • 移動端:點擊標題欄左側的 ☰ 按鈕打開/關閉
  • 新對話 - 點擊側邊欄的「+ 新對話」按鈕
  • 切換聊天 - 點擊側邊欄中的聊天項目
  • 刪除聊天 - 懸停在聊天項目上,點擊 × 按鈕

🔌 API 文檔

POST /api/chat/stream

發送聊天請求並接收 SSE 流式響應。

請求體:

{
  "query": "您的問題",
  "history_messages": [
    {
      "role": "user",
      "content": "之前的問題"
    },
    {
      "role": "assistant",
      "content": "之前的回答"
    }
  ],
  "chat_id": "可選的聊天 ID(用於繼續現有對話)",
  "file_ids": [],
  "features": {
    "bus": false,
    "legal": false,
    "finance": false,
    "thinking": false,
    "weather": false
  }
}

響應: SSE 格式的流式數據,每個事件包含:

{
  "content": "增量內容",
  "chat_id": "聊天 ID",
  "done": false
}

done: true 時,表示響應完成。

GET /api/health

健康檢查端點,返回服務器狀態。

響應:

{
  "status": "ok"
}

📁 項目結構

hkchat-web/
├── src/
│   ├── server.ts          # Express 服務器主文件
│   └── hkchatStream.ts    # 原始 SSE 測試腳本
├── public/
│   ├── index.html         # 前端 HTML 頁面
│   ├── styles.css         # 樣式文件
│   └── app.js             # 前端 JavaScript 邏輯
├── lib/                   # 編譯後的 JavaScript (自動生成)
├── data/                  # 數據存儲目錄(自動生成)
├── node_modules/          # 依賴包
├── package.json           # 項目配置
├── tsconfig.json          # TypeScript 配置
├── nodemon.json           # Nodemon 配置
└── README.md             # 本文件

⚙️ 配置

環境變量

  • PORT - 服務器端口(默認: 3000)

服務器配置

服務器連接到 https://chat.hkchat.app/goapi/v1/chat/stream,使用 JWT token 進行認證。

🎨 界面預覽

桌面端

  • 左側:聊天歷史側邊欄(始終顯示)
  • 中間:聊天消息區域
  • 右側:功能設定按鈕

移動端

  • 頂部:標題欄(包含菜單按鈕)
  • 中間:聊天消息區域
  • 底部:輸入框
  • 側邊欄:可通過按鈕切換顯示/隱藏

🔧 開發說明

代碼結構

  • 服務器端 (src/server.ts)

    • 處理 HTTP 請求
    • 連接 HKChat API
    • 轉發 SSE 流式響應
    • 管理 CORS 和靜態文件服務
  • 客戶端 (public/app.js)

    • 聊天界面邏輯
    • SSE 流式數據處理
    • Markdown 渲染
    • 聊天歷史管理

自定義配置

如需修改服務器端口,可以設置環境變量:

PORT=8080 npm run dev

📝 許可證

ISC

🤝 貢獻

歡迎提交 Issue 和 Pull Request!

📧 聯繫方式

如有問題或建議,請通過 Issue 聯繫。


港話通(HKChat) - 讓 AI 更懂香港

About

港話通(HKChat)WebSite

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages

0