Claude Fable 5.1 вдруг отказался выполнить безобидный запрос про код - три причины ложных срабатываний защиты
Модель отказалась выполнить обычный запрос про код без всякой видимой причины? Скорее всего, дело в одной из трёх известных ловушек классификатора безопасности.
По официальной документации Anthropic, классификаторы безопасности Claude Fable 5.1 дают меньше ложных срабатываний, чем у Claude Fable 5 на момент её выпуска, и поиск уязвимостей в исходном коде прямо разрешён. Тем не менее ложные срабатывания всё ещё случаются, и заблокированный запрос возвращает stop_reason: refusal. Документация называет три ситуации, которые делают ложное срабатывание более вероятным. Первая - формулировка вопроса в духе проверки компиляции: вместо «Компилируется ли эта программа без ошибок?» стоит спрашивать «Есть ли в этой программе баги?». Вторая - менее известные языки программирования: стоит дать модели контекст о том, что это за язык и как он работает, например через доступ к документации самого языка. Третья - base64 в выводе инструментов: инструменты, которые возвращают в контекст модели данные, закодированные в base64, могут вызывать ложные срабатывания, поэтому рекомендуемое решение - убрать такое кодирование из вывода инструментов там, где это возможно.
Что изменилось с безопасными отказами в Fable 5.1
Классификаторы безопасности Claude Fable 5.1 дают меньше ложных срабатываний, чем давала Claude Fable 5 на момент своего запуска, и поиск уязвимостей в исходном коде прямо разрешён официальной политикой - это была частая причина ложных отказов у предыдущих моделей. Тем не менее ложные срабатывания всё ещё случаются, и заблокированный запрос возвращает stop_reason: refusal вместо обычного ответа.
Причина 1: формулировка в духе проверки компиляции
Вопрос, сформулированный как проверка компиляции - «Компилируется ли эта программа без ошибок?» - чаще вызывает ложное срабатывание, чем эквивалентный по смыслу вопрос «Есть ли в этой программе баги?». Простая переформулировка вопроса снижает вероятность отказа без потери смысла запроса.
Причина 2: менее известные языки программирования
Запросы на менее распространённых языках программирования чаще вызывают ложные срабатывания. Решение - дать модели дополнительный контекст о том, что это за язык и как он устроен, например предоставив доступ к официальной документации этого языка вместе с запросом, чтобы модель могла уверенно опираться на реальные факты о языке, а не строить догадки.
Причина 3: base64 в выводе инструментов
Инструменты, которые возвращают в контекст модели данные, закодированные в base64, могут провоцировать ложные срабатывания классификатора безопасности. Рекомендуемое решение - убрать такое кодирование из вывода инструментов там, где это возможно, и передавать модели данные в более прозрачном для неё формате.
Частые вопросы
Что означает stop_reason: refusal у Claude Fable 5.1?
Что запрос был заблокирован классификатором безопасности вместо получения обычного ответа.
Разрешён ли поиск уязвимостей в коде для Claude Fable 5.1?
Да, это прямо разрешено официальной политикой.
Как переформулировать вопрос о компиляции, чтобы избежать ложного отказа?
Вместо «Компилируется ли эта программа без ошибок?» спросить «Есть ли в этой программе баги?».
Что делать при работе с менее известным языком программирования?
Дать модели дополнительный контекст о языке, например доступ к его официальной документации.
Почему base64 в выводе инструментов может вызывать ложные отказы?
Такие закодированные данные провоцируют классификатор безопасности - рекомендуется убрать это кодирование из вывода инструментов.
Стали ли ложные срабатывания реже у Claude Fable 5.1 по сравнению с Fable 5?
Да, классификаторы безопасности Fable 5.1 дают меньше ложных срабатываний, чем Fable 5 на момент её запуска.