Урок по треку ИИ в работе разработчика 6 мин

ИИ-фичи в продукте

Вызов LLM API с бэкенда, стриминг, structured output, стоимость и кеширование, таймауты и фолбэки. Подробно в треке LLM.

Рано или поздно продукт просит «добавить ИИ»: суммаризацию обращений, черновик ответа клиенту, разбор документа в поля формы. Для разработчика это обычная интеграция с внешним API, только ответ недетерминирован, платный и медленный. Здесь коротко практические правила. Как устроены модели, RAG и оценка качества, подробно в трек LLM.

Где живёт ключ

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

Бэкенд нужен не только ради ключа. Там проверяются права пользователя, лимиты, собирается промпт, пишутся метрики.

Вызов и надёжность

Внешний API может отвечать долго, вернуть 429 или 5xx, оборвать соединение. Минимальный набор:

  • Таймаут на запрос, иначе воркеры повиснут.
  • Повторы с экспоненциальной задержкой на 429 и 5xx, ограниченное число раз. Ошибки 400 повторять бессмысленно.
  • Фолбэк: другая модель, другой провайдер или честное сообщение «функция временно недоступна», а не падение страницы.
  • Лимит max_tokens на ответ: без него один запрос может стоить как сотня.

Выбор провайдера зависит от требований. Для данных российских пользователей часто берут отечественные модели (например, YandexGPT или GigaChat) или модель в своём контуре, остальные варианты оценивают по качеству, цене и условиям обработки данных.

Стриминг

Генерация длинного ответа занимает секунды. Чтобы пользователь не смотрел на спиннер, ответ отдают по частям: провайдер присылает токены потоком, бэкенд пересылает их клиенту, обычно через SSE (Server-Sent Events).

Что не забыть:

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

Structured output

Если ответ идёт в код, а не человеку, просите JSON по схеме. Многие API умеют ограничивать вывод JSON-схемой. Но даже тогда ответ надо валидировать на своей стороне (Zod, Pydantic, JSON Schema): модель может вернуть пустое поле, лишнее значение или правдоподобную выдумку. Невалидный ответ: повтор с сообщением об ошибке или фолбэк. JSON.parse без проверки схемы это ошибка, которая выстрелит в проде.

Стоимость

Платите за токены: входные (системный промпт, история, документы) и выходные (ответ). Выходные обычно дороже. Отсюда правила:

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

Кеширование

Два разных кеша:

  • Кеш промпта у провайдера. Если запросы начинаются с одинакового длинного префикса (системный промпт, инструкции, документ), часть провайдеров переиспользует его обработку дешевле и быстрее. Стабильную часть ставят в начало, изменчивую в конец.
  • Свой кеш ответов. Для одинаковых запросов, например суммаризации одного и того же документа. Ключ кеша должен учитывать всё, что влияет на ответ: модель, версию промпта, входные данные и, если ответ зависит от прав, пользователя или его доступ. Иначе один пользователь увидит ответ, собранный по данным другого.

Логи и данные

Логировать нужно: модель, токены, задержку, стоимость, ошибки, версию промпта. Полные тексты промптов и ответов часто содержат персональные данные. Их либо не пишут, либо маскируют, либо хранят отдельно с ограниченным доступом и сроком хранения. Для 152-ФЗ важно и то, куда уходят данные: передача персональных данных стороннему провайдеру требует правового основания.

Человек в контуре

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

Короткий чек-лист

  1. Ключ на сервере, права и лимиты на пользователя.
  2. Таймаут, повторы с backoff, фолбэк, max_tokens.
  3. Стриминг с обработкой обрыва и отмены.
  4. Схема ответа и валидация.
  5. Учёт токенов и стоимости, кеш с правильным ключом.
  6. Логи без персональных данных.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.