Self-Ask — это техника, где модель перед финальным ответом сама формулирует вспомогательные вопросы и отвечает на них по очереди. Вместо одного большого прыжка она строит цепочку из подзадач: "что мне нужно выяснить сначала, чтобы потом ответить на основной вопрос?"

В 2026 Self-Ask полезно понимать как одну из самых практичных форм controlled decomposition. Это не тяжёлый агент и не tree search. Это очень дешёвый способ заставить модель не слипать multi-hop reasoning в один неустойчивый прыжок.

Если вопрос звучит как "кто, где, когда и как связано", часто лучше сначала задать себе 2-3 маленьких вопроса, а уже потом отвечать целиком. Именно это и делает Self-Ask.

Коротко

Self-Ask особенно полезен для:

  • multi-hop вопросов;
  • поиска связей между сущностями;
  • задач, где ответ зависит от нескольких промежуточных фактов;
  • объяснений по длинной цепочке условий.
ПромптGPT-5 mini
Реши вопрос через Self-Ask. Сначала сформулируй нужные вспомогательные вопросы, затем ответь на них, а потом дай итог.

Вопрос: В какой стране находится столица государства, где родился создатель Python?
Ответ модели

Вспомогательный вопрос 1: Кто создал Python? Ответ: Гвидо ван Россум.

Вспомогательный вопрос 2: Где он родился? Ответ: В Нидерландах.

Вспомогательный вопрос 3: Какая столица у Нидерландов? Ответ: Амстердам.

Итог: столица государства, где родился создатель Python, — Амстердам, а страна — Нидерланды.

Смысл техники в том, чтобы сначала построить bridge-facts, а не надеяться, что модель не потеряет их в одном проходе.

Почему техника работает

Многие ошибки в reasoning возникают не на финальном шаге, а в середине. Модель знает нужные факты, но:

  • не извлекает их в правильном порядке;
  • перепрыгивает через промежуточную связь;
  • смешивает сразу несколько операций в одном фрагменте текста.

Self-Ask чинит именно это место. Он заставляет модель формально признать, что ей нужны промежуточные ответы.

Это особенно полезно для вопросов, которые по структуре напоминают:

  • "кто / где / когда -> и что из этого следует?";
  • "сначала найди сущность, потом её атрибут, потом сделай вывод";
  • "сначала вычисли часть A, затем часть B, затем сравни".

Чем Self-Ask отличается от Chain of Thought

Chain of Thought чаще описывает ход рассуждения как единый поток.

Self-Ask вводит более явную дискретность:

  • сначала под-вопрос;
  • потом ответ на него;
  • потом следующий под-вопрос.

Это делает reasoning более modular. Для человека и для системы легче понять, где именно произошёл сбой: на каком из промежуточных вопросов модель потеряла нить.

Один большой ответ
Модель пытается сразу связать несколько сущностей и фактов в одном абзаце и может перепутать промежуточный мост.
Self-Ask
Модель явно разбивает задачу на 2-4 под-вопроса и отвечает на них последовательно, собирая финальный ответ из промежуточных результатов.

Когда техника особенно полезна

Self-Ask хорошо работает в:

  • knowledge-heavy QA;
  • объяснениях по учебным темам;
  • rule-based reasoning;
  • support-ответах по документации;
  • задачах, где one-shot ответ часто "почти правильный", но теряет один важный мост.

Она слабее там, где задача не decomposable или где промежуточные вопросы только раздувают ответ.

Где техника переоценена

Self-Ask не решает проблему отсутствия фактов. Если модель не знает нужное промежуточное знание или вопрос требует актуальных данных, нужен retrieval или search.

Ещё один anti-pattern — превращать любую задачу в длинную цепочку под-вопросов. Иногда задача простая и self-ask только добавляет шум и latency.

Как понимать Self-Ask в 2026

Сегодня Self-Ask полезен не только как prompt format, но и как design pattern для lightweight agents. Во многих системах он работает как дешёвая версия planner:

  • разбей задачу на subqueries;
  • resolve them;
  • synthesize answer.

Это особенно удобно там, где полноценный агент избыточен, а one-shot reasoning уже ненадёжен.

Техническая реализация

const prompt = `
Реши задачу через Self-Ask.

Формат:
1. Вспомогательный вопрос
2. Ответ на него
3. Следующий вспомогательный вопрос
4. Итоговый ответ

Вопрос:
${task}
`

Практический совет: если потом парсите результат, используйте жёсткие метки вроде Subquestion: и Subanswer:. Так проще диагностировать, на каком промежуточном шаге модель ошиблась.

Проверьте себя

1. В чём основная идея Self-Ask?

2. Когда Self-Ask особенно полезен?

3. Какой anti-pattern здесь самый частый?