fallback.

Как мы перестали хардкодить модели: effort-маршрутизация, авто-выбор сложности, фолбэки и лимиты расходов

Самая дорогая строчка в микросервисе с LLM — model="gpt-4o".

продолжить чтение

Языковая модель в поиске магазина: как подключить её так, чтобы её падение никто не заметил

В прошлой статье я рассказывал, как устроено ядро нашего поиска: триграммы, crc32, словарь болей и два сита. В конце был короткий раздел «А где же нейросеть?», и он заслуживает отдельного разговора. Сегодня про то, как модель встроена сверху и почему мы с самого начала исходили из того, что она когда-нибудь подведёт.

продолжить чтение

Почему fallback между LLM может сломать семантику ответа

Когда проектируешь обычный backend, fallback обычно воспринимается как довольно понятный механизм.Есть основной upstream. Если он недоступен, переключаемся на резервный. Если один pod умер, запрос обслужит другой. Если один PostgreSQL read replica недоступен, читаем с другой. Если основной endpoint партнёра отвечает ошибкой, можно попробовать резервный.В большинстве таких случаев мы предполагаем, что резервный исполнитель реализует тот же контракт.С LLM это предположение начинает ломаться.Две модели могут принимать один и тот же JSON, возвращать JSON по одной и той же схеме и при этом фактически выполнять задачу по-разному.

продолжить чтение

Зачем GenAI-ассистенту platform logic: как управлять источниками, evidence и ответами

GenAI-ассистент может довольно быстро начать отвечать "по теме": находить релевантные фрагменты, собирать уверенный текст и создавать ощущение, что система уже работает.Если подключить LLM к корпоративным документам через RAG, подобрать параметры поиска, немного почистить контекст и добавить хороший prompt, первые результаты часто выглядят обнадеживающе. Пользователи начинают пробовать систему, появляются первые метрики использования, а сама идея быстро кажется готовой к расширению.Но для продуктового контура этого недостаточно.

продолжить чтение

Пять LLM-провайдеров через один openai-клиент

У нас почти каждая заметная операция в продукте идёт через LLM: генерация follow-up, сборка КП, скоринг, саммари звонков. Пока провайдер один — это бомба замедленного действия. Он ложится по 503, упирается в рейт-лимит, или цена улетает, потому что дешёвый разбор команды почему-то крутится через флагманскую модель.Поэтому мы сделали тонкий роутер. Не фреймворк, не «оркестратор агентов» — примерно 500 строк на NestJS, которые переезжают между нашими продуктами без правок. Расскажу, что внутри и на чём набили шишки.Один клиент вместо зоопарка SDK

продолжить чтение

Как я довёл расходы на LLM до нуля: почему на бесплатных тарифах параллелизм — враг

Это продолжение первой статьи про Briefka — там я описывал самого бота и базовую архитектуру каскада LLM-провайдеров. За прошедшие 4 месяца бот органически вырос с 59 до 84 пользователей, и именно на этом масштабе бесплатный каскад начал срываться на платного провайдера. Расскажу, почему так вышло и как я вернул расходы к нулю — с цифрами и кодом.Код ниже — реальные фрагменты из боевого Briefka, слегка сокращённые для читаемости: убраны логирование и сбор статистики.Что за каскад (коротко)Вместо одного платного провайдера — лесенка из пяти, с автоматическим фолбэком при rate limit:

продолжить чтение

Что такое маршрутизатор LLM?

Большие языковые модели (LLM) стали основой современных ИИ-продуктов, обеспечивая работу всего – от чат-ботов и виртуальных ассистентов до исследовательских инструментов и корпоративных решений. Но LLM различаются по сильным сторонам, ограничениям и стоимости: одни лучше в рассуждениях, другие - в креативе, коде или работе со структурированными запросами. Здесь и нужен маршрутизатор LLM.

продолжить чтение