---
title: "Program of Thoughts Prompting"
source: "https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting"
wiki: "systems-analysis.info/wiki"
article: "Program_of_Thoughts_Prompting"
language: "ru"
categories:
  - "Категория:Prompt инжиниринг"
  - "Категория:Russian"
  - "Категория:Большие языковые модели"
  - "Категория:Машинное обучение"
revision_id: 165
wiki_created_at: 2026-09-06T22:04:42Z
wiki_modified_at: 2026-09-06T22:04:42Z
downloaded_at: 2026-09-07T22:17:58Z
---

# Program of Thoughts Prompting

**Program of Thoughts Prompting** (**PoT**, англ. «программа мыслей») — это метод инженерии промптов для [больших языковых моделей (LLM)](https://systems-analysis.info/wiki/%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8 "Большие языковые модели"), при котором модель генерирует программный код в качестве промежуточных шагов решения задачи вместо текстового объяснения<sup>[\[1\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_paper-1)</sup>. Такой подход позволяет отделить логическое рассуждение от математических вычислений: языковая модель строит план решения в виде программы (например, на Python), а вычисления выполняются внешним, детерминированным интерпретатором кода.

Метод был предложен в 2022 году группой исследователей во главе с **Вэньху Ченом** (*Wenhu Chen*) и нацелен прежде всего на задачи числового или логического характера (математические задачи, финансовые расчёты), где традиционные методы рассуждений, такие как Chain-of-Thought, сталкивались с трудностями в точности вычислений<sup>[\[1\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_paper-1)</sup>.

## Предпосылки и концепция

### Ограничения Chain-of-Thought

Метод PoT является развитием идеи **Chain-of-Thought (CoT)** (цепочка рассуждений), который ранее был основным подходом для улучшения логического вывода LLM<sup>[\[2\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-cot_paper-2)</sup>. В методе CoT модель генерирует последовательность промежуточных шагов на естественном языке. Несмотря на значительное повышение качества рассуждений, у этого подхода есть фундаментальное ограничение: модель выполняет и логику, и сами вычисления в текстовой форме. Это часто приводит к неточным арифметическим операциям, ошибкам округления и другим неточностям, поскольку языковые модели по своей природе не являются точными калькуляторами.

### Основная идея Program of Thoughts

Основная идея PoT заключается в том, чтобы делегировать вычисления внешней системе (интерпретатору кода), а от языковой модели требовать только формализации плана решения в виде исполняемой программы<sup>[\[1\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_paper-1)</sup>. Модель выступает в роли «программиста», а не «вычислителя».

Процесс работы выглядит следующим образом:

1.  Модель получает на вход задачу (например, текстовую математическую задачу).
2.  Вместо текстовых рассуждений она генерирует скрипт на языке программирования (например, **Python**), который решает эту задачу.
3.  Сгенерированный код передаётся внешнему интерпретатору, который его выполняет.
4.  Результат выполнения кода является окончательным ответом.

Таким образом, сложные и точные вычисления (операции с большими числами, вызов специализированных библиотек) выполняются не самой моделью, а программой, что обеспечивает детерминированность и высокую точность<sup>[\[3\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_ministry_ai-3)</sup>.

## Реализация и использование библиотек

В реализации PoT ключевым является способность LLM генерировать корректный и эффективный код. Авторы подхода использовали модель **OpenAI Codex**, специально обученную на задачах программирования. Подход PoT позволяет модели задействовать внешние библиотеки, что существенно расширяет класс решаемых задач. Например, при решении задач символической математики модель может сгенерировать код, использующий библиотеку **SymPy** для аналитического решения уравнений, что выходит за рамки возможностей чисто языковых методов<sup>[\[1\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_paper-1)</sup>.

Подсказка для PoT может быть предоставлена в двух режимах:

- **Few-shot**: В промпте содержатся несколько примеров пар «вопрос — программа-решение».
- **Zero-shot**: В промпте даётся только инструкция, описывающая задачу, без примеров.

Даже в режиме *zero-shot* PoT показывает высокую эффективность благодаря явной структуре, которую модель должна сгенерировать<sup>[\[4\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_learnprompting-4)</sup>.

## Результаты и эффективность

Метод PoT продемонстрировал значительное повышение качества решений на задачах, требующих многошагового числового рассуждения. В оригинальной работе он был протестирован на восьми наборах математических и финансовых задач, включая **[GSM8K](https://systems-analysis.info/wiki/GSM8K "GSM8K")**, **AQUA**, **SVAMP**, **FinQA** и др.

- **Повышение точности**: Во всех случаях PoT превзошёл базовый подход CoT. В среднем был достигнут относительный выигрыш в **~12%** по доле правильных решений.
  - На популярном математическом наборе **GSM8K** точность модели с PoT достигла **71,6%**, тогда как с CoT она составляла **63,1%**.
  - В финансовых задачах выигрыш был ещё более существенным: на датасете **FinQA** точность увеличилась с **40,4%** (CoT) до **64,5%** (PoT)<sup>[\[1\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_paper-1)</sup>.

<!-- -->

- **Комбинация с Self-Consistency**: Эффективность PoT может быть дополнительно улучшена при сочетании с методом **самосогласованности** (*self-consistency*). В этом случае модель генерирует несколько независимых программ-решений, и итоговый ответ выбирается по «принципу большинства» из результатов их выполнения. В сочетании с *self-consistency* PoT установил новое **состояние дел** (*state-of-the-art*) на момент публикации для всех протестированных математических и финансовых бенчмарков<sup>[\[1\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_paper-1)</sup>.

## Преимущества и ограничения

### Преимущества

- **Точность вычислений**: Главное преимущество. Выполнение арифметических операций внешним интерпретатором устраняет ошибки округления и неточности, присущие LLM.
- **Возможность использования библиотек**: Модель может привлекать мощные внешние библиотеки (например, для символьных вычислений, статистического анализа, работы с датами), решая задачи, которые были недоступны ранее.
- **Интерпретируемость и отладка**: Программный код является формальным и структурированным представлением логики решения, что облегчает его проверку и отладку по сравнению с рассуждениями на естественном языке.
- **Универсальность**: Подход эффективен как в *few-shot*, так и в *zero-shot* режимах и применим в разных доменах (математика, финансы, наука).

### Ограничения

- **Безопасность**: Исполнение сгенерированного кода на внешнем интерпретаторе создаёт риски безопасности. Модель теоретически может сгенерировать вредоносный код (например, для удаления файлов). Поэтому практическое применение PoT требует изоляции среды выполнения (*sandbox*) и тщательной фильтрации кода<sup>[\[4\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pot_learnprompting-4)</sup>.
- **Ограниченная область применимости**: Метод наиболее эффективен для задач, которые можно чётко формализовать в виде алгоритма. Для задач, требующих понимания нюансов языка, здравого смысла или творческого подхода, прямое применение PoT затруднено.
- **Зависимость от качества кода**: Эффективность метода напрямую зависит от способности LLM генерировать синтаксически корректный и логически правильный код.

## Связанные подходы

Идея использования кода для улучшения рассуждений LLM получила развитие и в других схожих подходах.

- **Program-Aided Language Models (PAL)**: Метод, предложенный почти одновременно с PoT, который также использует генерацию Python-кода для решения задач<sup>[\[5\]](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_note-pal_guide-5)</sup>. Концептуально PAL и PoT очень близки и подтверждают эффективность стратегии «рассуждение через код».
- **Tree of Thoughts (ToT)**: Более сложный метод, который предлагает генерировать и исследовать «дерево» возможных шагов решения, что является развитием идеи линейной «цепочки» мыслей. PoT может быть использован в рамках узлов этого дерева для проверки гипотез.

## См. также

- [Chain-of-Thought Prompting](https://systems-analysis.info/wiki/Chain-of-Thought_Prompting "Chain-of-Thought Prompting")
- [Tree of Thoughts (ToT)](https://systems-analysis.info/wiki/Tree_of_Thoughts_(ToT) "Tree of Thoughts (ToT)")
- [Graph-of-Thoughts](https://systems-analysis.info/wiki/Graph-of-Thoughts "Graph-of-Thoughts")
- [Chain-of-Verification](https://systems-analysis.info/wiki/Chain-of-Verification "Chain-of-Verification")
- [Generated Knowledge Prompting](https://systems-analysis.info/wiki/Generated_Knowledge_Prompting "Generated Knowledge Prompting")

## Ссылки

- <a href="https://arxiv.org/abs/2211.12588" class="external text" rel="nofollow">Оригинальная научная статья о Program of Thoughts Prompting</a>
- <a href="https://learnprompting.org/docs/advanced/decomposition/program_of_thoughts" class="external text" rel="nofollow">Руководство по PoT на портале Learn Prompting</a>

## Литература

- Chen, W. et al. (2023). *Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks*. <a href="https://arxiv.org/abs/2211.12588" class="external text" rel="nofollow">arXiv:2211.12588</a>.
- Wei, J. et al. (2022). *Chain of Thought Prompting Elicits Reasoning in Large Language Models*. <a href="https://arxiv.org/abs/2201.11903" class="external text" rel="nofollow">arXiv:2201.11903</a>.
- Wang, X. et al. (2022). *Self-Consistency Improves Chain of Thought Reasoning in Language Models*. <a href="https://arxiv.org/abs/2203.11171" class="external text" rel="nofollow">arXiv:2203.11171</a>.
- Gao, L. et al. (2022). *PAL: Program-Aided Language Models*. <a href="https://arxiv.org/abs/2211.10435" class="external text" rel="nofollow">arXiv:2211.10435</a>.
- Cobbe, K. et al. (2021). *Training Verifiers to Solve Math Word Problems*. <a href="https://arxiv.org/abs/2110.14168" class="external text" rel="nofollow">arXiv:2110.14168</a>.
- Chen, Z. et al. (2021). *FinQA: A Dataset of Numerical Reasoning over Financial Data*. <a href="https://arxiv.org/abs/2109.00122" class="external text" rel="nofollow">arXiv:2109.00122</a>.
- Zhu, F. et al. (2021). *TAT-QA: A Question Answering Benchmark on a Hybrid of Tabular and Textual Content in Finance*. <a href="https://arxiv.org/abs/2105.07624" class="external text" rel="nofollow">arXiv:2105.07624</a>.
- Patel, A. et al. (2021). *Are NLP Models Really Able to Solve Simple Math Word Problems? (Introducing SVAMP)*. <a href="https://arxiv.org/abs/2103.07191" class="external text" rel="nofollow">arXiv:2103.07191</a>.
- Xu, F. et al. (2023). *RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation*. <a href="https://arxiv.org/abs/2310.04408" class="external text" rel="nofollow">arXiv:2310.04408</a>.
- Mu, J. et al. (2023). *Learning to Compress Prompts with Gist Tokens*. <a href="https://arxiv.org/abs/2304.08467" class="external text" rel="nofollow">arXiv:2304.08467</a>.

## Примечания

1.  <span id="cite_note-pot_paper-1">↑ <sup>[1,0](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_paper_1-0)</sup> <sup>[1,1](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_paper_1-1)</sup> <sup>[1,2](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_paper_1-2)</sup> <sup>[1,3](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_paper_1-3)</sup> <sup>[1,4](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_paper_1-4)</sup> <sup>[1,5](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_paper_1-5)</sup> Chen, W. et al. «Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks». *arXiv:2211.12588*, 2023. <a href="https://arxiv.org/abs/2211.12588" class="external autonumber" rel="nofollow">[1]</a></span>
2.  <span id="cite_note-cot_paper-2">[↑](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-cot_paper_2-0) Wei, J. et al. «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models». *arXiv:2201.11903*, 2022. <a href="https://arxiv.org/abs/2201.11903" class="external autonumber" rel="nofollow">[2]</a></span>
3.  <span id="cite_note-pot_ministry_ai-3">[↑](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_ministry_ai_3-0) «Program of Thoughts: Everything You Need to Know». *The Ministry of AI*. <a href="https://medium.com/@ThePromptIndex/program-of-thoughts-everything-you-need-to-know-7ebf2cb9d59c" class="external autonumber" rel="nofollow">[3]</a></span>
4.  <span id="cite_note-pot_learnprompting-4">↑ <sup>[4,0](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_learnprompting_4-0)</sup> <sup>[4,1](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pot_learnprompting_4-1)</sup> «Program of Thoughts Prompting: Enhancing Accuracy in Reasoning and Computation». *Learn Prompting*. <a href="https://learnprompting.org/docs/advanced/decomposition/program_of_thoughts" class="external autonumber" rel="nofollow">[4]</a></span>
5.  <span id="cite_note-pal_guide-5">[↑](https://systems-analysis.info/wiki/Program_of_Thoughts_Prompting#cite_ref-pal_guide_5-0) «PAL (Program-Aided Language Models)». *Prompt Engineering Guide*. <a href="https://www.promptingguide.ai/techniques/pal" class="external autonumber" rel="nofollow">[5]</a></span>
