One API on Workers

一个基于 Cloudflare Workers 分布式、低延迟、高性能的 AI 统一网关,支持多渠道管理、负载均衡、用量统计和追踪。
本项目基于 awsl-one-api
## ✨ 功能特性 - 🚀 **基于 Cloudflare Workers**:全球分布式网络、低延迟、高性能 - 🔐 **多渠道**:支持 OpenAI、Gemini、Azure OpenAI、Claude 等多种 AI 服务商 - 🎫 **负载均衡**:支持多KEY/渠道间分配请求,自动重试+自动轮换,确保高可用性 - 📊 **用量统计***:Analytics Engine 实时统计,精确成本核算与日志回溯 - 💰 **定价管理**:灵活的模型定价配置 - 🎨 **Web 管理界面**:直观的 Web 界面进行配置管理 - 🧪 **API 测试工具**:内置 API 测试功能,支持实时调试 ## 🏗️ 系统架构 ```mermaid flowchart LR subgraph Clients["客户端"] A[Client Apps] end subgraph CF["Cloudflare Workers"] B[One API on Workers] D1[(Cloudflare
D1 Database)] D2[(Cloudflare
Analytics Engine)] end subgraph Providers["AI 服务商"] C1[Anthropic] C2[OpenAI] end A -->|API Request| B B -->|Proxy| C1 B -->|Proxy| C2 B <-->|Read/Write| D1 B -->|Write| D2 ```

📁 项目结构

```text one-api-workers/ ├── src/ # 源代码目录 │ ├── admin/ # 管理接口 │ │ ├── channel_api.ts # 渠道管理 API │ │ ├── token_api.ts # Token 管理 API │ │ ├── pricing_api.ts # 定价管理 API │ │ ├── db_api.ts # 数据库初始化 API │ │ └── index.ts # 管理接口路由 │ ├── providers/ # AI 服务商 │ │ ├── azure-openai-proxy.ts # Azure OpenAI 代理 │ │ ├── openai-proxy.ts # OpenAI / Gemini 兼容代理 │ │ ├── claude-proxy.ts # Claude 代理 │ │ ├── openai-responses-proxy.ts # OpenAI Responses 代理 │ │ ├── azure-openai-responses-proxy.ts # Azure Responses 代理 │ │ └── index.ts # 渠道路由 │ ├── db/ # 数据库相关 │ ├── model/ # 数据模型 │ ├── constants.ts # 常量定义 │ ├── utils.ts # 工具函数 │ └── index.ts # 主入口文件 ├── public/ # 静态文件 │ └── index.html # Web 管理界面 ├── type.d.ts # 类型定义 ├── wrangler.jsonc # 生产/部署配置 ├── wrangler.local.jsonc # 本地开发配置 └── package.json # 项目配置 ```
## 🚀 快速开始 ### 环境要求 - Bun 1.3+ - Cloudflare Workers 账户 ### 安装依赖 ```bash bun install ``` 仓库已配置为 Bun workspaces,根目录一次安装会同时安装 Worker 和 `frontend/` 的依赖。 ### 配置环境 1. 修改 `wrangler.jsonc`,用于生产部署: ```jsonc { "$schema": "node_modules/wrangler/config-schema.json", "name": "one-api-workers", "main": "src/index.ts", "compatibility_date": "2025-04-28", "workers_dev": false, "vars": { "ADMIN_TOKEN": "your-secure-admin-token-here" }, "assets": { "directory": "./public", "binding": "ASSETS", "run_worker_first": true }, "d1_databases": [ { "binding": "DB", "database_name": "your-database-name", "database_id": "your-database-id" } ] } ``` 2. 修改 `wrangler.local.jsonc`,用于本地开发: ```jsonc { "$schema": "node_modules/wrangler/config-schema.json", "name": "one-api-workers", "main": "src/index.ts", "compatibility_date": "2025-04-28", "workers_dev": false, "vars": { "ADMIN_TOKEN": "your-local-admin-token", "FRONTEND_DEV_SERVER_URL": "http://127.0.0.1:5173" } } ``` 3. 创建 Cloudflare D1 数据库: ```bash wrangler d1 create one-api-workers ``` 4. 在 Cloudflare Dashboard 中手动绑定生产域名: 1. 进入 `Workers & Pages` 2. 选择当前 Worker 3. 打开 `Settings > Domains & Routes` 4. 选择 `Add > Custom Domain` 5. 添加你的生产域名 如果你选择在 Dashboard 管理生产域名,就不要再把 `routes` / `custom_domain` 写回 `wrangler.jsonc`,否则下次 `wrangler deploy` 会用配置文件覆盖 Dashboard 中的路由设置。 ### 本地开发 ```bash bun run dev ``` - 前端 Vite 开发服务器:`http://127.0.0.1:5173` - Cloudflare Worker 本地服务:`http://127.0.0.1:8788`(入口) ### 部署到生产环境 ```bash bun run deploy ``` 部署前会自动构建前端资源到 `public/`。

📖 使用与配置

### 使用指南 #### 渠道配置 1. 访问 `https://your-domain.com` 2. 使用管理员 Token 登录 3. 进入 **🔗 渠道管理** 页面 4. 点击 **➕ 添加渠道** 按钮 5. 选择渠道类型(OpenAI、Azure OpenAI、Claude、Responses) 6. 填写渠道标识和配置信息(名称、端点、API 密钥、模型映射) 7. 点击 **💾 保存渠道** 按钮 **提示**:系统会根据选择的渠道类型自动显示相应的配置字段。 #### Token 创建和使用 1. 在 Web 界面切换到 **🔑 令牌管理** 标签 2. 点击 **➕ 添加令牌** 按钮 3. 填写令牌名称,系统会自动生成 `sk-` 开头的 Token 4. 配置允许访问的渠道和配额 5. 点击 **💾 保存令牌** 按钮 6. 使用 **📋 复制** 按钮获取 Token 用于 API 调用 #### OpenAI 兼容 API 本项目提供完全兼容的 OpenAI API 接口: ```bash curl https://your-domain.com/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -d '{ "model": "gpt-4", "messages": [ { "role": "user", "content": "Hello, world!" } ] }' ``` #### Responses API(OpenAI / Azure) ```bash curl https://your-domain.com/v1/responses \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -d '{ "model": "gpt-5.1-codex-max", "input": "Hello, Responses API!" }' ``` #### API 测试工具 管理界面内置了强大的 API 测试工具,无需额外工具即可进行 API 调试: **功能特性** - **🚀 一键测试**:直接在 Web 界面中测试 API 调用 - **📝 JSON 编辑器**:支持 JSON 格式验证和语法高亮 - **⚡ 实时响应**:显示响应时间、状态码和完整响应内容 - **🔍 错误诊断**:自动区分 HTTP 错误和 JSON 响应,便于排查问题 - **📋 一键复制**:支持复制 Token 和响应内容 **使用步骤** 1. 访问管理界面,切换到 **🧪 API 测试** 标签 2. 输入你的 API Token(可从令牌管理页面复制) 3. 编辑请求 JSON(预填充标准格式) 4. 点击 **🚀 发送请求** 按钮 5. 查看响应结果和状态信息 ### 管理功能 #### Web 管理界面 访问 `https://your-domain.com` 即可使用 Web 管理界面,功能包括: - **🔗 渠道管理**:添加、编辑、删除 AI 服务商(支持 OpenAI、Azure OpenAI、Claude、OpenAI Responses、Azure Responses) - **🔑 API Token 管理**:生成、管理和监控 API Token 使用情况 - **💰 定价配置**:灵活配置不同模型的定价策略 - **🧪 API 测试工具**:内置 API 测试界面,支持实时调试和错误排查 **管理界面特性** - **现代化 UI**:响应式设计,支持桌面和移动设备 - **实时反馈**:操作结果即时显示,支持悬浮提示 - **智能表单**:自动生成 Token、JSON 格式验证、一键复制功能,根据渠道类型智能显示配置字段 - **安全认证**:管理员 Token 认证,数据安全保护 ### 配置说明 #### 渠道配置 目前支持以下 AI 服务商: **OpenAI 配置** ```json { "name": "My OpenAI Channel", "type": "openai", "endpoint": "https://api.openai.com/v1/", "api_key": "sk-your-openai-api-key", "deployment_mapper": { "gpt-4": "gpt-4", "gpt-3.5-turbo": "gpt-3.5-turbo" } } ``` **Gemini 配置** Gemini 通过官方 OpenAI 兼容层接入,建议将 `endpoint` 配置为 `https://generativelanguage.googleapis.com/v1beta/openai/`。 ```json { "name": "My Gemini Channel", "type": "gemini", "endpoint": "https://generativelanguage.googleapis.com/v1beta/openai/", "api_key": "AIza-your-gemini-api-key", "deployment_mapper": { "gemini-2.5-flash": "gemini-2.5-flash", "gemini-2.5-pro": "gemini-2.5-pro" } } ``` **Azure OpenAI 配置** ```json { "name": "My Azure OpenAI", "type": "azure-openai", "endpoint": "https://your-resource.openai.azure.com/", "api_key": "your-azure-api-key", "api_version": "2024-02-15-preview", "deployment_mapper": { "gpt-4": "gpt-4-deployment-name", "gpt-3.5-turbo": "gpt-35-turbo-deployment-name" } } ``` **Claude 配置** ```json { "name": "My Claude Channel", "type": "claude", "endpoint": "https://api.anthropic.com/v1/", "api_key": "sk-your-claude-api-key", "api_version": "2023-06-01", "deployment_mapper": { "claude-3-5-sonnet-20241022": "claude-3-5-sonnet-20241022" } } ``` **OpenAI Responses 配置** ```json { "name": "My OpenAI Responses", "type": "openai-responses", "endpoint": "https://api.openai.com/v1/", "api_key": "sk-your-openai-api-key", "deployment_mapper": { "gpt-5.1-codex-max": "gpt-5.1-codex-max" } } ``` **Azure OpenAI Responses 配置(v1)** ```json { "name": "My Azure Responses", "type": "azure-openai-responses", "endpoint": "https://your-resource.openai.azure.com/", "api_key": "your-azure-api-key", "deployment_mapper": { "gpt-5.1-codex-max": "your-deployment-name" } } ``` **配置字段说明**: - `name`: 渠道显示名称 - `type`: 服务商类型(`openai`、`gemini`、`azure-openai`、`claude`、`openai-responses`、`azure-openai-responses`) - `endpoint`: API 端点地址 - `api_key`: API 密钥 - `api_version`: API 版本(Azure OpenAI / Claude 可用;Azure Responses v1 请留空) - `deployment_mapper`: 模型名称映射关系(用于自定义模型名称映射) ### Token 配置 支持详细的 Token 配置,包括名称、访问权限和配额管理: ```json { "name": "用户令牌1", "channel_keys": ["azure-openai-1", "azure-openai-2"], "total_quota": 1000000 } ``` **配置字段说明**: - `name`: Token 名称,便于管理识别 - `channel_keys`: 允许访问的渠道列表,空数组表示允许所有渠道 - `total_quota`: 总配额(基础单位:1百万 token = $1.00) ### 监控与统计 - **使用量统计**:自动记录每次 API 调用的 Token 使用量 - **费用计算**:基于模型定价自动计算费用 - **配额管理**:支持 Token 级别的配额限制 - **实时监控**:Web 界面实时显示使用情况和剩余配额 ### 核心优势 - **零配置部署**:基于 Cloudflare Workers,无需服务器维护 - **全球加速**:利用 Cloudflare 全球边缘网络,低延迟访问 - **成本优化**:按需计费,无固定服务器成本 - **高可用性**:Cloudflare 基础设施保证 99.9% 可用性 - **安全可靠**:内置 Token 认证和配额管理机制 ### 安全性 - **Token 认证**:所有 API 调用需要有效的 Bearer Token - **管理员认证**:管理接口使用独立的管理员 Token - **CORS 支持**:配置跨域访问策略 ### API 文档 部署后可访问以下地址查看完整 API 文档: - Swagger UI: `https://your-domain.com/api/docs` - ReDoc: `https://your-domain.com/api/redocs` - OpenAPI JSON: `https://your-domain.com/api/openapi.json`
## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📄 许可证 MIT License 鸣谢:awsl-one-api ## 🙋‍♂️ 支持 如有问题或建议,请创建 Issue 或联系维护者。