TGViewer
Fedkin is thinking Fedkin is thinking @fedkin_thinking · 9.01K subscribers
Post #252 8.07K
Несколько избитая тема, но мне кажется очень красивой идея, которая стоит за structured output в современных ллмках

Задача — пользователь передает json-схему, нужно сгенерировать ответ строго по переданной схеме

1. Наивный вариант

Подложить схему в контекст:


...

Return a JSON object that strictly matches the following schema:
{
"type": "object",
"properties": {
"status": {
"enum": ["SUCCESS", "FAILED"]
}
},
"required": ["status"],
"additionalProperties": false
}


Будет ли работать? Да, в большинстве случаев. Но без каких либо гарантий, что схема в итоге будет корректная

2. Добавляется constrained decoding

LLM генерирует ответ токен за токеном, на каждом шаге строя распределение вероятностей:

"{" = 0.75 
"status" = 0.20
":" = 0.04
"answer" = 0.01


А дальше в процесс вмешивается constrained decoding

Из json-схемы строится контекстно-свободная грамматика (CFG), которая позволяет понять, какие продолжения ответа в текущий момент всё еще могут привести к валидному результату

Например, для схемы выше грамматика могла бы выглядеть как-то так:


root ::= "{" ws "\"status\"" ws ":" ws status ws "}"

status ::= "\"SUCCESS\"" | "\"FAILED\""


И, согласно грамматике, инференс-движок накладывает маску на распределение вероятностей следующего токена


"{" = 0.75
"status" = 0.20
":" = 0.04
"answer" = 0.01


Превращается в


"{" = 0.75
"status" = 0
":" = 0
"answer" = 0


Сгенерили {




"status" = 0.6
":" = 0.3
"answer" = 0.1


Превращается в


"status" = 0.6
":" = 0
"answer" = 0


Сгенерили {"status"

... и так далее



С относительно небольшим оверхедом это позволяет генерить ответ, строго соответствующий схеме
Wikipedia Context-free grammar formal grammar whose production rules can be applied to a nonterminal symbol regardless of its context
  • 👍 39
  • 🤔 8
  • 🔥 4
  • ❤ 1
  • 💅 1
More from @fedkin_thinking
  1. Sep 20, 2026С большинством людей все в порядке Представь, у тебя команда регулярно срывает сроки ревью…
  2. Sep 19, 2026Чему техлиду научиться у Tinder На днях стало интересно, как запускаются сервисы с "сетевы…
  3. Sep 13, 2026Почему рабочие встречи превращаются в балаган — Раскатываем эксп на 100%? — Я бы не раскат…
  4. Sep 12, 2026Перед автоматизацией выясни, существует ли процесс Нулевой шаг автоматизации абсолютно чег…
  5. Aug 31, 2026Полезно понимать, какие проблемы решает твой руководитель Повышение обычно происходит, ког…
  6. Aug 29, 2026Все заняты, а продукт не двигается — Миш, вижу у тебя десять задач по бэку, какой статус?…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →