Перейти к содержимому
ПереводыDatawhale и китайские курсы

«Большие языковые модели», главы 10–12: промптинг, агенты, оценка и «медленное мышление»

Конспект глав 10–12 учебника RUC AI Box и слайдов 2025 года: четыре элемента промпта и практические правила, автоматическая оптимизация промптов, обучение в контексте (выбор, формат и порядок примеров, механизмы), цепочки рассуждений и их развитие; планирование и устройство LLM-агента; метрики и три способа оценки, галлюцинации, бенчмарки; RAG и рассуждающие модели (DeepSeek-R1, Kimi k1.5).

  • Глава 10 — промптинг. Четыре элемента промпта и четыре принципа, автоматический поиск промптов, обучение в контексте (как выбрать, оформить и упорядочить примеры и почему оно вообще работает), цепочка рассуждений и её развитие от self-consistency до деревьев и графов мыслей.
  • Глава 11 — планирование и агенты. Схема «планировщик — исполнитель — среда», планы текстом и кодом, обратная связь; агент как память + планирование + действие на примере симулятора RecAgent; мультиагентные системы и открытые проблемы.
  • Глава 12 — оценка. Метрики (от перплексии до Elo и pass@k), три способа оценки — бенчмарки, люди, модели-судьи, проблемы базовых способностей (галлюцинации, устаревание знаний, непоследовательность рассуждений) и обзор MMLU, BIG-Bench, HELM, C-Eval.
  • Слайды 2025 года закрывают пробелы книги: RAG и «медленное мышление» — DeepSeek-R1-Zero, четырёхэтапный рецепт R1, Kimi k1.5.
РазделУрок курсаЧто даёт книга сверх урока
§10.1 промпты8.1.2 Промптинг, 8.4.1 Дисциплина промпт-инжинирингадесятки коротких практических правил по каждому принципу
§10.2 обучение в контексте8.1.2 Промптингсистематика выбора и порядка примеров, гипотезы о механизме
§10.3, слайды 8.2 рассуждения6.4.2 R1-Zero, 6.4.4 Дистилляция мышленияпуть от CoT-промптов к RL-рассуждениям одной линией
§11 агенты8.3.1 Цикл агента, 8.3.3 Планирование и памятьобщая схема планирования, мультиагентные системы
слайды 7.4 RAG8.2.1 Основы RAG, 8.2.2 Продвинутый RAGкогда поиск не нужен и как это решить маленькой моделью
§12 оценка7.3.1 Бенчмарки, 7.3.2 LLM как судьятаблица «какие наборы берут в техотчётах»

Промпт складывается из четырёх элементов: описание задачи, входные данные (структурированные — таблицы, графы — линеаризуют в текст или записывают как структуру данных в коде), контекст (найденные документы, примеры) и стратегия («давай подумаем шаг за шагом», «ты эксперт в…», разбиение на реплики диалога). Четыре принципа:

  1. Ясно сформулировать цель — с ограничениями на вход и выход («сводка не длиннее 50 слов»).
  2. Разбить на простые подзадачи и пронумеровать их.
  3. Дать несколько примеров (few-shot).
  4. Использовать удобный модели формат — разделители вроде ###, роли, английский для англоязычных моделей.

Ценнее всего в разделе — плотные списки советов (в книге они даны по-английски). Несколько, которые не устарели: говорить модели, что делать, а не чего не делать; делать промпт самодостаточным, без «оно» и «они» вне контекста; при сравнении нескольких вариантов помнить, что порядок сильно влияет на ответ; для шкалы оценок давать описание баллов с примерами; в задачах ранжирования просить вывести метки (A, B, C), а не полные тексты; просить модель проверить свой ответ перед выводом; для разнообразных примеров, если вопросы похожи, разнообразить хотя бы решения.

Автоматическая оптимизация промптов (§10.1.2)

Заголовок раздела «Автоматическая оптимизация промптов (§10.1.2)»

Дискретные промпты ищут градиентами (замены токенов по оценке изменения правдоподобия), RL (сеть-политика генерирует промпт и получает награду за качество на задаче), правками (менять описание, примеры, слова-метки и оставлять лучшее — подходит для моделей за API) и самой LLM как генератором и улучшателем промптов (так устроены, например, APE и OPRO; лучше давать ей всю историю попыток с оценками, иначе поиск застревает или «колеблется»). Непрерывные промпты — prefix tuning и prompt tuning — для больших моделей используют редко. Авторы прямо пишут, что многие методы этого раздела оставлены «для полноты».

Выбор примеров: kk ближайших соседей по эмбеддингам заметно лучше случайных; для покрытия — алгоритмы разнообразия (MMR, детерминантные точечные процессы); дорогой, но точный вариант — оценивать пользу примера самой LLM и учить на этих оценках маленький классификатор. Формат: «вопрос — ответ» → плюс описание задачи → плюс цепочка рассуждений; шаблоны можно генерировать LLM по нескольким образцам. Порядок: модели сильнее опираются на конец промпта, поэтому самые похожие на тестовый вопрос примеры ставят ближе к нему; без тестовых данных порядок выбирают по минимальной энтропии предсказаний.

Почему работает (§10.2.3). Со стороны предобучения: способность можно «натренировать» специальной задачей (MetaICL — мета-обучение на десятках NLP-задач в формате «примеры → ответ», чем разнообразнее, тем лучше), помогают разнообразие доменов и длинные связные документы. Со стороны вывода — два режима: распознавание задачи (примеры помогают «узнать» скрытую переменную задачи, знакомой с предобучения, — обоснование через PAC-обучение; это умеют уже модели на 350M) и обучение задаче (ICL как неявный градиентный спуск, который внимание выполняет за один прямой проход, или как более сложный «внутренний» алгоритм обучения; заметно сильнее у больших моделей, порядка 66B). Различить режимы помогают опыты, где верные метки в примерах заменяют случайными метками или бессмысленными символами.

Пример превращается из пары ⟨вход, выход⟩ в тройку ⟨вход, рассуждение, выход⟩. Без примеров рассуждение вызывают фразами «Let’s think step by step» или «Take a deep breath and work on this problem step-by-step» (последнюю нашёл сам LLM-оптимизатор промптов). Как улучшать:

  • Примеры: сложные (больше шагов или длиннее вопрос) работают лучше простых; разнообразные (Auto-CoT: кластеризуем вопросы k-means и берём по представителю из кластера) снижают вред от ошибок в сгенерированных примерах.
  • Генерация: self-consistency — сэмплировать много цепочек и голосовать по ответам (можно ещё и по нескольким промптам — M1×M2M_1 \times M_2 цепочек); верификаторы (DIVERSE: отдельные классификаторы для всей цепочки и для шагов; разметку шагов получают из того, привела ли цепочка к верному ответу).
  • Структура: дерево мыслей — порождаем несколько шагов, оцениваем, заглядываем вперёд, откатываемся (пример книги — игра «24» с числами 4, 9, 10, 13); граф мыслей — ещё и сливаем ветви (пример: сортировка 64 чисел кусками по 16 с последующим слиянием).

Ограничения: на простых задачах вроде анализа тональности CoT может навредить («передумывание»). Почему CoT работает — три линии объяснений: в данных много пересекающихся «локальных» тем, и цепочка связывает переменные, которые редко встречаются вместе; CoT разлагает обучение составной функции на «фокусировку» и шаги; эксперименты с порчей цепочек показывают, что важны связность и релевантность, а не правильность каждого числа. И ещё: если при декодировании взять не только самый вероятный первый токен, а kk вариантов, среди продолжений находятся цепочки рассуждений и без всякого промпта, и они чаще приводят к верному ответу.

flowchart LR
P["Планировщик<br/>(LLM)"] -->|план, действия| E["Исполнитель<br/>(LLM, инструменты, робот)"]
E -->|действие| W["Среда<br/>(веб, игра, мир)"]
W -->|результат| F["Обратная связь"]
F -->|уточнить план| P
M[("Память")] <--> P

Планы бывают текстовые (наглядно, но исполнение не гарантировано — пример книги: рецепт яичницы с помидорами, разбитый на девять шагов) и кодовые (строго, исполняются интерпретатором). Генерировать план можно целиком сразу или итеративно, шаг за шагом; обратная связь бывает внутренней (сама LLM проверяет план) и внешней (среда, инструменты, человек, другие модели). Авторы подчёркивают, что это шире классического RL: план и исполнение здесь явно разделены.

Три компонента:

  • Память. Краткосрочная — окно контекста; долгосрочная — внешнее хранилище (файлы, базы) с чтением через поиск и записью через «рефлексию», с очисткой дублей. Описание роли агента обычно лежит в долгосрочной памяти, в профиле.
  • Планирование. Разбиение на подзадачи, несколько кандидатов плана и выбор лучшего, правка плана по обратной связи.
  • Действие. Выполнение шага самой моделью или через инструменты.

Цикл: понять состояние (подтянув память) → спланировать → выполнить → получить обратную связь → отфильтровать и записать в память. Сквозной пример — RecAgent, симулятор пользователей рекомендательной системы, сделанный авторами книги: у агента «Bob» есть профиль (25 лет, фотограф, любит фантастику и комедии), свежие наблюдения, план «найти фильм → посмотреть → обсудить с друзьями», и в логе он смотрит «Интерстеллар» и договаривается с агентом «Alice» о совместном просмотре. Новым воспоминаниям при записи ставится оценка важности.

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

Метрики по типам задач: точность, F1, точное совпадение (EM) — для классификации и QA; BLEU и ROUGE — для генерации по эталону; перплексия PPL=exp⁡(−1T∑tlog⁡P(ut∣u<t))\mathrm{PPL} = \exp\big(-\tfrac1T\sum_t \log P(u_t\mid u_{<t})\big) — для языкового моделирования; pass@k — для кода; доля успехов — для агентов и инструментов; Elo — для попарных сравнений. Несмещённую оценку pass@k по nn сгенерированным решениям, из которых cc верных, удобно считать так (наш код):

from math import comb
def pass_at_k(n, c, k):
"""Вероятность, что среди k случайно выбранных из n решений есть хотя бы одно верное."""
if n - c < k:
return 1.0
return 1 - comb(n - c, k) / comb(n, k)
print(pass_at_k(10, 3, 1)) # 0.3
print(pass_at_k(10, 3, 5)) # ≈ 0.917
print(pass_at_k(200, 10, 100)) # ≈ 0.999

Три способа оценки и что кому подходит:

СпособПримерыДля каких моделейПодводные камни
бенчмаркиMMLU, C-Eval, GSM8K, BBH, MATH, OpenCompass, Open LLM Leaderboardбазовые и дообученные; для базовых — лучше few-shotразбор ответа правилами, утечка тестов
людиChatbot Arena (попарно, Elo), HELM (баллы)дообученные, диалогдорого и медленно
модели-судьиAlpacaEval, MT-Benchдообученныедоступ к закрытому судье, утечка данных; выход — дообучать открытых судей
  • Генерация: автоматические метрики вроде BLEU плохо согласуются с людьми, люди не всегда согласны между собой, а LLM-судьи пристрастны (к порядку ответов, к текстам, написанным LLM); кроме того, в узких областях генерация слабее, а дообучение на область грозит забыванием общих навыков.
  • Знания: галлюцинации — внутренние (противоречат входу) и внешние (не проверяются по источнику); устаревание знаний — регулярно доучивать дорого и грозит катастрофическим забыванием, поэтому практичнее подключать внешние источники (поиск); редактирование параметров на больших моделях пока работает плохо.
  • Рассуждения: непоследовательность (верный ответ после неверного рассуждения и наоборот; ответ меняется от мелких изменений формулировки — лечат голосованием по многим цепочкам, обратной связью по шагам, переводом задачи в код) и ошибки вычислений (мало таких данных в предобучении; помогают поцифровая токенизация, как в LLaMA, и калькулятор как инструмент).

Продвинутые способности (§12.3): выравнивание (полезность, честность, безвредность), взаимодействие со средой (ALFWorld, WebShop) и использование инструментов.

Сводка по техотчётам GPT-4, Claude 3, LLaMA-2 и др.: общие знания — MMLU и BBH (для китайского — C-Eval и CMMLU); математика — GSM8K, MATH, DROP; код — HumanEval, MBPP; знания о мире — NaturalQuestions, TriviaQA; здравый смысл — SIQA, PIQA, ARC; выравнивание — TruthfulQA, WinoGender, CrowS-Pairs, RealToxicityPrompts. И главное предупреждение — помнить об утечке тестов в обучающие данные. Код оценки в книге показан на LLMBox (53 набора): три режима — перплексия каждого варианта ответа (для базовых моделей), вероятность буквы-варианта A/B/C/D (для чат-моделей) и свободная генерация с разбором ответа.

Книга почти не говорит о RAG отдельно — слайды 2025 года это восполняют. Зачем: галлюцинации, устаревание, нехватка узкоспециальных знаний, проверяемость источников. Конвейер: поиск → сборка промпта → генерация. Оптимизации:

  • поиск — единица поиска поменьше документа («утверждения»), расширение и переписывание запроса, гипотетический ответ как запрос (HyDE);
  • промпт — переранжирование документов (самые релевантные не прятать в середину), сжатие контекста (LLMLingua выбрасывает маловажные токены по вероятностям маленькой модели);
  • процесс — итеративный и адаптивный поиск (Self-RAG сама решает, когда искать и каким документам верить);
  • обучение — дообучение с документами на разных позициях и с «шумовыми» документами.

Главный вопрос слайдов — всегда ли поиск помогает? Нет: нерелевантные документы вредят, а то, что модель и так знает, искать незачем. Сгенерировать ответ, а потом решать, нужен ли поиск, — дорого. Удешевление: маленькая «прокси-модель» отвечает первой, и по её ответу решают, искать ли и что именно. Это работает, потому что модели учатся на похожих корпусах: популярные знания у больших и маленьких моделей почти совпадают, а различаются в «длинном хвосте».

Слайды 8.2: сложные рассуждения и медленное мышление

Заголовок раздела «Слайды 8.2: сложные рассуждения и медленное мышление»

Этих тем в книге нет; слайды 2025 года пересказывают их так.

Зачем «медленно думать». Масштабирование обучения (train-time scaling) даёт убывающую отдачу, а качество можно покупать ещё и длиной вывода (test-time scaling). Полезная метрика — эффективность по токенам: прирост качества на число сгенерированных токенов. Аналогия — «быстрое и медленное мышление» Канемана: попробуйте сразу назвать 9999×9999999 \times 999. Почему CoT вообще помогает: модель предсказывает ответ токен за токеном, и P(ответ∣вопрос)P(\text{ответ}\mid\text{вопрос}) заменяется на P(рассуждение,ответ∣вопрос)P(\text{рассуждение}, \text{ответ}\mid\text{вопрос}) — «давление» на каждый отдельный токен меньше.

Четыре пути к медленному мышлению: многократное сэмплирование, поиск по дереву, SFT на длинных цепочках и RL (o1, R1). Общая идея — поиск + обучение.

DeepSeek-R1-Zero. Раньше RL для LLM буксовал из-за того, что общую модель награды учить трудно. Подсказка AlphaGo: нужна проверяемая награда — в математике и коде правильность проверяется автоматически. R1-Zero: прямо из DeepSeek-V3-Base, GRPO, награда за верный ответ + за формат (<think>…<answer>), больше 8000 шагов, без SFT; длина ответов и точность растут вместе, появляются «человеческие» рассуждения. Аналогия слайдов: дать ученику задачник с ответами, но без решений, и пусть пробует сам.

flowchart LR
B["DeepSeek-V3-Base"] --> S1["① холодный старт:<br/>SFT на тысячах<br/>длинных цепочек"]
S1 --> S2["② RL на проверяемых<br/>задачах + награда<br/>за язык"]
S2 -->|генерирует данные| S3["③ SFT базовой модели:<br/>600K рассуждений +<br/>200K прочего, 2 эпохи"]
B --> S3
S3 --> S4["④ RL во всех сценариях:<br/>правила + модели награды<br/>полезности и безвредности"]
S4 --> R1["DeepSeek-R1"]

Детали рецепта R1 по слайдам: холодный старт нужен для стабильности и читаемости (данные — few-shot, особые промпты, отфильтрованные ответы R1-Zero, ручная разметка); награда за «единый язык» борется со смешением языков ценой небольшой потери качества; на шаге ④ полезность оценивают только по итоговому ответу, а безвредность — по рассуждению и ответу вместе. Дистилляция R1 в маленькие модели работает неожиданно хорошо — слайды особо отмечают Qwen2.5-1.5B.

Kimi k1.5 (мультимодальная рассуждающая модель): отбор RL-задач по охвату, сложности (по доле верных решений самой модели) и проверяемости, с удалением легко «взламываемых» форматов — выбор вариантов, «верно/неверно»; разогрев SFT на длинных цепочках с планированием, проверкой и рефлексией; награда — проверяемая (0/1) или от модели награды, для кода — автоматически сгенерированные тесты; штраф за длину; учебный план «от лёгкого к трудному» и приоритет трудных задач; без value-сети. Отдельно — long2short: сделать короткие цепочки из длинных слиянием весов, отбором самой короткой верной цепочки, DPO «короткое лучше длинного» и повторным RL со штрафом за длину.

Открытые проблемы на 2025 год: дорого (железо и задержка), «передумывание» и «недодумывание», смешение языков, новые риски безопасности, а открытые модели ещё не повторили сверхдлинные рассуждения o3. Применение, на которое авторы делают ставку, — автоматизация науки (Deep Research).

  1. Порядок примеров. Для классификации тональности из 4 примеров переберите все 24 порядка на 100 тестовых отзывах с маленькой локальной моделью. Каков разброс точности? Совпадает ли лучший порядок с порядком минимальной энтропии предсказаний?
  2. Self-consistency. На 50 задачах GSM8K сравните точность при одном жадном ответе и при голосовании по 5 и 10 сэмплам (температура 0,7). Постройте зависимость точности от числа токенов — это и есть «эффективность по токенам».
  3. Проверяемая награда. Напишите функцию награды в стиле R1-Zero: 1 за верный ответ в <answer>, 0,1 за правильный формат <think>…</think><answer>…</answer>, 0 иначе — и проверьте её на десятке «хитрых» строк (ответ вне тега, два тега, пустое рассуждение). Пригодится в уроке 6.4.5.
  4. pass@k. Сгенерируйте по 20 решений на 20 задач HumanEval маленькой кодовой моделью, посчитайте pass@1, pass@5 и pass@10 функцией выше и сравните с наивной оценкой «решена ли задача хотя бы одной из первых k попыток».
EnglishРусский
prompt learning / prompt engineeringпромптинг / промпт-инжиниринг
task descriptionописание задачи
in-context learning, ICLобучение в контексте (ICL)
demonstrationпример (демонстрация)
chain / tree / graph of thoughtцепочка / дерево / граф мыслей
self-consistencyсамосогласованность (self-consistency)
planningпланирование
agent / multi-agentагент / мультиагентный
memory (short-term / long-term)память (краткосрочная / долгосрочная)
retrieval-augmented generation, RAGгенерация с поиском (RAG)
benchmarkбенчмарк
hallucinationгаллюцинация
perplexityперплексия
data contamination / benchmark leakageутечка тестов в данные
slow / fast thinkingмедленное / быстрое мышление
reasoning modelрассуждающая модель
cold startхолодный старт
verifiable rewardпроверяемая награда
long chain-of-thought, long CoTдлинная цепочка рассуждений (long CoT)