Пять LLM-провайдеров через один openai-клиент
Reller 1 минуту назад Пять LLM-провайдеров через один openai-клиент Средний 4 мин 0 Машинное обучение * Искусственный интеллект Туториал У нас почти каждая заметная операция в продукте идёт через LLM: генерация...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Reller 1 минуту назад Пять LLM-провайдеров через один openai-клиент Средний 4 мин 0 Машинное обучение * Искусственный интеллект Туториал У нас почти каждая заметная операция в продукте идёт через LLM: генерация follow-up, сборка КП, скоринг, саммари звонков. Пока провайдер один — это бомба замедленного действия. Он ложится по 503, упирается в рейт-лимит, или цена улетает, потому что дешёвый разбор команды почему-то крутится через флагманскую модель.
Поэтому мы сделали тонкий роутер. Не фреймворк, не «оркестратор агентов» — примерно 500 строк на NestJS, которые переезжают между нашими продуктами без правок. Расскажу, что внутри и на чём набили шишки.
Технические детали
Один клиент вместо зоопарка SDKПочти все провайдеры отдают OpenAI-совместимый API. Значит, тащить пять разных SDK незачем — берём официальный openai и подменяем baseURL:const groq = new OpenAI({ apiKey: GROQ_KEY, baseURL: ' }); const mistral = new OpenAI({ apiKey: MISTRAL_KEY, baseURL: ' }); const deepseek= new OpenAI({ apiKey: DEEPSEEK_KEY, baseURL: ' }); const xai = new OpenAI({ apiKey: XAI_KEY, baseURL: ' }); const openai = new OpenAI({ apiKey: OPENAI_KEY, baseURL: ' }); Дальше один и тот же client. Клиент создаётся только при наличии ключа, иначе null.
Побочный бонус: нет ключа — провайдер просто выпадает из работы, ничего не падает. Конфиг с тремя провайдерами и конфиг со всеми пятью гоняют один и тот же код. Вызывающему коду незачем знать про моделиЕму важен класс задачи: написать качественно, распарсить дёшево, отдать строгий JSON, расшифровать аудио.
Под каждый класс — своя стратегия, а за стратегией прячется упорядоченная цепочка «провайдер + модель»:this. strategyChains = { // лучший русский (КП, follow-up): reasoning-модель впереди QUALITY: , // скоринг, сравнения, саммари: мультиязычность + структура BALANCED: , // парсинг интента, извлечение JSON: что подешевле FAST: , // аудио → текст: Whisper turbo, потом base, потом OpenAI whisper-1 TRANSCRIBE: , }. filter(Boolean)); // неконфигурированные выкидываем В большинстве цепочек первым стоит Groq.
Отраслевые последствия
Клиент один, но моделей под ним четыре — каждая под свою роль:РольМодельЗа что отвечаетqualityopenai/gpt-oss-120breasoning, сильный текст, ~500 tok/slargellama-3. 3-70b-versatileмультиязычность, 131k контекстаstructuredqwen/qwen3-32bJSON-mode и structured outputfastllama-3. 08 за миллион, 560 tok/sMistral идёт кросс-провайдерным fallback’ом, дальше — OpenAI/DeepSeek/xAI, если их ключи заданы.
Сам fallback — это цикл, без магииИдём по цепочке. На первом провайдере один раз ретраим с паузой. Успех — логируем стоимость и возвращаем.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.




