
Фреймворк для оценки, который проверяет, следуют ли большие языковые модели невидимым инструкциям, закодированным в Unicode и встроенным в обычный на вид текст, со статистическим анализом по нескольким моделям и условиям инструментов.
Фреймворк для оценки, проверяющий, следуют ли большие языковые модели невидимым инструкциям, закодированным в Unicode и внедрённым в иначе обычный текст. В то время как традиционные CAPTCHA эксплуатируют задачи, которые человек решает, а машина — нет, Reverse CAPTCHA использует канал восприятия, доступный машинам, но недоступный человеку.
Статья: paper/reverse_captcha.pdf
По 8 308 оценённым выходам от 5 моделей (GPT-5.2, GPT-4o-mini, Claude Opus 4, Claude Sonnet 4, Claude Haiku 4.5):
Доступ к выполнению кода превращает невидимый Unicode из игнорируемого артефакта в декодируемый канал инструкций. Без инструментов соблюдение инструкций остаётся ниже 17%. С инструментами и подсказками достигает 98–100%.

Модели OpenAI декодируют zero-width binary, но не Unicode Tags. Модели Anthropic предпочитают Unicode Tags. Атакующий должен подбирать кодировку под целевого провайдера.

Градиент подсказок одинаков для всех моделей: без подсказок << подсказки с кодовыми точками < полные подсказки. Сочетание доступа к инструментам и инструкций по декодированию является критическим фактором.

В вопросы на эрудицию встроены две невидимые схемы кодирования:
Модель получает вопрос с известным видимым ответом. В невидимых символах скрыт другой ответ. Если модель выводит скрытый ответ, она последовала невидимой инструкции.
# Install
pip install -e ".[dev]"
# Run reverse CAPTCHA eval
evalrun run --pack reverse_captcha --model openai:gpt-4o-mini --tools --n 3 --out results.sqlite
# Run without tools
evalrun run --pack reverse_captcha --model openai:gpt-4o-mini --n 3 --out results.sqlite
# Run with Anthropic models
evalrun run --pack reverse_captcha --model anthropic:claude-sonnet-4-20250514 --tools --n 3 --out results.sqlite
# Generate analysis
python3 scripts/analyze_journal.py
# Generate figures
python3 scripts/generate_figures.py
├── packs/reverse_captcha/ # Пакет оценки (кейсы, оценщик, генератор)
│ ├── cases.yaml # 270 тестовых кейсов
│ ├── qa_pairs.yaml # 30 пар вопрос/ответ
│ ├── grader.py # Детерминированная оценка (5 категорий)
│ └── generate_cases.py # Генератор кейсов для обеих кодировок
├── src/evalrun/ # Базовый фреймворк
│ ├── adapters/ # Адаптеры API OpenAI + Anthropic
│ ├── cli.py # CLI (запуск, отчёт, экспорт)
│ ├── runner.py # Исполнитель оценки с поддержкой инструментов
│ └── db.py # Сохранение в SQLite
├── paper/ # Статья для семинара
│ ├── reverse_captcha.tex # Исходный код LaTeX
│ └── reverse_captcha.pdf # Скомпилированный PDF
├── results/journal/ # Сырые данные
│ ├── analysis/ # CSV со статистическим анализом
│ └── figures/ # Рисунки для публикации (PDF + PNG)
├── scripts/ # Скрипты анализа и генерации рисунков
└── tests/ # Набор тестов
Фреймворк также включает два дополнительных пакета:
OPENAI_API_KEY для моделей OpenAIANTHROPIC_API_KEY для моделей Anthropicclick, openai, anthropic, pyyaml, matplotlib, pandas, scipy, numpyMIT