AI в продукте — это не «прикрутить чат» в углу. Это переговоры с моделью на каждом запросе: что мы готовы ей отдать, что мы готовы от неё принять и что мы скажем пользователю, если она ответила странно.

Два контракта AI-фичи: контракт с моделью (жёсткий вход, контролируемый выход, таймаут и fallback) и контракт с пользователем (видно что сгенерировано, видно неуверенность, видна причина ошибки)

Контракт с моделью

  • Жёсткий формат на входе — минимум свободного текста, максимум структурированных полей.
  • Контролируемый формат на выходе — function-calling или json-schema, и валидатор поверх.
  • Таймауты и fallback: если модель не ответила за N секунд — рисуем плейсхолдер, не белый экран.

Контракт с пользователем

Главное правило — не врать. Если ответ сгенерирован — это видно. Если ответ не уверенный — это видно. Если что-то пошло не так — пользователь видит причину, а не «попробуйте позже».

Модель — это зависимость с нестабильным SLA. Относись к ней как к внешнему сервису, который иногда врёт, и проектируй интерфейс вокруг этого факта.