TGViewer
max.sh max.sh @max_dot_sh · 3.27K subscribers
Post #72 2.19K
💡 Концепт дня ( и фреймворк тоже) - Re-prompting для LLM-ов. Например, через Instructor

1️⃣ Что такое re-prompting ?

Большое количество практически полезных LLM приложений завязаны на то, что мы ожидаем от модели ответ в определенном формате. Один из популярных - JSON. Реально же это может быть что угодно: и xml разметка, и аннотация определенных строк (условно, line by line label tagging) или markdown, etc. Более того, могут накладываться ограничения не только на общий формат ответа, но и на его атрибуты. Например, можно попросить сгенерировать модель синтетических юзеров с валидными username и email заданных регвырами.

На практике, модель не всегда может выдать ответ в нужном формате. Это может быть невалидный json или аттрибут не будет соответствовать ограничению.

В такой ситуации можно определить свои механизмы валидации ответа (более общее название Guardrails) модели и если ответ не проходит проверки, отправить фидбэк с ошибкой (указав, что именно сгенерировано неверно) обратно в модель и попросить решить задачу еще раз с учетом фидбэка. Это и есть Re-prompting. Или Retry-Based Structured Generation. Суть подхода на картинке к посту.

2️⃣ В каких случаях может понадобиться re-prompting ?

⏺️Если вы работаете с API профвайдером LLM-ки, который не поддерживает явно структурную генерацию (Structured Output, или SO), а она нужна. Например, у антропика такого нет. У OpenAI есть, но кажется многие типы он не поддерживает. И еще у них есть свой Constrained Decoding для JSON схемы на основе грамматик.

⏺️Или если у вас сложная кастомная структура, которую провайдер из коробки не поддеррживает.

⏺️Или если вы работаете с своей локальной моделью у которой вообще нет никаких внешних валидаторов.

Кстати, про локальные модели хочу рассказать в другом посте. Так как есть доступ к логитам и соответствующим токенам, то можно явно реализовать Constraint Decoding, задав свою грамматику (Context-Free-Grammar, движков с реализациями много) и контролировать поведение каждого генерируемого токена в соответствии с грамматикой.



3️⃣ Что такое Instructor

Очень популярная библиотека совместимая почти со всеми провайдерами, локальными и API. Реализует концепцию re-prompting-а для JSON схем, которые можно описать с помощью Pydantic. На сайте много примеров того, что и как можно задать

⏺ Плюсы: легко начать использовать. Поддерживает все, что есть в Pydantic. Куча провайдеров. Хорошая документация и активное коммьюнити.

⏺ Минусы: Это не Constraint Decoding, это просто валидация того, что выход соответствует схеме. И если нет - то надежда, что модель справится со второй попытки, или третьей...а может не справиться вообще. Никаких гарантий нет. Как следует из предыдущего предложения - это увеличивает цену инференса как по стоимости, так и по latency. Опять-таки, если каждый второй запрос падает с ошибкой парсинга - следует менять модель. Но все же посыл про рост цены понятен. Так же, все что за пределами JSON-а - мимо, нужно все равно быть готовым писать свои валидаторы; библиотека не что-то универсально предотвращающее ошибки.

Happy Learning!

#гайд #обзор #фреймворк

@max_dot_sh
  • 👍 12
  • 🔥 4
  • 💯 2
  • ⚡ 1
  • ✍ 1
More from @max_dot_sh
  1. Sep 16, 2026Вышел из отпуска и сразу в лондонскую подземку. А тут снова ждет креативная it-шная реклам…
  2. Aug 30, 2026Post #230
  3. Aug 21, 2026По этикету, уходя из хорошего места - найди хорошую замену. Поэтому пост с вакансией Компа…
  4. Aug 17, 2026К слову о конкурсах. И почему в них круто участвовать. Расскажу свою историю. В 2018 году…
  5. Aug 12, 2026🏎 Пост для для любителей контестов. Цель конкурса: разработать систему, которая передает…
  6. Aug 10, 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 →