Модель может знать, как выглядит действительный JSON, и при этом выдавать ответ, который ваш синтаксический анализатор отклоняет. Например, каждый из этих ответов содержит допустимый объект JSON. Вот результат: ```json {"ответ": "72"} ``` {"ответ": "72"...
Модель может знать, как выглядит действительный JSON, и при этом выдавать ответ, который ваш синтаксический анализатор отклоняет.
Например, каждый из этих ответов содержит допустимый объект JSON.
Вот результат:
```json
{"ответ": "72"}
```
{"ответ": "72"}
Расчет 48+24.
{"ответ": "72"}
{"ответ": "72"}
Человек может сразу определить ответ.
Программа, ожидающая ровно одно значение JSON, не может этого сделать.
Вот это различие, которое я хотел понять более конкретно:
Подсказка к изменению вероятных результатов. Ограниченное декодирование изменяет разрешенные выходные данные.
Я построил небольшую локальную лабораторию вокруг Qwen2.5-0.5B-Instruct, чтобы проверить это различие на уровнях токенизатора, генерации, проверки и логит-обработки.
Репозиторий содержит сценарии, необработанные генерации, наблюдения и журналы оценки JSONL:
github.com/Vaibhav701161/constrained-decoding-lab
Эксперимент
Я сравнил условия двух поколений в трех простых математических задачах начальной школы.
В подсказке в произвольной форме модели предлагалось продемонстрировать краткое обоснование и закончить числовым ответом.
Структурированное приглашение попросило вернуть ровно один объект JSON:
{
"reasoning": "ваши рассуждения здесь",
"ответ": "конечная цифра