多渠道 AI 平台 · 开箱即用
支持 OpenAI / Claude / 智谱 / 硅基流动等任意兼容接口,含对话、图片生成、用户系统、卡密充值、专栏和管理后台。
演示账号:注册即可使用,默认赠送 10 次体验额度。
- 专栏广场:按领域预设 system prompt,一键进入专属对话(代码助手、写作助手、翻译等)
- 多渠道对话:流式输出(打字机效果)、多轮对话、Markdown 渲染、代码高亮、Artifacts 预览
- 对话管理:新建/删除/重命名会话、消息编辑/重试/复制、对话导出分享
- 图片生成:文生图、图生图、负面提示词、Steps/CFG/Seed 高级参数、历史记录、收藏
- 用户系统:注册/登录(可开启邀请码)、卡密激活充值、次数/有效期管理
- 渠道管理:增删改渠道,每个渠道支持多 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
git clone https://github.com/tljcpa/aihub.git
cd aihubcd backend
# 复制并填写配置
cp .env.example .env
# 编辑 .env,填入 JWT_SECRET(随机字符串)和管理员密码
cp channels.example.json channels.json
# 编辑 channels.json,填入你的 API 渠道信息
# 安装依赖
pip install -r requirements.txtcd ../frontend
npm install
npm run build # 生产构建,产物在 frontend/dist/cd ../backend
uvicorn main:app --host 0.0.0.0 --port 10227访问 http://localhost:10227,首次启动自动创建管理员账号(密码见 .env)。
# 写入 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 aihubserver {
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";
}
}bash deploy.sh --update # 拉代码、重新构建前端、重启服务
bash deploy.sh --restart # 仅重启
bash deploy.sh --logs # 查看实时日志
bash deploy.sh --status # 查看服务状态暂未提供官方 Docker 镜像,欢迎 PR。
| 变量 | 说明 |
|---|---|
JWT_SECRET |
JWT 签名密钥,随机字符串即可 |
ADMIN_USERNAME |
管理员用户名 |
ADMIN_PASSWORD |
管理员密码 |
DATABASE_URL |
数据库连接串,默认 SQLite |
| 字段 | 类型 | 说明 |
|---|---|---|
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": [{
"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 自动轮询。
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 |
| 方法 | 路径 | 说明 |
|---|---|---|
| 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 支持
- 更多模型参数支持
- 移动端适配