Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 AI Hub

多渠道 AI 平台 · 开箱即用

Python Vue FastAPI License

支持 OpenAI / Claude / 智谱 / 硅基流动等任意兼容接口,含对话、图片生成、用户系统、卡密充值、专栏和管理后台。

演示地址 · 快速开始 · API 文档


演示站点

🌐 http://aihub.zdwktlj.top

演示账号:注册即可使用,默认赠送 10 次体验额度。


功能

用户侧

  • 专栏广场:按领域预设 system prompt,一键进入专属对话(代码助手、写作助手、翻译等)
  • 多渠道对话:流式输出(打字机效果)、多轮对话、Markdown 渲染、代码高亮、Artifacts 预览
  • 对话管理:新建/删除/重命名会话、消息编辑/重试/复制、对话导出分享
  • 图片生成:文生图、图生图、负面提示词、Steps/CFG/Seed 高级参数、历史记录、收藏
  • 用户系统:注册/登录(可开启邀请码)、卡密激活充值、次数/有效期管理

管理侧(/panel,双重认证保护)

  • 渠道管理:增删改渠道,每个渠道支持多 Key 轮询,自动负载均衡
  • 模型管理:全局启用/禁用指定模型,修改显示名称,按渠道过滤
  • 卡密管理:批量生成卡密(次数 + 有效期双维度)、查看使用状态
  • 邀请码管理:独立于卡密,控制注册准入,支持多次使用
  • 用户管理:调整用户余额/有效期/角色,一键封禁/解封
  • 专栏管理:增删改专栏,配置 system prompt、推荐模型、访问权限
  • 使用统计:按天查看对话/图片调用量
  • 公告系统:发布全站公告横幅
  • 全局配置:在线编辑 config.json,无需重启即可切换功能开关

技术栈

技术
后端 Python 3.8+ / FastAPI / SQLAlchemy / SQLite / OpenAI SDK
前端 Vue 3 / TypeScript / Vite / Pinia / Vue Router
部署 Nginx / systemd / uvicorn

快速开始

环境要求

  • Python 3.8+
  • Node.js 18+
  • (可选)Nginx

1. 克隆仓库

git clone https://github.com/tljcpa/aihub.git
cd aihub

2. 配置后端

cd backend

# 复制并填写配置
cp .env.example .env
# 编辑 .env,填入 JWT_SECRET(随机字符串)和管理员密码

cp channels.example.json channels.json
# 编辑 channels.json,填入你的 API 渠道信息

# 安装依赖
pip install -r requirements.txt

3. 构建前端

cd ../frontend
npm install
npm run build          # 生产构建,产物在 frontend/dist/

4. 启动服务

cd ../backend
uvicorn main:app --host 0.0.0.0 --port 10227

访问 http://localhost:10227,首次启动自动创建管理员账号(密码见 .env)。


生产部署

使用 systemd 托管(推荐)

# 写入 systemd 服务
cat > /etc/systemd/system/aihub.service << EOF
[Unit]
Description=AI Hub
After=network.target

[Service]
WorkingDirectory=/path/to/aihub/backend
EnvironmentFile=/path/to/aihub/backend/.env
ExecStart=/usr/bin/uvicorn main:app --host 0.0.0.0 --port 10227
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl enable --now aihub

Nginx 反代配置

server {
    listen 80;
    server_name your-domain.com;

    gzip on;
    gzip_types text/css application/javascript application/json;

    # 管理后台双重保护(需先生成密码文件:htpasswd -c /etc/nginx/.aihub_passwd admin)
    location /panel {
        auth_basic "Admin";
        auth_basic_user_file /etc/nginx/.aihub_passwd;
        proxy_pass http://127.0.0.1:10227;
        proxy_set_header Host $host;
    }

    # 流式对话(关闭缓冲)
    location /api/chat/ {
        proxy_pass http://127.0.0.1:10227;
        proxy_buffering off;
        proxy_read_timeout 300s;
        gzip off;
    }

    location /assets/ {
        proxy_pass http://127.0.0.1:10227;
        add_header Cache-Control "public, max-age=31536000, immutable";
    }

    location / {
        proxy_pass http://127.0.0.1:10227;
        proxy_set_header Host $host;
        add_header Cache-Control "no-cache";
    }
}

使用 deploy.sh 快速更新

bash deploy.sh --update    # 拉代码、重新构建前端、重启服务
bash deploy.sh --restart   # 仅重启
bash deploy.sh --logs      # 查看实时日志
bash deploy.sh --status    # 查看服务状态

Docker(社区贡献欢迎)

暂未提供官方 Docker 镜像,欢迎 PR。


配置说明

.env

变量 说明
JWT_SECRET JWT 签名密钥,随机字符串即可
ADMIN_USERNAME 管理员用户名
ADMIN_PASSWORD 管理员密码
DATABASE_URL 数据库连接串,默认 SQLite

config.json

字段 类型 说明
site_name string 网站名称
allow_register bool 是否开放注册
invite_code bool 注册是否需要邀请码
default_credits int 新用户默认次数
credit_cost.chat int 每次对话消耗次数
credit_cost.image int 每次图片生成消耗次数
daily_limit.enabled bool 是否开启每日限额
rate_limit.enabled bool 是否开启 IP 限流
features.* bool 各功能开关

channels.json

{
  "channels": [{
    "id": "ch_001",
    "name": "渠道名称",
    "base_url": "https://api.openai.com/v1",
    "api_keys": [
      {"key": "sk-xxx", "note": "备注", "enabled": true}
    ],
    "models": {
      "chat": ["gpt-4o", "gpt-4o-mini"],
      "image": ["dall-e-3"]
    },
    "enabled": true
  }]
}

支持任意 OpenAI 兼容接口(智谱、硅基流动、中转 API 等),多 Key 自动轮询。


API 文档

Base URL: http://your-domain/api

所有需要认证的接口在 Header 中传 Authorization: Bearer <token>

认证

方法 路径 说明 认证
POST /auth/register 注册
POST /auth/login 登录,返回 token
GET /auth/me 获取当前用户信息 需要
POST /auth/redeem 激活卡密 需要

注册请求体

{
  "username": "string",
  "password": "string",
  "email": "string (可选)",
  "invite_code": "string (开启邀请码时必填)"
}

登录响应

{
  "token": "eyJ...",
  "username": "string",
  "role": "user | admin"
}

渠道

方法 路径 说明 权限
GET /channels/ 获取渠道列表(用户看启用的,admin 看全部) 用户
POST /channels/ 新增渠道 Admin
PUT /channels/{id} 更新渠道 Admin
DELETE /channels/{id} 删除渠道 Admin
GET /channels/{id}/models 获取渠道模型配置列表 Admin
PATCH /channels/{id}/models/{model_id} 更新单个模型配置 Admin
POST /channels/{id}/models/batch 批量更新模型配置 Admin

对话

方法 路径 说明 权限
GET /chat/sessions 会话列表 用户
POST /chat/sessions 新建会话 用户
GET /chat/sessions/{id} 获取会话消息 用户
PUT /chat/sessions/{id} 更新会话(标题/system prompt) 用户
DELETE /chat/sessions/{id} 删除会话 用户
POST /chat/sessions/{id}/messages 发送消息(SSE 流式返回) 用户
POST /chat/sessions/{id}/share 生成分享链接 用户
GET /chat/share/{token} 查看分享对话

发送消息请求体

{
  "content": "string",
  "channel_id": "string",
  "model": "string",
  "attachments": [{"type": "image", "data": "base64..."}]
}

SSE 响应格式

data: {"type": "chunk", "content": "文字片段"}
data: {"type": "notice", "message": "重试提示"}
data: {"type": "done", "tokens_in": 100, "tokens_out": 200}
data: {"type": "error", "message": "错误信息"}

图片

方法 路径 说明 权限
POST /image/generate 文生图 用户
POST /image/img2img 图生图 用户
GET /image/history 历史记录(分页) 用户
PUT /image/history/{id}/favorite 收藏/取消 用户
DELETE /image/history/{id} 删除记录 用户

文生图请求体

{
  "channel_id": "string",
  "model": "string",
  "prompt": "string",
  "negative_prompt": "string (可选)",
  "size": "1024x1024",
  "n": 1,
  "steps": 20,
  "cfg_scale": 7,
  "seed": 12345
}

专栏

方法 路径 说明 权限
GET /columns/ 专栏列表 用户
POST /columns/{slug}/start 进入专栏(创建会话) 用户
GET /columns/admin/columns 所有专栏 Admin
POST /columns/admin/columns 新建专栏 Admin
PUT /columns/admin/columns/{id} 更新专栏 Admin
DELETE /columns/admin/columns/{id} 删除专栏 Admin

管理(均需 Admin 权限)

方法 路径 说明
GET /admin/users 用户列表(支持搜索/分页)
PUT /admin/users/{id} 修改用户(余额/有效期/角色/封禁)
POST /admin/cards/generate 批量生成卡密
GET /admin/cards 卡密列表
DELETE /admin/cards/{id} 删除未使用卡密
POST /admin/invites/generate 批量生成邀请码
GET /admin/invites 邀请码列表
PUT /admin/invites/{id}/toggle 启用/禁用邀请码
GET /admin/stats 使用统计
GET/POST /admin/announcements 公告管理
GET/PUT /admin/config 全局配置读写

贡献

欢迎提交 Issue 和 PR,特别是:

  • Docker / docker-compose 支持
  • 更多模型参数支持
  • 移动端适配

License

MIT

About

Multi-channel AI platform with chat, image generation, user system and admin panel

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages