PAL, или Program-Aided Language Models, это паттерн, при котором модель читает задачу на естественном языке, но промежуточное решение формулирует как программу. Дальше исполнение передаётся runtime, обычно Python-интерпретатору.
Если Chain of Thought пытается и понимать задачу, и считать внутри текста, то PAL жёстче делит ответственность: модель интерпретирует задачу и пишет программу, а вычислительный слой отвечает за правильное исполнение.
В 2026 PAL полезно воспринимать как раннюю, но до сих пор очень практичную форму tool-based reasoning. Техника особенно хороша там, где ошибка в вычислениях, ветвлениях или преобразовании данных стоит дороже, чем дополнительный runtime-шаг.
PAL и Program of Thoughts близки, но акцент у них разный.
PAL сильнее тяготеет к схеме "натуральный язык -> программа -> исполнение".Program of Thoughts допускает более смешанный формат, где reasoning и код могут чередоваться.На практике PAL обычно выбирают, когда вы хотите получить именно исполнимую программу как главный артефакт, а не просто код как часть рассуждения.
PAL особенно силён в четырёх типах задач:
if/else;Если в задаче есть повторяющиеся операции, условные переходы или накопление промежуточного состояния, PAL обычно надёжнее текстового reasoning.
PAL плохо работает, если вы просто говорите "реши через Python". Лучше сразу задать рамку:
PAL не универсален.
Отдельная ошибка команд: пытаться через PAL решить проблему плохого понимания условий. Код помогает считать, но не спасает, если задача изначально неверно интерпретирована.
Сегодня PAL важен не как "хак из эпохи раннего prompting", а как хороший шаблон маршрутизации. Во многих продуктах уже есть sandbox, code interpreter, SQL-engine или python-runner. PAL просто даёт модели дисциплину: сначала переведи задачу в программу, потом исполни.
Отсюда и современная роль техники:
Хорошая стратегия выглядит так:
text-only reasoning для простых объяснений;scratchpad для коротких промежуточных шагов;PAL для исполнимой бизнес-логики и вычислений;RAG + verification для knowledge-heavy задач.Техника хорошо показывает себя в:
Именно там PAL выигрывает у обычного CoT не только по качеству, но и по аудируемости. Команда может посмотреть на сгенерированную программу и быстро понять, где модель ошиблась.
Риск PAL не в арифметике, а в ложном ощущении надёжности. Если модель неправильно поняла бизнес-правило и аккуратно закодировала неправильную логику, runtime честно исполнит ошибку.
Поэтому PAL лучше комбинировать с: