基于 Cloudflare Workers 的 LLM API 反向代理
本项目是一个基于 Cloudflare Workers 构建的轻量级 LLM API 反向代理网关。它旨在解决国内访问受限问题,并统一了不同大模型平台的调用方式。
核心特性:
- 🚀 多平台支持:一站式集成 OpenAI, Gemini, Groq, Mistral 等主流模型。
- ⚡ 接口统一:完全兼容 OpenAI API 规范,可直接使用 OpenAI SDK 或 LangChain 调用。
- 🛡️ 隐私安全:代码开源,基于 Serverless 部署,不保存任何用户数据。
- 🌍 无缝访问:解决部分 API 的地理位置限制(Geo-blocking)。

快速开始 (Quick Start)
Demo API Endpoint: https://llmapi.ultrasev.com
1. API 路由说明
为了区分不同的底层模型服务商,请使用以下 Base URL。这可以配合 ChatBox、沉浸式翻译 等支持自定义 OpenAI 接口的工具使用。
| 平台 | Base URL (路由地址) |
|---|---|
| OpenAI | https://llmapi.ultrasev.com/v2/openai |
| Gemini | https://llmapi.ultrasev.com/v2/gemini |
| Groq | https://llmapi.ultrasev.com/v2/groq |
| Mistral | https://llmapi.ultrasev.com/v2/mistral |
2. 调用示例 (Python)
由于接口完全兼容 OpenAI 规范,你只需要修改 base_url 和 api_key 即可切换不同模型。
Gemini API 调用
from openai import OpenAI
# 配置 Gemini 的 API Key 和 Base URL
api_key = "YOUR_GEMINI_API_KEY"
base_url = "[https://llmapi.ultrasev.com/v2/gemini](https://llmapi.ultrasev.com/v2/gemini)"
model = "gemini-1.5-flash"
client = OpenAI(base_url=base_url, api_key=api_key)
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the meaning of life?"}
],
temperature=0.7,
max_tokens=1024,
# top_p=1,
)
print(response.choices[0].message.content)
Mistral API 示例
from openai import OpenAI
# 配置 Mistral 的 API Key 和 Base URL
api_key = "YOUR_MISTRAL_API_KEY"
base_url = "[https://llmapi.ultrasev.com/v2/mistral](https://llmapi.ultrasev.com/v2/mistral)"
model = "open-mistral-7b"
client = OpenAI(base_url=base_url, api_key=api_key)
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain quantum physics in 30 words."}
],
stream=True # 启用流式输出
)
print("Stream response:")
for chunk in response:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush=True)
部署指南
如果你希望拥有独立的 API 服务,可以轻松部署自己的 Worker。
- 创建 Worker:登录 Cloudflare Dashboard,创建一个新的 Worker。
- 复制代码:将 api/llm_api_proxy.js 文件中的所有代码复制并粘贴到 Worker 的编辑器中。
- 部署:点击 "Save and Deploy"。
- 配置域名 (可选但推荐):由于默认的
workers.dev域名在国内访问不稳定,建议绑定自定义域名。- 进入 Worker 设置 -> Triggers -> Custom Domains。
- 点击 "Add Custom Domain" 填入你的子域名即可。

视频教程
如果你更喜欢视频指引,可以查看我的 YouTube 教程:

常见问题 (FAQ)
Q1: 为什么 Gemini API 报错 "User location is not supported"?
A: 这是一个常见问题。即使使用了 Cloudflare,Google 也会校验请求发起的地理位置。Cloudflare Worker 是边缘计算,它会尽可能在离用户最近的节点运行。
- 原因:如果你的请求被分发到了 Google AI 不支持的地区(例如中国香港节点),API 就会拒绝访问。
- 解决方法:
- 尝试使用美国或其他支持地区的 IP 访问你的 Worker 域名。
- 在 Cloudflare 后台配置路由规则,强制某些流量走特定节点(较复杂,不推荐)。
- 参考 Issue 讨论:#11, #4。
注意事项
- 网络连接:如前所述,
workers.dev域名在国内通常无法直连,请务必绑定自定义域名。 - 数据隐私:关于 Groq 的代理,本项目通过 Vercel + FastAPI 额外封装了一层(用于处理签名等逻辑)。该层仅做透明转发,绝不保存任何数据。如果你介意,可以参考源码自行部署该中间件。
- 功能限制:目前部分模型的流式输出(Stream)可能存在兼容性问题,欢迎提交 Pull Request 修复。
参考 issues:
Git 项目地址:https://github.com/ultrasev/llmproxy