TGViewer
AI и грабли AI и грабли @oestick · 13.7K subscribers
Post #285 1.54K
Что такое structured output, почему это база и как это использовать (ч.1, ч2, ч3)

#технический_четверг

Чтобы не душнить теорией, давайте выведем из практического кейса

Кейс: Делаем чат бота для госухи. Хотим, чтобы он не отвечал на вопросы про политику

Как это сделать?

Можно добавить к системному промпту строчку "никогда не отвечай на вопросы про политику"

Но это:
1. Добавляет когнитивную сложность для LLM => ухудшает качество основной задачи
2. Спокойно обходится разными хитрыми запросами

Тогда вынесем проверку в отдельный запрос в самом начале!
если пользователь задает вопрос про политику, ответь 1, иначе ответь 0


И сделаем проверку в коде, типа:

if verdict == "1": reset_chat(with_message="айайай")

Поможет? Да – у LLM теперь одна конкретная задача. Но нет никакой гарантии, что если мы сказали отвечать 0 или 1 то модель так и будет делать 🤷‍♂️ (см. соревнование по "взлому" моделей)

А можно как-то жестко ограничить возможные ответы модели?

Тут пригодится тайное знание о том, как LLM работают под капотом. На самом деле, LLMка не генерирует токены (если не знаете, что это, для простоты считайте символами – буквами, цифрами, знаками препинания – все рассуждения останутся валидными).

Она генерирует чиселки (веса) для всех возможных токенов, которые вообще есть в её словаре. Потом рандомно выбирается один из токенов, используя веса как вероятности. Чем больше вес, тем больше вероятность, что возьмет именно этот токен.

Если пользователь правильно попросит, то у каких-то других токенов вес может быть больше, чем у токенов "1" или "0".

Как использовать это знание?

Смотреть не на то, что модель генерирует, а только на веса конкретных токенов ("1" и "0"). И если вес токена "1" оказывается достаточно большим в сравнении с "0", значит модель считает, что вопрос скорее про политику, чем нет. Даже если веса каких-то других токенов выше.

По сути, мы "виртуально" ограничили то, что получаем от модели. Хотим узнать 0 или 1 - так что смотрим на веса только этих токенов. (параметр top_logprobs у OpenAI API)

Это ключевая идея structured_output.

Во второй части мы раскачаем ее до любого наперед заданного формата вместо 1/0. А в третьей разберем примеры использования.
  • ❤ 20
  • 🔥 5
  • 👍 1
More from @oestick
  1. Oct 4, 2026Саша Поляков собрал стату по банам (меня тоже в этот раз задело). Мб кому-то полезно будет…
  2. Oct 4, 2026Собрал статистику по банам Claude из комментариев в канале Пост с разбором телеметрии, кот…
  3. Oct 2, 2026О, мой баг репорт в getbb.app приняли. Приятно быть причастным к развитию того, чем сам по…
  4. Oct 1, 2026А у вас тоже есть задачки, в которых нужно очень много и глубоко думать, но вы их откладыв…
  5. Sep 30, 2026Anthropic > OpenAI, но есть пара но Предпосылки 1. opus-5.5 очень хорош 2. DevDay openai –…
  6. Sep 27, 2026Скоро: видео-монтаж-слоп во всех лентах страны Opus-5.5 теперь сам такое ваншотит на remot…
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 →