Сценарии восстановления при ошибке вызова инструмента
Плейбук для промта с вызовами API и тулов: ветвление по типам сбоев (таймаут, пустой ответ, 4xx/5xx, несовпадение схемы, лимиты), тексты для пользователя, ретраи и эскалация без раскрытия внутренних URL.
Описание
Плейбук для промта с вызовами API и тулов: ветвление по типам сбоев (таймаут, пустой ответ, 4xx/5xx, несовпадение схемы, лимиты), тексты для пользователя, ретраи и эскалация без раскрытия внутренних URL.
Кейс применения
Интеграция с внешним API в чат-ассистенте часто падает: нужно описать устойчивое поведение модели при ошибках вызова инструмента и согласованные сообщения пользователю.
Совместимость с моделями
- ChatGPT
- Claude
- Gemini
Пример формулировки
Спроектируй плейбук восстановления для промта {{PROMPT_TEXT}} при сценарии {{TASK}} с ограничениями {{CONSTRAINTS}} и целевом UX {{GOAL}}.Текст промта целиком
## Роль
Ты инженер надёжности LLM-приложений с инструментами. Ты проектируешь **поведение при сбоях вызова** так, чтобы пользователь не видел внутренней кухни и не получал ложных успехов.
## Задача
По {{PROMPT_TEXT}} и сценарию {{TASK}} подготовь **плейбук восстановления**: для каждого типа сбоя (таймаут, сеть, HTTP 4xx, HTTP 5xx, пустой/частичный ответ, несовпадение JSON-схемы, rate limit) опиши **решение модели** (ретрай да/нет с условиями), **текст пользователю** на русском, **что логировать** (категория события без секретов), **когда эскалировать** человеку; затем дай **готовый блок правил** для вставки в системный промт ассистента; опирайся на {{CONSTRAINTS}} и {{GOAL}}.
## Контекст
- Промт: {{PROMPT_TEXT}}
- Сценарий сбоев: {{TASK}}
- Ограничения: {{CONSTRAINTS}}
- Целевой UX: {{GOAL}}
Если типы инструментов не указаны, работай на уровне **абстрактного HTTP/JSON** и пометь допущения.
## Ограничения
- Не вставляй реальные URL, ключи и токены из входа.
- Не предлагай бесконечные ретраи и «магическое повторение» без джиттера и лимита.
- Сообщения пользователю — короткие, без технического жаргона, если {{GOAL}} про массового пользователя.
## Формат ответа
1. **Карта сбоев** — таблица: тип → симптомы → действие модели → сообщение пользователю.
2. **Политика ретраев** — одна схема с условиями (идемпотентность, GET vs POST).
3. **Эскалация** — когда остановить автоматику и передать в поддержку.
4. **Блок для системного промта** — нумерованный список правил (14–20 пунктов).
5. **Примеры диалогов** — 3 коротких примера «пользователь → ответ» при разных сбоях (с вымышленными данными).
6. **Чеклист нагрузочного теста** (6 пунктов).
## Чего избегать
- Одной ветки «ошибка — извините» для всех типов сбоев
- Раскрытия внутренних кодов ошибок и путей деплоя
- Ложного подтверждения успеха при пустом теле ответаПримеры использования
Реалистичные сценарии входных данных и ожидаемого результата.
Пример 1
Входные данные
- GOAL
- пользователь понимает, что SKU не найден vs временная ошибка
- TASK
- частые сбои: таймаут 5 с, 404 если SKU опечатан, 429 в пик, иногда пустой stock
- CONSTRAINTS
- один ретрай только при таймауте; не показывать endpoint
- PROMPT_TEXT
- Ассистент магазина: инструмент getProductBySku возвращает JSON с полями name, price, stock.
Ожидаемый результат
Примечание
Для 404 и пустого stock сообщения должны различаться по смыслу.
Критерии оценки
По этим критериям можно проверять качество результата перед рабочим использованием.
Плейбук покрывает реальные сбои
Критерии
- Отдельно описаны таймаут, 4xx, 5xx, пустой ответ и rate limit где уместно
- Политика ретраев согласована с {{CONSTRAINTS}}
- Сообщения пользователю различают типичные ситуации и соответствуют {{GOAL}}
- Нет утечки внутренних URL и секретов
- Есть чеклист нагрузочного теста
Похожие промты
По категории, тегам и близкому сценарию применения.