Интеграция AI API не готова, когда первый запрос вернул 200. Она готова, когда контракты, права, сбои, повторы и сохранённые результаты ведут себя предсказуемо.

Рассматривайте модель как один компонент контролируемой бизнес-транзакции.

Сначала контракт, потом промпт

Зафиксируйте endpoint, метод, авторизацию, схемы запроса и ответа, коды, timeout, rate limits и версионирование. Определите обязательные поля и владельца каждого ID.

Промпт не является API-контрактом. Проверяйте выход модели по строгой схеме до записи.

Разделите identity, authentication и authorisation

Используйте отдельную service identity и минимальные scopes. Разведите чтение и запись; не выдавайте удаление процессу чтения и обновления.

OWASP относит broken object-level authorisation и broken authentication к главным API-рискам. Сверяйтесь со статьёй о защите данных.

Храните секреты вне контента

Токены должны быть в secret manager или защищённой конфигурации, не в промптах, логах, Trello и коде. Ограничьте выдачу, ротацию и вывод ошибок.

Не передавайте конфиденциальные данные до проверки цели, условий поставщика, региона, retention и прав.

Сделайте записи безопасными и повторяемыми

Используйте idempotency key или transaction ID, если retry может создать дубль. После записи перечитайте ресурс.

Уточните, частичное ли обновление или полная замена. Read-before-write нужен при полном PUT.

  • проверять владельца объекта
  • отклонять лишние поля
  • разделять временные и постоянные ошибки
  • ограничивать retry и применять backoff
  • хранить before/after важных записей

Валидируйте каждую границу

Проверяйте файлы и URL, выход модели, tool arguments, API response и сохранённую запись. Разрешайте только нужные адреса, чтобы снизить риск SSRF.

Для важных действий применяйте human approval.

Спроектируйте timeout, fallback и reconciliation

Разделите timeout подключения и операции. После timeout удалённая запись могла состояться.

До повторной записи запросите состояние по transaction ID. Периодически сверяйте ожидаемое и фактическое состояние.

Тестируйте систему целиком

Используйте сценарии из предзапусковой проверки: неверная схема, отсутствующее поле, истёкший токен, rate limit, timeout, дубли, частичный ответ и чужой объект.

Приёмка — это правильное состояние бизнеса, а не успешный HTTP-запрос.

Реальная ловушка полного обновления

В одном API PATCH отсутствует, а PUT требует полный объект статьи. Обновление только status могло стереть остальные поля.

Я выполняю GET, сохраняю обязательные поля, меняю одно значение, отправляю полный PUT, снова делаю GET и сравниваю все 21 поле. DELETE исключён полностью, хотя права токена его допускают.

Безопасность здесь дала явная семантика метода и проверка результата, а не код успеха.

Вопросы и ответы

Должен ли AI обращаться к API напрямую?

Лучше через контролируемый tool-layer с валидацией и политиками. Не выдавайте модели общий HTTP-клиент.

Когда повторять запрос?

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

Что такое idempotency?

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

Достаточно ли 200?

Нет. Проверьте сохранённое состояние и итог бизнеса.

Что логировать?

ID запроса, версию контракта, решение политики, вызов, результат, ошибку, retry и before/after без секретов.

Операционный лист контроля

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

Свяжите контроль с последствием для бизнеса. Если ошибка схемы может повредить карточку клиента, опишите containment и reconciliation. Если всплеск стоимости объясняется сезонным объёмом, задайте контекст, защищающий от ложной эскалации.

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

Отрепетируйте человеческий путь. Назначенный владелец должен найти доказательства, остановить или ограничить workflow, включить fallback и объяснить состояние без просьбы к самому AI диагностировать себя.

Источники