9router:连接 Claude Code 到 40+ 免费 AI 提供商,再也不怕 Token 限额

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 数)限额。

重度用户一天之内就可能撞上限额。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 免费

适用场景

适合的场景

不适合的场景


常见坑点

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 出现

/*]]>*/