5.7 KiB
5.7 KiB
TobiichiGPT - 人工回覆系統
將 AI 對話系統改造成由真人管理員回覆的極簡方案。
🎯 特色
- ✅ 零修改 - 不需要修改 Open WebUI 程式碼
- ✅ 極簡化 - 單一 Python 檔案即可運行
- ✅ 即插即用 - 偽裝成 OpenAI API,直接在 Open WebUI 設定中使用
- ✅ 視覺化後台 - 美觀的網頁介面供管理員回覆
🚀 快速開始
方法 1: Docker (推薦)
# 進入 docker-stack 目錄
cd docker-stack
# 設定環境變數(首次使用)
Copy-Item .env.example .env
notepad .env # 填入 Cloudflare Tunnel Token(若要使用)
# 使用 Docker Compose 啟動
docker-compose up -d
# 查看日誌
docker-compose logs -f
# 停止服務
docker-compose down
方法 2: 直接執行
# 1. 進入 docker 目錄
cd docker
# 2. 安裝依賴
pip install -r requirements.txt
# 3. 啟動伺服器
python human_reply_server.py
啟動後會看到:
🚀 人工回覆伺服器啟動中...
📌 管理員後台: http://localhost:8000/admin
📌 API 端點: http://localhost:8000/v1
🌐 服務訪問
啟動後可訪問以下服務:
| 服務 | 網址 | 說明 |
|---|---|---|
| Open WebUI | http://localhost:3000 | 用戶對話介面 |
| 管理員後台 | http://localhost:8000/admin | 真人回覆訊息 |
| NPM 管理面板 | http://localhost:82 | Nginx Proxy Manager |
| Cloudflare Tunnel | 自動連線 | 無需手動訪問 |
預設帳號密碼(NPM):
- Email:
admin@example.com - Password:
changeme
在 Open WebUI 中設定
- 開啟 http://localhost:3000
- 進入 Settings → Connections
- 點擊 + Add OpenAI Connection
- 填入設定:
- API Base URL:
http://human-reply-server:8000/v1 - API Key: 隨便填 (例如:
sk-human)
- API Base URL:
- 儲存後,模型列表會出現 human-admin
開始使用
- 用戶端: 在 Open WebUI (http://localhost:3000) 選擇
human-admin模型,發送訊息 - 管理員: 訪問 http://localhost:8000/admin,查看並回覆訊息
- 自動刷新: 後台每 5 秒自動刷新,顯示新訊息
📋 運作流程
用戶發送訊息
↓
Open WebUI 調用 API (轉圈圈等待)
↓
訊息進入待處理隊列
↓
管理員在後台看到訊息
↓
管理員輸入並送出回覆
↓
API 回傳給 Open WebUI
↓
用戶收到回覆
🔧 技術架構
- FastAPI: 輕量級 Python Web 框架
- AsyncIO: 異步等待管理員回覆
- 偽裝 OpenAI API:
/v1/models- 模型列表/v1/chat/completions- 聊天完成端點
🐳 Docker 部署
檔案結構
tobiichiGPT/
├── docker/ # Docker 相關檔案
│ ├── human_reply_server.py # 主程式
│ ├── requirements.txt # Python 依賴
│ ├── Dockerfile # Docker 映像檔
│ └── .dockerignore # Docker 忽略檔案
├── docker-stack/ # Docker Compose 配置
│ ├── docker-compose.yml # 服務編排檔案
│ └── .env.example # 環境變數範例
├── README.md # 專案說明
├── QUICKSTART.md # 快速開始指南
└── LICENSE # 授權檔案
Docker 指令
# 建立映像檔
cd docker
docker build -t tobiichi-gpt .
# 直接執行容器
docker run -d -p 8000:8000 --name tobiichi-gpt tobiichi-gpt
# 使用 Docker Compose(推薦)
cd .\docker-stack
docker-compose up -d
# 查看容器狀態
docker ps
# 查看日誌
docker logs -f tobiichi-gpt
# 停止並移除
docker-compose down
與 Open WebUI 整合
如果 Open WebUI 也在 Docker 中運行,將兩者加入同一網路:
# 在 docker-compose.yml 中加入 Open WebUI
version: '3.8'
services:
human-reply-server:
build: .
container_name: tobiichi-gpt
ports:
- "8000:8000"
networks:
- tobiichi-network
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
networks:
- tobiichi-network
networks:
tobiichi-network:
driver: bridge
volumes:
open-webui:
然後在 Open WebUI 中使用:
- API Base URL:
http://human-reply-server:8000/v1
📝 進階設定
修改等待超時時間
編輯 docker/human_reply_server.py 第 79 行:
timeout = 600 # 預設 10 分鐘,可改為其他秒數
修改伺服器埠號
方法 1: 修改 docker-compose.yml
# 編輯 docker-stack/docker-compose.yml
ports:
- "9000:8000" # 本機 9000 對應容器 8000
方法 2: 修改程式碼
# 編輯 docker/human_reply_server.py
uvicorn.run(app, host="0.0.0.0", port=8000) # 改為其他埠號
設定 Cloudflare Tunnel
詳細設定步驟請參考專案根目錄的說明文件,或參考 docker-stack/.env.example:
cd docker-stack
Copy-Item .env.example .env
notepad .env # 填入您的 CLOUDFLARE_TUNNEL_TOKEN
支援多管理員
目前版本採「先搶先贏」機制,任何管理員都可以回覆任何訊息。若需要分配機制,可以加入:
- 管理員登入系統
- 訊息認領機制
- 管理員負載平衡
⚠️ 注意事項
- 此為最簡化版本,適合小規模使用
- 訊息儲存在記憶體中,重啟會遺失
- 沒有身份驗證,建議僅在內網使用
- 若需生產環境,建議加入:
- 資料庫持久化
- 身份驗證
- WebSocket 即時推送
- 訊息隊列系統
🎨 管理員後台截圖
後台提供:
- 待處理訊息列表
- 用戶訊息顯示
- 回覆文字框
- 一鍵送出功能
- 自動刷新