LLM API и интеграция

Как перевести пилот в промышленную эксплуатацию

Как перевести пилот в промышленную эксплуатацию

Пилот отличается от промышленной эксплуатации не моделью, а обвязкой: обработкой ошибок и повторов, поведением при исчерпании лимита, отдельным ключом и отдельным бюджетом, журналом, мониторингом, дежурством и понятным откатом. Это 7 пунктов, и ни один из них на пилоте обычно не сделан. Переход занимает от двух недель и ломается не на модели, а на нагрузке, на грязных данных и на вопросах, которых в пилоте не задавали.

Пилот доказал, что задача решается. Промышленная эксплуатация отвечает на другой вопрос: что происходит, когда решение не срабатывает, а поток не останавливается. Ниже — семь пунктов обвязки, три вещи, которые ломаются именно на переходе, и порядок действий.

Чем промышленная эксплуатация отличается от пилота

Отличие целиком в обвязке. Модель, промпт и сценарий обычно переезжают без изменений.

ЧтоКак на пилотеКак в проде
Ошибка запросаувидели в консоли, повторили рукамиклассифицируется, повторяется по правилу или уходит человеку
Исчерпан лимитподождали и запустили сноваочередь, выдержка между повторами, оповещение
Ключодин на всё, часто общийотдельный ключ и отдельный бюджет
Расходсмотрят в конце месяцапорог и оповещение при превышении
Журналнет или в файле на ноутбукеполя фиксированы, хранится централизованно
Наблюдениеавтор проекта иногда заглядываетметрики и дежурный с правом остановить
Откатне предусмотренописан и один раз отрепетирован

Ни одна строка правой колонки не требует смены модели. Все семь делаются вокруг неё, и это главная причина, по которой переход недооценивают по срокам.

Что делать с ошибками и повторами

Разделить ошибки на три группы: те, что повторять можно, те, что повторять бессмысленно, и те, что повторять опасно.

Повторять можно временные отказы сервиса и отказы по частоте запросов. Бессмысленно — ошибки авторизации и неверный идентификатор модели: они повторятся точно так же. Опасно — всё, что уже привело к действию на вашей стороне, например к отправленному письму или списанию.

Повтор делается с нарастающей выдержкой и ограничением числа попыток. Два-три раза, затем обращение уходит человеку с пометкой. Коды отказов и то, какие из них стоят денег, разобраны в статье ошибки API нейросетей, а переключение на запасную позицию — в статье отказы маршрута и fallback.

Что делать, когда лимит исчерпан

Сначала признать, что отказ по лимиту — штатный режим, а не поломка. На десятке запросов в день его не видно; на потоке он приходит каждый день.

Рабочий ответ — очередь, а не повтор сразу же. Запросы складываются и разбираются с той скоростью, которую разрешает лимит, а пользователь видит ожидание вместо ошибки. Подробный разбор — в статье лимиты запросов и что делать.

Размер очереди и максимальное время ожидания задаются числом, а не «по ситуации». Обращение, пролежавшее в очереди дольше отведённого, должно уйти человеку — иначе очередь превращается в место, где запросы тихо стареют.

Заранее решите, что делает система, когда очередь перестаёт разбираться. Три допустимых варианта: перевод потока на людей, перевод на более дешёвую позицию с большим запасом по лимиту, честное сообщение о задержке. Недопустимый — молчание.

Почему ключ и бюджет должны быть отдельными

Отдельный ключ нужен по двум причинам: его можно отозвать, не останавливая остальное, и по нему виден расход именно боевого потока. Общий ключ на эксперименты, демо и прод делает невозможным и то, и другое.

Бюджет — это не намерение, а порог с оповещением. Без него первое, что сообщит о проблеме, — исчерпанный баланс в середине рабочего дня.

К проду относится и то, где ключ лежит. Требования к хранению и разделению ключей собраны в статье как хранить API-ключи; на пилоте их обычно нарушают все, и это нормально ровно до момента запуска.

Что писать в журнал, чтобы разбор был возможен

Журнал заводится до запуска, потому что задним числом он не появляется. Минимум: время, идентификатор модели, версия инструкции, идентификатор обращения, код ответа, число попыток, потраченные токены, исход.

Отдельно стоит писать имя ветки сценария и признак того, что ответ ушёл пользователю. Без этого поля разбор превращается в спор о том, видел ли клиент конкретный текст.

Состав полей целиком и то, что в журнал класть не нужно, разобраны в статье логирование запросов к моделям.

Что мониторить и кто дежурит

Мониторинг прода — это не график запросов, а четыре сигнала: доля ошибок, доля отказов по лимиту, расход за сутки относительно порога, время ответа по 95-му перцентилю.

У каждого сигнала должен быть порог и адресат. Оповещение, которое уходит в общий чат и никого не обязывает, перестаёт читаться на второй неделе.

Дежурство — это названный человек, известное время реакции и право остановить сценарий без согласования. Сколько людей нужно, чтобы это закрыть, и почему обычно хватает двух на неполной занятости, разобрано в статье сколько людей нужно для внедрения.

Как выглядит понятный откат

Откат — это заранее описанное действие, возвращающее процесс к состоянию до запуска. Формулируется одной строкой: выключить сценарий и перевести поток на людей, или переключить на запасную позицию.

Запасную позицию выбирают заранее и проверяют на той же выборке, что и основную. KeyDealer даёт один ключ на весь каталог из 56 позиций с оплатой в рублях, поэтому переключение — это смена идентификатора модели в конфигурации, а не новый договор, новый ключ и новая интеграция в момент, когда уже горит.

Две позиции каталога сейчас в режиме проверки — gemini-3-6-flash и fable-5. Позицию в проверке в качестве запасной брать не стоит: у неё другое основание для ожиданий.

Откат считается готовым только после того, как его один раз выполнили на учениях. Описанный, но ни разу не пройденный откат в нужный момент занимает не минуту, а час.

Что ломается именно на переходе

Три вещи, и ни одна из них не связана с качеством модели.

Нагрузка. Десяток запросов в день не показывает ни лимитов, ни поведения очереди, ни стоимости на объёме. Первый же будний день с реальным потоком показывает всё сразу.

Грязные данные. В пилоте примеры подбирает человек, который знает задачу. В проде приходят письма с вложениями вместо текста, обрывки, дубликаты и записи на двух языках в одном поле. Расход на таких входах растёт быстрее, чем число обращений, — что с этим делать, разобрано в статье как сократить расходы на API.

Отдельная статья расходов на грязных входах — повторные обращения. Пользователь, получивший ответ не по делу, спрашивает снова, и одна задача обходится в два-три запроса вместо одного.

Вопросы не по теме. Пользователи спрашивают то, чего в сценарии нет: про доставку у юридического бота, про скидку у технической поддержки. Граница «на это не отвечаем и передаём человеку» на пилоте не нужна, а в проде она определяет половину впечатления.

Почему пилот нельзя просто оставить работать

Потому что пилот устроен так, чтобы автор был рядом. Он ловит ошибки глазами, перезапускает руками и знает, какие входы подавать.

Первый отказ по лимиту в пятницу вечером останавливает поток, и никто не узнаёт об этом до понедельника. Разбирать нечего: журнала нет, и даже число потерянных обращений восстановить не из чего.

Вторая типичная концовка тише. Расход растёт постепенно, никто этого не замечает, потому что порога нет, и обнаруживается всё в конце месяца — счётом, который никто не планировал и не может объяснить построчно.

Дальше происходит предсказуемое: доверие к сценарию падает быстрее, чем чинится причина. Люди возвращаются к ручной работе, и второй запуск обходится дороже первого — теперь нужно не только починить обвязку, но и заново уговорить тех, кто уже обжёгся.

В каком порядке это делать

Сначала журнал, потом обработка ошибок и очередь, потом отдельный ключ с порогом расхода, потом мониторинг с дежурным, в конце — репетиция отката.

Порядок не случаен: журнал нужен, чтобы увидеть, какие ошибки реально приходят; без этого правила повторов пишутся наугад. Что проверить до первого боевого запроса, собрано в статье чек-лист перед внедрением модели.

Выборку из пилота сохраните — она становится приёмочным тестом для каждой последующей правки. Как её собрать и на что смотреть, описано в статье как тестировать нейросеть.

Чего мы не утверждаем

Мы не утверждаем, что семь пунктов закрывают требования вашей отрасли. В финансах, медицине и госсекторе к проду предъявляют требования по хранению, доступу и аудиту, которых в этом списке нет.

Мы не утверждаем, что две недели — универсальный срок. Это оценка для случая, когда пилот работает, данные собраны и решение о запуске принято; согласование доступов и закупка часто занимают больше, чем сама обвязка.

Мы не утверждаем, что после перехода метрики перестанут двигаться. Прод — это состояние, в котором изменения видны и управляемы, а не состояние, в котором ничего не меняется.

Что нужно, чтобы попробовать

Ключ заводится за минуту на keydealer.ru/login — почта и пароль, без документов и без зарубежной карты. Оплата российской картой в рублях, один ключ на весь каталог.

Для прода имеет смысл завести отдельный ключ и не смешивать боевой расход с экспериментами. Ставка каждой позиции приходит в ответе GET /v1/models до первого запроса, поэтому смету можно посчитать заранее: например, 8 ₽ за миллион токенов у недорогой позиции против 30 ₽ у флагманской.

Пять текстовых позиций после первого пополнения не тарифицируются. На них удобно отрепетировать откат и проверить поведение очереди, не тратя боевой бюджет.

Что держать в голове

Переход из пилота в прод — работа над обвязкой, а не над моделью. Семь пунктов: повторы, лимиты, ключ и бюджет, журнал, мониторинг, дежурство, откат.

Ломается переход на нагрузке, на грязных данных и на вопросах, которых в пилоте никто не задавал. Ни одну из трёх причин нельзя увидеть на десятке подобранных примеров.

Пилот, оставленный работать без обвязки, не продолжает приносить пользу — он тихо перестаёт её приносить. Как мы проверяем факты и почему у каждой цифры стоит дата — на странице о проекте. Завести отдельный ключ под боевой поток: keydealer.ru/login.

Частые вопросы

Чем промышленная эксплуатация отличается от пилота?

Не моделью и не промптом, а обвязкой вокруг них: обработкой ошибок и повторов, поведением при исчерпании лимита, отдельным ключом и бюджетом, журналом, мониторингом, дежурством и откатом. Сама модель на переходе обычно остаётся той же.

Можно ли просто оставить пилот работать дальше?

Можно, и так делают чаще всего. Заканчивается это одинаково: первый же отказ по лимиту или зависший запрос останавливает поток, никто об этом не узнаёт до жалобы, а разбирать нечего, потому что журнала нет.

Что ломается в первую очередь при росте нагрузки?

Отказы по частоте запросов. На десятке обращений в день лимит не виден вовсе, на потоке он становится штатным режимом, и обвязка без очереди и выдержки между повторами превращает один отказ в лавину повторов.

Зачем проду отдельный ключ, если пилотный работает?

Чтобы отозвать один, не останавливая другое, и чтобы видеть расход раздельно. Общий ключ на эксперименты и боевой поток делает невозможными и точный расчёт себестоимости, и быструю реакцию на утечку.

Сколько времени занимает перевод пилота в прод?

Обвязка из 7 пунктов — это обычно от двух недель работы, если пилот уже работает и данные не надо собирать заново. Дольше всего занимают не повторы и лимиты, а журнал и договорённость о дежурстве.

Что такое понятный откат?

Заранее описанное действие, которое возвращает процесс к состоянию до запуска: выключить сценарий, перевести поток на людей или на запасную позицию. Откат считается готовым, только когда его один раз выполнили на учениях, а не описали в документе.

Источники