| | ---
|
| | 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。 |