Skip to content

Tokinx/one-api-workers

Repository files navigation

One API on Workers

一个基于 Cloudflare Workers 分布式、低延迟、高性能的 AI 统一网关,支持渠道管理、负载均衡、用量统计。

本项目基于 dreamhunter2333/awsl-one-api 由 AI 驱动二次开发

项目概览

  • 基于 Cloudflare Workers:全球分布式网络、低延迟、高性能
  • 统一代理入口:支持 /v1/chat/completions/v1/messages/v1/responses/v1/audio/speech/v1/models
  • 负载均衡路由:支持按权重路由,单渠道多 Key,失败重试、Key 轮换和跨渠道 fallback
  • 配额与计费:支持 Token 级额度控制、全局模型定价、渠道级模型定价
  • 观测能力:写入 Cloudflare Analytics Engine,后台提供概览、趋势、分布和用量日志检索
  • 管理后台:React + Vite 管理界面,覆盖渠道、令牌、定价、API 测试、系统设置
  • 管理员安全:默认管理员令牌登录,可选 Telegram 二次验证,后台登录链路带限速与 session cookie
  • API 文档:基于 Chanfana 暴露 Swagger、ReDoc、OpenAPI JSON,可在系统设置中开关

支持范围

代理接口

路由 说明 对应渠道类型
/v1/chat/completions OpenAI Chat Completions 兼容代理 openaiazure-openaigemini
/v1/messages Anthropic Claude Messages 兼容代理 claudeclaude-to-openai
/v1/responses OpenAI / Azure Responses 代理 openai-responsesazure-openai-responses
/v1/audio/speech TTS 语音生成代理 openai-audioazure-openai-audio
/v1/models 按 Token 权限和额度过滤后的模型列表 根据 Token 可访问渠道动态返回

部署方式

一键部署:

Deploy to Cloudflare

手动部署

创建 D1 数据库,获取数据库 Name、ID
启用 Analytics Engine 并创建一张数据集,获取数据集 Name
将上述数据更新入 wrangler.jsonc

# 设置生产 Secret
wrangler secret put ADMIN_TOKEN
wrangler secret put CF_API_TOKEN
wrangler secret put CF_ACCOUNT_ID

# 发布 Worker
bun run deploy

管理后台

当前后台页面包括:

  • Dashboard:总请求数、成功率、成本、耗时、Token/渠道/模型/提供商分布
  • Usage Logs:按时间范围、维度、关键字和结果筛选明细日志
  • Channels:渠道配置、权重、自动重试/轮换、模型映射、拉取上游模型列表
  • Tokens:API Token 管理、渠道访问范围、额度限制、用量重置
  • Pricing:全局模型定价编辑,支持按量和按次计费
  • API Test:直接在后台测试 /v1/chat/completions/v1/messages/v1/responses/v1/audio/speech
  • System Settings:Telegram 管理员验证、金额显示精度、API 文档开关

项目结构

one-api-workers/
├── src/
│   ├── admin/                    # 管理接口:auth / channel / token / pricing / analytics / system
│   ├── analytics/                # Analytics Engine 写入与查询
│   ├── db/                       # D1 初始化与迁移
│   ├── providers/                # 各类上游代理实现
│   ├── billing.ts                # 计费与金额精度
│   ├── channel-config.ts         # 渠道配置归一化
│   ├── system-config.ts          # 系统配置与 Telegram 安全配置
│   └── index.ts                  # Worker 入口
├── frontend/
│   ├── src/pages/                # Dashboard / Channels / Tokens / Pricing / Usage Logs / Settings
│   ├── src/components/           # 布局、图表、UI 组件
│   └── package.json              # 前端构建与 lint
├── public/                       # 前端构建产物,由 Worker 直接托管
├── docs/                         # 使用文档与安全文档
├── tests/                        # Mock upstream + 本地 E2E 脚本
├── wrangler.jsonc                # 生产配置
├── wrangler.local.jsonc          # 本地 Worker 配置
├── type.d.ts                     # Worker 绑定与共享类型
└── package.json                  # 根 workspace 与开发命令

快速开始

环境要求

  • Bun 1.3+
  • Cloudflare 账户,Workers + D1 database + Analytics Engine (usage_events_by_token)

安装依赖

bun install

配置 Cloudflare 绑定

当前仓库里的 wrangler.jsonc / wrangler.local.jsonc 已经包含运行所需绑定结构,但你需要替换成自己的环境信息:

  • d1_databases[].database_name / database_id:替换为自己的 D1
  • analytics_engine_datasets[].dataset:默认使用 usage_events_by_token
  • vars.FRONTEND_DEV_SERVER_URL:仅本地联调时使用,默认 http://127.0.0.1:5173
  • assets:保持 public/ASSETS 绑定即可

当前配置中的关键 secrets:

  • ADMIN_TOKEN:管理员登录令牌,必需
  • CF_API_TOKEN:用于查询 Analytics Engine SQL,支持后台分析看板和用量日志
  • CF_ACCOUNT_ID:与 CF_API_TOKEN 配套,用于 Cloudflare Analytics 查询

示例:

wrangler secret put ADMIN_TOKEN
wrangler secret put CF_API_TOKEN
wrangler secret put CF_ACCOUNT_ID

本地开发可以用 .dev.vars 提供这些值;tests/ 下的脚本也会优先读取这个文件。

数据库初始化与迁移

项目会在首次请求时自动执行 D1 schema 初始化和迁移,不需要额外手动跑 SQL。

如果你希望在部署后主动触发初始化,也可以在通过管理员认证后访问:

POST /api/admin/db_initialize

本地开发

启动前后端联调:

bun run dev

常用地址:

  • 前端 Vite 开发服务器:http://127.0.0.1:5173
  • Worker 本地服务:http://127.0.0.1:8787

其他常用命令:

bun run dev:worker
bun run build
bun run cf-typegen
cd frontend && bun run lint

文档

贡献

欢迎提交 Issue 和 Pull Request。

许可证

MIT License

鸣谢:dreamhunter2333/awsl-one-api

支持

如有问题或建议,请创建 Issue 或联系维护者。

About

A distributed, low-latency, and high-performance AI unified gateway based on Cloudflare Workers, supporting multi-channel management, load balancing, usage statistics, and tracking.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors