Урок 10Новое

Program of Thought

Код вместо текста

Проблема: ИИ часто ошибается в арифметике даже с Chain of Thought. Когда вычисления становятся сложными, как обеспечить точность?

Решение: Используй калькулятор, а не устный счёт

Program of Thought (PoT) заставляет ИИ писать код для решения вычислительных задач вместо попыток считать в уме. Это как использовать калькулятор вместо устного счёта — компьютер точно обрабатывает числа. Если Chain-of-Thought рассуждает на естественном языке, то PoT перекладывает саму арифметику на код, который выполняет внешний интерпретатор. Поэтому итоговый ответ берётся из детерминированного выполнения, а не из того, что модель предсказывает следующую цифру токен за токеном.

Как это работает

Вся суть — в разделении ролей. Языковая модель действительно хороша в рассуждении: прочитать текстовую задачу, понять, какие величины важны, и выстроить последовательность операций. А вот в вычислениях она ненадёжна, потому что каждое «посчитанное» число — это на самом деле просто самый вероятный токен в данном контексте, и именно на длинных умножениях или составных формулах это вероятностное угадывание даёт сбой. PoT оставляет за моделью логику, но превращает каждый шаг в явную строку кода на Python (или JavaScript): объявляет переменные, пишет формулу и передаёт программу настоящему интерпретатору. Интерпретатор возвращает точное значение, а модель потом объясняет, что этот результат означает. Ты получаешь гибкость модели на этапе «что делать» и точность машины на этапе «сделать это».

Когда применять и на что смотреть

Бери PoT всякий раз, когда ответ зависит от вычисления, которое должно быть точным: сложные проценты, конвертация единиц, разница между датами, статистика по списку или любая многошаговая числовая цепочка. Конкретный пример: «вклад $10 000 под 5% годовых с ежемесячной капитализацией на 5 лет». Если попросить решить это в тексте, модель часто выдаст уверенную, но слегка неверную цифру. С PoT она вместо этого генерирует balance = 10000 * (1 + 0.05/12) ** (12 * 5), запускает код и сообщает точные $12 833,59. Основные компромиссы: нужна песочница, которая реально выполнит сгенерированный код (это добавляет задержку и поверхность для атак), и техника помогает только для задач, которые можно выразить программно — она бесполезна для открытых рассуждений, оценочных суждений или задач, где нет формулы. Воспринимай её как правильный инструмент для количественных вопросов, а не как универсальную замену обычному рассуждению.

Представьте это как калькулятор против устного счёта:

  • 1. Читаем задачу: "Рассчитай сложный процент за 5 лет..."
  • 2. Пишем код: Выражаем логику на Python/JavaScript
  • 3. Выполняем: Запускаем код и получаем точный результат
  • 4. Объясняем: Описываем, что делает код и какой ответ

Где это используется?

  • Финансовые расчёты: Сложные проценты, платежи по кредиту, ROI
  • Анализ данных: Статистические расчёты, агрегации
  • Научные вычисления: Расчёты по физике, химии
  • Математика дат: Дни между датами, конвертация часовых поясов

Интересный факт: Program of Thought достигает почти идеальной точности на математических текстовых задачах, где Chain of Thought даёт ~70%. Ключевое понимание: пусть ИИ делает то, в чём он хорош (логика), а компьютер — то, в чём хорош он (вычисления)!

Попробуйте сами!

Используй интерактивный пример ниже, чтобы увидеть, как генерация кода вместо прямых вычислений приводит к более точным результатам.

Program of Thought — Код вместо текста

💻 Program of Thought — вместо текстовых рассуждений модель генерирует и выполняет код. Это устраняет ошибки вычислений и даёт точные результаты.

Выбери пример:
Задача:

Если инвестировать $1000 под 5% годовых на 5 лет с ежегодной капитализацией, сколько получится?

Текстовое рассуждение
1.Начальная сумма: $1000
2.Процент: 5% = 0.05 в год
3.Формула: P × (1 + r)^n
4.1000 × 1.05^5 ≈ 1000 × 1.276
5.Ответ: примерно $1276
Результат:
~$1276

⚠️ Неточный результат из-за округлений

Program of Thought
👆 Нажми "Запустить" чтобы увидеть как код решает задачу
💡 Когда использовать:
🔢
Математика
📅
Даты/Время
📊
Статистика
Пример Program of Thought промпта:
Если инвестировать $1000 под 5% годовых на 5 лет с ежегодной капитализацией, сколько получится?

Напиши Python код для решения этой задачи. Выведи результат.
Ключевая идея

LLM отлично генерируют код, но плохо считают в уме. Program of Thought использует сильную сторону модели (код) для компенсации слабой (арифметика). Код выполняется интерпретатором, который не ошибается.

Частые вопросы

Что такое Program of Thought (PoT) в промптинге?

Program of Thought (PoT) — это техника, при которой модель не считает результат в уме, а пишет код (обычно Python), решающий задачу. Код выполняет внешний интерпретатор и возвращает точное значение, после чего модель объясняет ответ. Так логика остаётся за моделью, а вычисления — за машиной.

Чем Program of Thought отличается от Chain-of-Thought?

Chain-of-Thought рассуждает шагами на естественном языке и сам же «вычисляет» числа, предсказывая токены, из-за чего часто ошибается в арифметике. Program of Thought тоже рассуждает по шагам, но каждый вычислительный шаг выражает в виде кода и запускает его в интерпретаторе, получая детерминированный и точный результат.

Когда стоит использовать Program of Thought?

Когда ответ зависит от точного вычисления: сложные проценты, конвертация единиц, разница между датами, статистика по списку чисел, многошаговые формулы. Для открытых рассуждений, оценочных суждений и задач без формулы PoT не нужен — там обычного рассуждения достаточно.

Какие минусы и ограничения у Program of Thought?

Нужна песочница, которая реально выполнит сгенерированный код, — это добавляет задержку и поверхность для атак (безопасность исполнения). Кроме того, техника помогает только для задач, которые можно выразить программно: открытые рассуждения и субъективные оценки она не улучшает.

Попробуй сам

Интерактивное демо этой техники

Сравнение техник
Демо режим
Предзаписанные ответы
ЗадачаСреднийМатематика

Вклад $10,000 под 5% годовых с ежемесячной капитализацией на 3 года. Какая итоговая сумма?

Без техники
Без техники
Промпт
Вклад $10,000 под 5% годовых с ежемесячной капитализацией на 3 года. Какая итоговая сумма?
Ответ

Используем формулу сложных процентов: A = P(1 + r/n)^(nt) A = 10000(1 + 0.05/12)^(12×3) A = 10000 × 1.004167^36 A ≈ $11,614.72

Токены:38/68
Время:420ms
Качество:
С Program of Thought
С техникой
Промпт
Реши задачу, написав код на Python для точного расчёта. Задача: Вклад $10,000 под 5% годовых с ежемесячной капитализацией на 3 года. Какая итоговая сумма? Напиши код, выполни его мысленно, дай точный ответ.
Ответ
# Данные
principal = 10000  # начальная сумма
annual_rate = 0.05  # годовая ставка
compounds_per_year = 12  # капитализация в месяц
years = 3

# Формула сложных процентов
monthly_rate = annual_rate / compounds_per_year
total_periods = compounds_per_year * years

final_amount = principal * (1 + monthly_rate) ** total_periods

print(f"Итоговая сумма: ${final_amount:.2f}")
print(f"Заработано процентов: ${final_amount - principal:.2f}")

🖥️ ВЫПОЛНЕНИЕ: monthly_rate = 0.05 / 12 = 0.00416666... total_periods = 12 × 3 = 36 final_amount = 10000 × (1.00416666...)^36 final_amount = 10000 × 1.16161678... final_amount = 11616.17

✅ ТОЧНЫЙ ОТВЕТ: Итоговая сумма: 11,616.17Заработанопроцентов:11,616.17 Заработано процентов: 1,616.17

💡 Преимущество кода: точность до цента, нет ошибок округления при ручном расчёте.

👁️Определяем переменные: principal, rate, periods
🔢monthly_rate = 0.05/12 = 0.004166...
🔢total_periods = 12 × 3 = 36
final = 10000 × 1.004166^36 = $11,616.17
Токены:72/285
Время:920ms
Качество:
Почему это работает

Program of Thought даёт точный ответ ($11,616.17) против приблизительного ($11,614.72). Код устраняет ошибки округления.

1 / 4

Квиз по уроку

1 из 3

1.В чём основная идея Program-of-Thought (PoT)?

Практика

Создайте бесплатный аккаунт для решения челленджей

3 челленджей с AI-проверкой для этого урока

Связанные уроки:Chain Of ThoughtLeast To Most

Этот урок — часть структурированного курса по LLM.

Мой путь обучения