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 пунктов — это обычно от двух недель работы, если пилот уже работает и данные не надо собирать заново. Дольше всего занимают не повторы и лимиты, а журнал и договорённость о дежурстве.
Что такое понятный откат?
Заранее описанное действие, которое возвращает процесс к состоянию до запуска: выключить сценарий, перевести поток на людей или на запасную позицию. Откат считается готовым, только когда его один раз выполнили на учениях, а не описали в документе.