2025-12-20 12:16:48 +08:00
2025-12-20 12:16:48 +08:00
2025-12-20 12:16:48 +08:00
2025-12-20 01:09:27 +08:00
2025-12-19 16:25:20 +00:00
2025-12-20 01:09:27 +08:00
2025-12-20 01:09:27 +08:00

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 中設定

  1. 開啟 http://localhost:3000
  2. 進入 SettingsConnections
  3. 點擊 + Add OpenAI Connection
  4. 填入設定:
    • API Base URL: http://human-reply-server:8000/v1
    • API Key: 隨便填 (例如: sk-human)
  5. 儲存後,模型列表會出現 human-admin

開始使用

  1. 用戶端: 在 Open WebUI (http://localhost:3000) 選擇 human-admin 模型,發送訊息
  2. 管理員: 訪問 http://localhost:8000/admin查看並回覆訊息
  3. 自動刷新: 後台每 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 即時推送
    • 訊息隊列系統

🎨 管理員後台截圖

後台提供:

  • 待處理訊息列表
  • 用戶訊息顯示
  • 回覆文字框
  • 一鍵送出功能
  • 自動刷新
Description
No description provided
Readme GPL-3.0 128 KiB
Languages
Python 74.5%
Shell 25.5%