"Вставляет ли OpenAI ""втихую"" JSON схему в каждый запрос со Structured Outputs? __Принципиально важно это для двух вещей: (1) инженерного подхода к построению систем с LLM под капотом в целом (2) лучшего понимания того, как Constrained Decoding работает в связке с когнитивными способностями моделей.__ Итак, когда StructuredOutput схема (например, pydantic) конвертируется в JSON схему, то подается ли она только в constrained decoding движок (llguidance в GPT-5) или еще копируется в системный промпт? Причем в документации OpenAI нет ни слова про копирование. Давайте проверим. Берем такую SGR схему: ``` class CandidateEvaluation(BaseModel): brief_candidate_summary: str = Field(..., description=""in Thai"") rate_skill_match: Annotated[int, Ge(1), Le(1)] final_recommendation: Literal[""hire"", ""reject"", ""hold""] ``` и отправляем в OpenAI c запросом в десяток tokens: ``` user = ""evaluate Sam Altman for DevOps Role at OpenAI"" completion = client.chat.completions.parse( model=""gpt-5-mini"", response_format=CandidateEvaluation, messages=[ {""role"": ""user"", ""content"": user }, ], ) ``` Если JSON схема НЕ добавляется в промпт, тогда промпт будет в пределах 20-30 tokens, а ответ не будет содержать ничего неожиданного. Запускаем и смотрим на размер входного промпта и сам ответ: ``` completion.usage.prompt_tokens == 100 completion.choices[0].message.parsed.brief_candidate_summary[:10] == ""แซม อัลท์แ"" ``` Что и требовалось доказать. Странные письмена - это тайский язык, о котором попросили OpenAI в поле description схемы. Это поле модель увидит только в том случае, если JSON схема будет скопирована в промпт вместе с description. Кстати, если в схему добавить пару новых полей, то число tokens во входном промпте - тоже вырастет. Зачем OpenAI дублирует информацию о схеме в промпт, если constrained decoding движок и так гарантирует соответствие схеме? Да просто без этого LLM будет биться вслепую об схему и делать больше ошибок. А как это относится к инженерному подходу? Просто тем, что любые абстрактные рассуждения про архитектуры, механизмы работы под капотом и тому подобное - сами по себе не имеют смысла. Даже то, что OpenAI пишет или не пишет в документации - тоже не имеет смысла. Имеет смысл только то, что мы можем измерить и оценить [1]. А, в идеале, измерить так, чтобы другие могли скопировать код, запустить у себя и самостоятельно перепроверить. Можете попробовать запустить эти сниппеты сами и поиграть с ними. Ваш, @llm_under_hood 🤗 --- [1] то, что мы можем измерить или протестировать - мы можем потом осознанно докрутить и улучшить"
"Вставляет ли OpenAI ""втихую"" JSON схему в каждый запрос со Structured…
Из этого канала
- #685"Я сегодня закончил первый прототип платформы для ERC3: Enterprise AI Agents.…
"Я сегодня закончил первый прототип платформы для ERC3: Enterprise AI Agents. Получается довольно симпатично, сейчас все расскажу.
- #686В Gemini 2.5 завезли нормальные Structured Outputs! Поддержку для JSON Schema…
В Gemini 2.5 завезли нормальные Structured Outputs! Поддержку для JSON Schema добавили в Google во все поддерживаемые модели Gemini (в старые версии - с…
- #687Видео (6 мин) работы чатбота с SGR на базе локальной Qwen-30b-a3b Про…
Видео (6 мин) работы чатбота с SGR на базе локальной Qwen-30b-a3b Про Schema-Guided Reasoning говорили и писали уже много.
- #683"Новости с полей про разворачивание системы с встроенным AI+Coding агентов Это…
"Новости с полей про разворачивание системы с встроенным AI+Coding агентов Это продолжение истории, которую я описывал в канале ранее. Оглавление тут.
- #682Заметки на полях по итогам KanDDDinsky Напомню, что KanDDDinsky - это ежегодная…
Заметки на полях по итогам KanDDDinsky Напомню, что KanDDDinsky - это ежегодная конференция в Берлине, которую организовывает Marco Heimeshoff.