Разработка5 мин чтения•2026-03-08

Как обойти лимиты бесплатных LLM: мульти-провайдерная ротация ключей

Архитектурные паттерны для разработчиков: как настроить автоматический Fallback и ротацию бесплатных ключей, чтобы сервис работал 24/7 без сбоев.

Команда FreeLLMBackend Architect
Главная сложность при использовании бесплатных API-тарифов (Free Tier) — это ограничения по количеству запросов в минуту (RPM) или токенов в минуту (TPM). Например, у Groq лимит составляет 30 RPM, а у Google AI Studio — 15 RPM. В продакшене или при активной локальной разработке эти лимиты можно легко исчерпать за 2 минуты. --- ### Решение: Архитектура Smart Fallback Вместо привязки к единственному провайдеру создается каскад из 3-4 независимых бесплатных провайдеров. ``` Запрос от пользователя │ ▼ [ Groq (Qwen 2.5 Coder) ] ── (429 Too Many Requests) ──┐ │ │ (200 OK) ▼ │ [ Cerebras (Llama 3.3) ] Ответ │ (429) ───────┴────────┐ │ ▼ [ OpenRouter (:free) ] ``` --- ### Готовая реализация на TypeScript ```typescript interface ProviderConfig { name: string; url: string; apiKey: string; model: string; } const PROVIDERS_POOL: ProviderConfig[] = [ { name: 'Groq', url: 'https://api.groq.com/openai/v1/chat/completions', apiKey: process.env.GROQ_API_KEY!, model: 'qwen-2.5-coder-32b' }, { name: 'Cerebras', url: 'https://api.cerebras.ai/v1/chat/completions', apiKey: process.env.CEREBRAS_API_KEY!, model: 'llama3.3-70b' }, { name: 'OpenRouter', url: 'https://openrouter.ai/api/v1/chat/completions', apiKey: process.env.OPENROUTER_API_KEY!, model: 'meta-llama/llama-3.3-70b-instruct:free' } ]; export async function askAiWithFallback(prompt: string) { for (const provider of PROVIDERS_POOL) { try { const res = await fetch(provider.url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${provider.apiKey}` }, body: JSON.stringify({ model: provider.model, messages: [{ role: 'user', content: prompt }] }) }); if (res.status === 429) { console.warn(`⚠️ ${provider.name} вернул 429. Переключаемся на резерв...`); continue; } if (res.ok) { const data = await res.json(); return data.choices[0].message.content; } } catch (e) { console.error(`Ошибка сети на ${provider.name}:`, e); } } throw new Error('Все провайдеры исчерпали квоту.'); } ``` Благодаря этому подходу суммарный лимит вырастает до 100+ запросов в минуту, а надежность сервиса приближается к 99.9%.
Теги:#Rate Limits#OpenRouter#Fallback#Архитектура

Готовы протестировать эти модели?

Сгенерируйте конфигурационный файл для вашего инструмента за 1 клик или отправьте тестовый запрос в онлайн-песочнице.