9router:连接 Claude Code 到 40+ 免费 AI 提供商,再也不怕 Token 限额
GitHub 今日趋势榜,⭐7,780,今日 +803 stars —— 一个工具连接所有主流免费 AI API,Claude Code、Cursor 都能用,Auto-fallback 机制永不限额。声称节省 40% Token 消耗。
引言:Token 限额,AI 编程的噩梦
Claude Code 好用,但 Claude 3.5 Sonnet 有 RPM(每分钟请求数)和 TPM(每分钟 Token 数)限额。
- RPM 限制:每分钟最多 50 个请求
- TPM 限制:每分钟最多 15 万 Token(Anthropic Pro)
重度用户一天之内就可能撞上限额。Cursor 有 credits 限制。Copilot 订阅贵。
免费工具额度不够用,付费工具又太贵。怎么办?
9router 干了一件很爽的事:把 40+ 免费 AI 提供商聚合在一起,配上智能路由和自动切换,永远不会撞上限额。
支持的免费提供商:40+ 平台汇总
| 提供商 | 免费额度/天 | 支持模型 | 延迟 | 稳定性 |
|---|---|---|---|---|
| Groq | ~500 请求 | Llama-3.3 70B | 极快(<500ms) | 高 |
| Together AI | ~1000 请求 | Mixtral, Llama-3 | 快(<1s) | 高 |
| Fireworks AI | ~500 请求 | Mixtral-8x7B | 快(<1s) | 高 |
| OpenRouter | 取决于提供商 | 聚合所有模型 | 中等 | 高 |
| Cloudflare Workers AI | 10,000 Neurons | Llama-3 | 快(<1s) | 高 |
| Cohere | 免费 tier | Command R+ | 中等 | 高 |
| Replicate | 按量付费 | 开源模型 | 慢 | 中 |
| Anyscale | $10 免费额度 | Llama, Mistral | 快 | 高 |
| SambaNova | 社区版免费 | Llama-3 | 快 | 高 |
超过 40 家,全部有免费 tier,聚合起来相当于无限额度。
核心功能详解
1. 智能 Auto-fallback
这是 9router 最核心的功能。当主提供商限额了,自动切换到备用提供商,零配置无缝衔接。
from nine_router import Router
router = Router(
providers=[
"groq", # 主:最快
"together", # 备1:稳定
"fireworks", # 备2:高质量
"openrouter" # 备3:兜底
],
strategy="fastest", # 可选: fastest / cheapest / balanced
fallback_delay=0.5 # 切换延迟(秒)
)
# 用户无感知,自动切换
response = router.chat("帮我写一个 Python Web 服务器")
# 如果 Groq 限额了,自动切到 Together
# 如果 Together 也限额了,自动切到 Fireworks
内部实现是一个简单的重试+降级队列:
class Router:
def __init__(self, providers, strategy="fastest"):
self.providers = providers
self.strategy = strategy
def _call_with_fallback(self, prompt):
last_error = None
for provider_name in self.providers:
provider = self.get_provider(provider_name)
try:
# 健康检查
if not provider.is_available():
continue
response = provider.chat(prompt)
self.record_success(provider_name) # 记录成功,下次优先
return response
except RateLimitError as e:
# 触发降级
self.mark_unavailable(provider_name, duration=e.retry_after)
last_error = e
continue
raise AllProvidersExhaustedError(last_error)
2. RTK 令牌压缩
项目声称减少 40% Token 消耗。核心技术是请求压缩:
# 原始请求(发送给 AI)
user_request = """
帮我重构这个函数,要求:
1. 添加类型注解
2. 添加文档字符串
3. 使用更 Pythonic 的写法
4. 添加错误处理
函数内容:
def get_user_data(user_id):
data = db.query(f"SELECT * FROM users WHERE id = {user_id}")
return data[0] if data else None
"""
# 压缩后(实际发送给 AI)
compressed = """
Refactor with:
- Type hints
- Docstring
- Pythonic style
- Error handling
Code:
def get_user_data(user_id):
data = db.query(f"SELECT * FROM users WHERE id = {user_id}")
return data[0] if data else None
"""
通过移除冗余格式、合并指令、提取关键信息,Token 消耗减少 30-40%。同时保持 AI 的理解能力和输出质量。
3. 统一接口
不管底层用哪家 API,向上暴露统一的 Claude/Cline/Cursor 接口:
# 统一接口
class LLMInterface:
def chat(self, messages: list[Message]) -> Response:
"""统一聊天接口"""
pass
def tools(self) -> list[Tool]:
"""列出可用工具"""
pass
def use_tools(self, tool_calls: list[ToolCall]) -> list[ToolResult]:
"""执行工具调用"""
pass
# 目前已实现
class NineRouter(LLMInterface):
# 对齐 Claude Code 的 API 风格
pass
换提供商不需要改代码,只需要改配置。
接入 Claude Code
方式一:OpenAI 兼容模式(最通用)
9router 提供 OpenAI 兼容 API,可以直接替换 base URL:
# 安装
npm install -g 9router
npx 9router install
# 配置
export OPENAI_API_KEY="anything" # 9router 不需要真实 key
export OPENAI_BASE_URL="http://localhost:3000/v1"
from openai import OpenAI
client = OpenAI(
api_key="unused",
base_url="http://localhost:3000/v1"
)
# 后续代码完全不变,自动走 9router
response = client.chat.completions.create(
model="claude-3-5-sonnet",
messages=[{"role": "user", "content": "Hello"}]
)
方式二:Anthropic 兼容模式
export ANTHROPIC_API_KEY="anything"
export ANTHROPIC_BASE_URL="http://localhost:3000/v1"
# Claude Code 配置
export ANTHROPIC_API_KEY="sk-ant-$(9router gen-key)"
方式三:代理模式
# 在代理层拦截所有 AI 请求
9router proxy --port 3000 --providers groq,together,fireworks
# 系统代理
export HTTPS_PROXY=http://localhost:3000
# 所有 AI 请求自动走 9router
claude
竞品对比
| 对比项 | 9router | One API | PortKey | Helicone |
|---|---|---|---|---|
| 多Provider聚合 | ✅ 40+ | ✅ 10+ | ✅ 20+ | ❌ 单Provider |
| Auto-fallback | ✅ 自动 | ✅ 手动 | ✅ 自动 | ❌ |
| Token压缩 | ✅ 40%节省 | ❌ | ❌ | ❌ |
| OpenAI兼容 | ✅ | ✅ | ✅ | ✅ |
| 开源 | ✅ | ✅ | ❌ | 部分 |
| 接入难度 | 低 | 中 | 中 | 低 |
| 成本 | 免费 | 免费 | SaaS | 免费 |
适用场景
✅ 适合的场景
- 个人开发者不想花订阅费,但又想用顶级 AI 编程
- 重度 AI 编程用户,每天大量调用,单一平台额度不够用
- 需要高可用的 AI 服务,不能接受偶尔的限额报错
- 开发者想对比多个模型的实际效果
❌ 不适合的场景
- 对数据隐私要求高的企业(请求经过第三方路由)
- 需要严格 SLA 保证的生产系统(免费 Provider 不保证稳定性)
- 只需要轻度使用的用户(9router 的配置和维护有一定复杂度)
常见坑点
1. 免费 Provider 稳定性参差不齐 40+ 提供商中,质量差异很大。建议配置健康检查和自动降级:
router = Router(
providers=["groq", "together", "fireworks"],
health_check_interval=60, # 每60秒检查可用性
auto_remove_failed=True # 连续失败3次自动移除
)
2. Token 压缩可能影响输出质量 压缩指令虽然节省 Token,但复杂重构任务中 AI 可能遗漏某些细节。建议先在小任务上测试,确认压缩后输出质量可接受再全面使用。
3. 法律/合规风险 请求经过第三方服务器,如果处理敏感代码需要确认 9router 的服务条款是否允许。目前已知 Groq 和 Cloudflare 不会存储请求数据。
4. 不支持流式输出(部分 Provider) 部分免费 Provider 不支持 streaming,9router 会自动降级到非流式模式,可能影响实时交互体验。
项目地址:https://github.com/decolua/9router 今日新增:803 stars | 总星数:7,780 技术栈:JavaScript/Node.js 协议:MIT Star 趋势:快速增长,连续多日在 Trending 出现