opus / README.md
llzai's picture
Upload 42 files
644c352 verified
---
title: Opus API
emoji: 🚀
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
---
# Opus API - 账号管理系统
一个用于 API 消息格式转换的服务,将 Claude API 格式转换为其他格式,支持多账号 Cookie 管理和轮询。
## ✨ 功能特性
- 🔄 Claude API 消息格式转换
- 📊 Token 计数统计
- 🎯 **账号管理系统**
- 用户登录认证(JWT)
- 多 Morph 账号 Cookie 管理
- Cookie 有效性检测(手动/自动)
- Cookie 轮询策略(轮询/优先级/最少使用)
- Web 管理界面
- 🛠️ 工具调用处理
- 💾 请求/响应日志记录(调试模式)
- 🔌 支持客户端 Cookie/Authorization 请求头覆盖
## 🚀 快速开始
### 部署到 Hugging Face Spaces
1. **创建 Space**
- 在 Hugging Face 上创建新 Space
- 选择 **Docker SDK**
- Space 名称例如:`your-username/opus-api`
2. **配置环境变量**
在 Space 的 **Settings → Repository secrets** 中添加:
| Secret 名称 | 说明 | 示例值 |
|-------------|------|--------|
| `DATABASE_URL` | PostgreSQL 数据库连接 | `postgresql://user:password@host:5432/dbname` |
| `JWT_SECRET` | JWT 签名密钥 | `your-random-secret-key-here` |
| `DEFAULT_ADMIN_PASSWORD` | 管理员密码 | `changeme123` |
3. **推送代码**
```bash
git remote add hf https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME
git push hf main
```
4. **访问管理界面**
- 访问 `https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space`
- 使用默认账号登录:
- 用户名:`admin`
- 密码:你设置的 `DEFAULT_ADMIN_PASSWORD`
## 📡 API 端点
### 认证 API
```
POST /api/auth/login # 用户登录
POST /api/auth/logout # 用户登出
GET /api/auth/me # 获取当前用户信息
```
### Cookie 管理 API(需要认证)
```
GET /api/cookies # 获取 Cookie 列表
POST /api/cookies # 添加 Cookie
GET /api/cookies/:id # 获取单个 Cookie
PUT /api/cookies/:id # 更新 Cookie
DELETE /api/cookies/:id # 删除 Cookie
POST /api/cookies/:id/validate # 验证单个 Cookie
POST /api/cookies/validate/all # 批量验证所有 Cookie
GET /api/cookies/stats # 获取统计信息
```
### 消息转换 API
```
POST /v1/messages # 消息转换接口(支持客户端 Cookie 覆盖)
GET /health # 健康检查接口
```
## 🔧 使用方法
### 1. Web 管理界面
访问 `/dashboard``/static/dashboard.html`,登录后可以:
- 查看 Cookie 统计信息
- 添加/编辑/删除 Cookie
- 手动或批量验证 Cookie 有效性
- 设置 Cookie 优先级
### 2. 调用消息 API
**基础请求:**
```bash
curl -X POST https://your-space.hf.space/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
```
**使用自定义 Cookie(覆盖轮询):**
```bash
curl -X POST https://your-space.hf.space/v1/messages \
-H "Content-Type: application/json" \
-H "Cookie: _gcl_aw=GCL.17692..." \
-d '{
"model": "claude-opus-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
```
## 🗄️ 数据库结构
### users 表
```sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
### morph_cookies 表
```sql
CREATE TABLE morph_cookies (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
name VARCHAR(100) NOT NULL,
api_key TEXT NOT NULL,
session_key TEXT,
is_valid BOOLEAN DEFAULT true,
last_validated TIMESTAMP,
last_used TIMESTAMP,
priority INTEGER DEFAULT 0,
usage_count BIGINT DEFAULT 0,
error_count INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
### user_sessions 表
```sql
CREATE TABLE user_sessions (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
token_hash VARCHAR(255) UNIQUE NOT NULL,
expires_at TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
## 🔄 Cookie 轮询策略
系统支持三种轮询策略,通过环境变量 `ROTATION_STRATEGY` 配置:
| 策略 | 说明 |
|------|------|
| `priority` | 按优先级(数字越大越优先,默认) |
| `round_robin` | 轮询(按顺序循环使用) |
| `least_used` | 使用次数最少的优先 |
## 🔐 环境变量配置
| 变量名 | 说明 | 默认值 | 必需 |
|--------|------|--------|------|
| `DATABASE_URL` | PostgreSQL 连接字符串 | - | ✅ |
| `JWT_SECRET` | JWT 签名密钥 | - | ✅ |
| `DEFAULT_ADMIN_USERNAME` | 默认管理员用户名 | `admin` | ❌ |
| `DEFAULT_ADMIN_PASSWORD` | 默认管理员密码 | `changeme123` | ❌ |
| `COOKIE_MAX_ERROR_COUNT` | Cookie 失败阈值 | `3` | ❌ |
| `ROTATION_STRATEGY` | 轮询策略 | `priority` | ❌ |
| `DEBUG_MODE` | 调试模式 | `false` | ❌ |
## 🛠️ 本地开发
### 前置要求
- Go 1.21+
- PostgreSQL 14+
- Python 3.9+(用于 Hugging Face 部署)
### 安装依赖
```bash
go mod download
```
### 配置环境变量
```bash
cp .env.example .env
# 编辑 .env 文件,设置数据库连接等
```
### 运行服务
```bash
# 使用 Go 直接运行
go run cmd/server/main.go
# 或使用 Docker
docker build -t opus-api .
docker run -p 7860:7860 \
-e DATABASE_URL="postgresql://..." \
-e JWT_SECRET="your-secret" \
opus-api
```
## 📁 项目结构
```
opus-api/
├── cmd/server/ # 主程序入口
│ └── main.go
├── internal/
│ ├── converter/ # 格式转换逻辑
│ ├── handler/ # HTTP 处理器
│ │ ├── messages.go # 消息处理
│ │ ├── health.go # 健康检查
│ │ ├── auth.go # 认证处理
│ │ └── cookies.go # Cookie 管理
│ ├── middleware/ # 中间件
│ │ └── auth.go # JWT 认证
│ ├── model/ # 数据模型
│ │ ├── db.go # 数据库连接
│ │ ├── user.go # 用户模型
│ │ └── cookie.go # Cookie 模型
│ ├── service/ # 业务逻辑
│ │ ├── auth_service.go # 认证服务
│ │ ├── cookie_service.go# Cookie 服务
│ │ ├── validator.go # Cookie 验证
│ │ └── rotator.go # Cookie 轮询
│ ├── logger/ # 日志管理
│ ├── parser/ # 消息解析
│ ├── stream/ # 流式处理
│ ├── tokenizer/ # Token 计数
│ ├── types/ # 类型定义
│ └── converter/ # 格式转换
├── web/static/ # 前端静态文件
│ ├── index.html # 登录页
│ ├── dashboard.html # 管理面板
│ ├── styles.css # 样式
│ └── app.js # 前端逻辑
├── migrations/ # 数据库迁移(可选)
├── .env.example # 环境变量示例
├── app.py # Python 启动脚本
├── Dockerfile # Docker 构建文件
└── go.mod # Go 依赖管理
```
## 📝 技术栈
- **后端**: Go 1.21, Gin
- **数据库**: PostgreSQL, GORM
- **认证**: JWT
- **前端**: HTML, CSS, Vanilla JavaScript
- **容器化**: Docker
- **部署平台**: Hugging Face Spaces
## 🔐 安全建议
1. **首次登录后立即修改默认密码**
2. **生产环境使用强 JWT_SECRET**
3. **定期更新 Cookie**(Morph Cookie 可能会过期)
4. **使用 HTTPS**(Hugging Face Spaces 自动提供)
## 📄 许可证
本项目遵循开源协议。
## 🤝 贡献
欢迎提交 Issue 和 Pull Request。
## 📞 联系方式
如有问题或建议,欢迎提交 Issue。