Пока писал пост про перегрузку LLM-промпта, понял, что упустил важное ограничение: ответ агента сразу стримился пользователю. Нельзя, чтобы промежуточные размышления модели не должны были быть видны пользователю, поэтому reasoning вслух я фактически запретил.
Получился странный сетап: модель должна следовать сложной логике промпта, но не может размышлять.
Ей нужно сразу понять задачу, выбрать нужные инструменты, удержать ограничения, не нарушить формат и начать писать user-facing ответ. То есть сложную логику надо было “проризонить” внутри, без размышлений.
В таком режиме complex instruction following деградирует сильнее. И тогда разбиение на planner + executor выглядит уже не просто как способ разгрузить промпт.
Это попытка жестко задать архитектуру рассуждения модели на уровне графа выполнения.
Planner думает, определяет состояние по бизнес логике и даёт план. Он размышляет вслух. Executor вызывает инструменты и пишет ответ пользователю. Это происхожит все ещё молча, но уже работает лучше, потому что задача упрощена.
По сути, это schema-guided reasoning, но вынесенный из промпта в алгоритм.
Не “модель, пожалуйста, рассуждай вот так”, а сам порядок промптов и их цель добавляет рассуждение каждый раз.
Возможно, если бы я мог позволить модели свободно рассуждать перед ответом, проблема была бы не такой критичной. Но если reasoning нельзя показывать пользователю, то им все равно нужно как-то управлять.
Вывод для меня такой: complex instruction following ломается не только из-за длинных промптов.
Иногда проблема в том, что модели не дали безопасного места, где она может подумать. А если такого места нет, его приходится создавать архитектурно.
P.S. интересно услышать ваши подходы к тому, как добиться от LLM следования сложной логике!
Post #542
565
- ❤ 13
- 👍 6
- 🤩 3
- 👏 1