3,583 papers
arXiv:2603.11583 83 12 мар. 2026 г. FREE

UtilityMax Prompting: математическая формула вместо размытых требований при нескольких целях

КЛЮЧЕВАЯ СУТЬ
Напишешь «выгодный и надёжный вариант» — модель не взвешивает критерии. Она генерирует текст, который звучит как баланс. Реальных вычислений нет. UtilityMax позволяет получить честный выбор из нескольких конкурирующих целей — не имитацию, а математику. Каждый критерий превращается в переменную X1, X2, X3 — модель оценивает их по очереди, потом перемножает. Важный момент: жёсткая формулировка типа «найди ТОЛЬКО выгодный И надёжный» не спасает — эксперименты показали, что иногда даёт результат хуже мягкой версии. Двусмысленность никуда не уходит, просто фиксируется жёстче.
Адаптировать под запрос

TL;DR

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

Проблема в том, что LLM плохо балансирует конкурирующие цели в одном предложении. Когда ты пишешь "найди выгодный, но надёжный вариант" — модель сама решает, как взвешивать "выгоду" против "надёжности". Это её интерпретация, не твоя. Что важно: если сделать требование жёстче ("найди ТОЛЬКО выгодный И надёжный") — не помогает. Эксперименты показали, что жёсткая формулировка иногда даёт результат хуже, чем мягкая. Причина — двусмысленность никуда не уходит, просто становится жёстче зафиксированной.

UtilityMax убирает двусмысленность: каждый критерий получает своё место в формуле O(a) = E[X1] × E[X2] × E[X3]. Модель по очереди оценивает каждую переменную, потом перемножает и выбирает вариант с максимальным произведением.


🔬

Схема метода

Всё выполняется в одном промпте:

ШАГ 1: Описываешь задачу и все критерии как переменные X1, X2, X3...
        → Формула цели: O(a) = E[X1|a] × E[X2|a] × E[X3|a]

ШАГ 2: Модель генерирует список кандидатов (возможных ответов)
        → Набор вариантов a1, a2, a3...

ШАГ 3: Для каждого кандидата модель оценивает каждую переменную отдельно
        → Числовые оценки E[X1], E[X2], E[X3] для каждого варианта

ШАГ 4: Модель вычисляет произведение O(a) и выбирает максимум
        → Финальный ответ a* с пояснением

🚀

Пример применения

Задача: Артём открывает первый розничный магазин и выбирает нишу. Хочет одновременно: высокую маржу, большой спрос в российских городах-миллионниках и низкий порог входа (до 500 тыс. рублей). Критерии конкурируют: высокая маржа часто означает дорогой вход, а массовый спрос — низкую маржу.

Промпт:

Я хочу, чтобы ты решил следующую задачу: выбрать нишу для розничного магазина 
в российском городе-миллионнике.

Формально, пусть K — это твои знания. Сюда входят все твои внутренние знания 
из параметров, а также любые внешние знания, которые я предоставлю.

Пусть P(A | K) — распределение вероятностей по возможным нишам при знаниях K. 
Пусть a — конкретная ниша.

Пусть X1 | A=a — переменная, представляющая маржинальность ниши a 
(оценка от 0 до 1: 0 — минимальная, 1 — максимальная маржа).

Пусть X2 | A=a — переменная, представляющая уровень потребительского спроса 
в российских городах-миллионниках для ниши a 
(оценка от 0 до 1).

Пусть X3 | A=a — переменная, представляющая доступность входа: вероятность, 
что стартовые вложения не превысят 500 000 рублей 
(вероятность от 0 до 1).

Твоя задача — найти оптимальную нишу a*, которая максимизирует:
O(a) = E[X1 | A=a] × E[X2 | A=a] × E[X3 | A=a]

Для этого:
1. Сгенерируй список из 7–10 ниш-кандидатов.
2. Для каждой ниши оцени E[X1], E[X2] и E[X3] по отдельности с пояснением 
   каждой оценки. Затем вычисли O(a).
3. Верни нишу a*, которая максимизирует O, с итоговой таблицей всех оценок.

Результат: Модель выдаст список 7–10 ниш с таблицей оценок — отдельная строка для каждого критерия и финальное произведение O(a). Будет видно почему, например, "спортивное питание" проиграло "детским товарам" — не потому что маржа ниже, а потому что произведение трёх факторов в совокупности оказалось меньше. Финальный выбор будет обоснован числами, а не "в целом кажется хорошим вариантом".


🧠

Почему это работает

LLM не умеет молча взвешивать несколько целей. Когда ты пишешь "найди выгодный и надёжный вариант", модель генерирует текст, который звучит как баланс — но реальных вычислений нет. Она не знает, что для тебя важнее: 80% надёжности при 60% выгоде или наоборот. Это как попросить советника "принеси лучшее" без критериев — он принесёт то, что ему кажется лучшим.

Зато модель умеет делать одно: оценивать что-то конкретное, когда его изолировали. "Насколько вероятно, что этот вариант удовлетворяет критерию X — оцени от 0 до 1" — это задача, с которой LLM справляется хорошо. Она не балансирует, она фокусируется на одном.

Формула делает следующее: убирает задачу "взвешивай несколько целей одновременно" и заменяет её задачей "оцени каждую цель по очереди, потом перемножь". Это переводит сложное в набор простых. Мультипликативная структура ещё и логична: если хотя бы один критерий близок к нулю — весь вариант проваливается, даже если остальные хорошие.

Рычаги управления: - Количество переменных → добавь X4, X5 для более тонкого контроля; убери лишние, если они не нужны — произведение больших чисел может смещать в сторону "усреднённых" вариантов - Шкала оценок → можно задать не 0–1, а 1–10 или вероятность в процентах — важно держать одну шкалу для всех переменных - Число кандидатов → увеличь до 15–20 для широкого поиска; уменьши до 3–5 если уже знаешь варианты и хочешь только сравнить - Описание переменных → чем точнее описание ("вероятность, что инвестиции не превысят 500 тыс. рублей"), тем калиброваннее оценка


📋

Шаблон промпта

Я хочу, чтобы ты решил следующую задачу: {описание задачи}.

Формально, пусть K — это твои знания. Сюда входят все твои внутренние знания 
из параметров, а также любые внешние знания из этого промпта или истории чата.

Пусть P(A | K) — твоё распределение вероятностей по возможным ответам при знаниях K. 
Пусть a — это один из возможных ответов.

Пусть X1 | A=a — переменная, представляющая {описание критерия 1} при ответе a 
(оценка от 0 до 1).

Пусть X2 | A=a — переменная, представляющая {описание критерия 2} при ответе a 
(оценка от 0 до 1).

Пусть X3 | A=a — переменная, представляющая {описание критерия 3} при ответе a 
(оценка от 0 до 1).

Твоя задача — найти оптимальный ответ a*, который максимизирует:
O(a) = E[X1 | A=a] × E[X2 | A=a] × E[X3 | A=a]

Для этого ты должен:
1. Сгенерировать набор из {число} кандидатов.
2. Для каждого кандидата оценить E[X1], E[X2] и E[X3] по отдельности, 
   используя свои знания, затем вычислить O(a).
3. Вернуть ответ a*, который максимизирует O, с таблицей всех оценок.

Что подставлять: - {описание задачи} — конкретная цель: "выбрать подрядчика", "порекомендовать книгу", "определить фичу для MVP" - {описание критерия X} — один измеримый аспект: "вероятность, что срок выполнения не превысит 2 недели", "ожидаемый уровень интереса для читателя-технаря 30 лет" - {число} — сколько вариантов искать (7–10 для открытого поиска, 3–5 если варианты уже известны)

Важно: каждый критерий описывай предельно конкретно. "Высокое качество" — плохо. "Вероятность, что клиент останется доволен и вернётся" — хорошо.


🚀 Быстрый старт — вставь в чат:

Вот шаблон UtilityMax Prompting. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить все поля.

[вставить шаблон выше]

LLM спросит какие критерии для тебя важны и как их измерить — потому что формула требует конкретных переменных, а не размытых пожеланий. Она возьмёт структуру из шаблона и подставит твои данные.


⚠️

Ограничения

⚠️ Только для топовых моделей: На слабых моделях (не уровня Claude Sonnet, GPT-4o, Gemini Pro) техника может работать хуже обычного промпта — модель не умеет делать откалиброванные вероятностные оценки. Авторы прямо оговаривают этот риск.

⚠️ Зависит от качества переменных: Если неправильно описал критерии — оптимизируешь не то. Выбросил важный фактор из формулы — модель его проигнорирует. "Мусор на входе — мусор на выходе" здесь особенно актуально.

⚠️ Не для субъективных задач: "Напиши красивый текст" нельзя разложить на независимые переменные без потери смысла. Техника работает там, где критерии можно сформулировать измеримо.

⚠️ Произведение наказывает средних: Если все критерии важны одинаково — мультипликативная формула будет предпочитать "хорошего по всем" вместо "отличного по одному, слабого по другому". Это фича, но нужно понимать.


🔍

Как исследовали

Команда взяла неплохой полигон для проверки — датасет MovieLens 1M с реальными оценками фильмов. Задача: по истории просмотров пользователя порекомендовать 10 фильмов из 50 кандидатов, причём пользователь хочет только комедии и только романтику — два конкурирующих фильтра поверх общего рейтинга.

Сравнивали три промпта: мягкий ("пользователь любит комедии и романтику"), жёсткий ("рекомендуй ТОЛЬКО комедии И романтику, ничего другого") и UtilityMax с формулой из трёх переменных — предсказанный рейтинг × вероятность жанра "комедия" × вероятность жанра "романтика". Тестировали на 20 пользователях по 20 запросов на каждого — всего 400 запросов на модель, на трёх топовых моделях.

Самая интересная находка: жёсткий промпт не стал лучше мягкого — у Claude он даже ухудшился по качеству ранжирования. Это важно: интуиция "если сказать строже — модель лучше выполнит" не работает. UtilityMax при этом стабильно выигрывал у обоих вариантов на всех трёх моделях — разрыв статистически значимый (p < 0.01). Улучшение у Claude составило ~12–19% в зависимости от метрики — заметный прирост, который пришёл только от смены структуры промпта.


💡

Адаптации и экстраполяции

🔧 Техника: добавь веса к переменным → управляй приоритетами

Если один критерий важнее других, измени формулу: O(a) = E[X1]^2 × E[X2] × E[X3]. Возведение в степень усиливает влияние нужной переменной. Это не в оригинале статьи — но логично вытекает из мультипликативной структуры.

🔧 Техника: бинарные переменные для жёстких условий-фильтров

Если критерий — "да/нет" (например, "бюджет до 1 млн рублей"), опиши переменную как вероятность от 0 до 1 что условие выполняется: P(бюджет ≤ 1 млн | a). При умножении это работает как мягкий фильтр — варианты, нарушающие условие, получают оценку, близкую к нулю, и автоматически выпадают.

🔧 Техника: двухэтапный поиск

Сначала прогони UtilityMax для широкого отбора (10–15 кандидатов), затем примени снова только к топ-3 с более детальным описанием каждой переменной. Грубый фильтр + тонкая калибровка.

🔧 Автоматическая декомпозиция через LLM

Авторы упоминают это как направление для будущих исследований — но попробовать можно уже сейчас. Спроси модель: "У меня задача {описание}. Помоги разложить её цель на 3–5 независимых измеримых критериев для UtilityMax Prompting". Получишь черновик переменных — потом дожми под свою задачу.


🔗

Ресурсы

Работа: UtilityMax Prompting: A Formal Framework for Multi-Objective Large Language Model Optimization — технический отчёт

Автор: Ofir Marom, независимый исследователь (ofiremarom@gmail.com)

Датасет: MovieLens 1M — F. Maxwell Harper, Joseph A. Konstan, 2015

Связанные техники из обзора: Chain-of-Thought (Wei et al., 2022), Program of Thoughts (Chen et al., 2023), Chain-of-Symbol (Hu et al., 2023), OPRO (Yang et al., 2024)


📋 Дайджест исследования

Ключевая суть

Напишешь «выгодный и надёжный вариант» — модель не взвешивает критерии. Она генерирует текст, который звучит как баланс. Реальных вычислений нет. UtilityMax позволяет получить честный выбор из нескольких конкурирующих целей — не имитацию, а математику. Каждый критерий превращается в переменную X1, X2, X3 — модель оценивает их по очереди, потом перемножает. Важный момент: жёсткая формулировка типа «найди ТОЛЬКО выгодный И надёжный» не спасает — эксперименты показали, что иногда даёт результат хуже мягкой версии. Двусмысленность никуда не уходит, просто фиксируется жёстче.

Принцип работы

Не одно размытое требование — а несколько изолированных оценок. Модель оценивает одно конкретное хорошо. Плывёт — когда целей несколько в одном предложении. Формула O(a) = E[X1] × E[X2] × E[X3] разделяет эти задачи: сначала список кандидатов, потом отдельная оценка каждого критерия, потом перемножение. Мультипликативная структура добавляет жёсткую логику: если один критерий близок к нулю — весь вариант проваливается. Даже если остальные высокие.

Почему работает

LLM — текстовый генератор, не вычислитель. При «выгодном и надёжном» она ищет слова, которые описывают и то и другое одновременно. Никакого реального сравнения нет. «Оцени вероятность, что вход не превысит 500 тысяч» — это уже конкретная проверяемая задача. Изолированная оценка попадает в зону где модель реально сильна. Авторы проверили жёсткие формулировки — не помогает. Двусмысленность остаётся в той же точке, просто выглядит строже.

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

Выбор из нескольких вариантов с конкурирующими критериями — ниша для бизнеса, подрядчик, идея для продукта, книга из списка, инструмент для команды. Особенно хорошо работает когда критерии можно сформулировать измеримо: «вероятность что срок не превысит 2 недели» вместо «быстро». НЕ подходит для субъективных задач — «напиши красивый текст» нельзя разложить на независимые числа без потери смысла. Только для топовых моделей: GPT-4o, Claude Sonnet, Gemini Pro — остальные не дают точных числовых оценок и техника работает хуже обычного промпта.

Мини-рецепт

1. Опиши задачу: одно предложение — что выбираешь и из какого контекста.
2. Сформулируй критерии: каждый — отдельная переменная X1, X2, X3 с описанием и шкалой 0–1. Пиши конкретно: не «качество», а «вероятность что клиент вернётся повторно».
3. Задай формулу: O(a) = E[X1|a] × E[X2|a] × E[X3|a] — это и есть инструкция оптимизировать произведение, а не «быть хорошим».
4. Попроси список и оценки: 7–10 кандидатов, для каждого — числа по каждому критерию отдельно, итоговое произведение, финальный выбор с таблицей.
5. Если критериев много (5+): убедись что все действительно нужны. Каждый лишний критерий срезает произведение и смещает выбор в сторону «середнячков».

Примеры

[ПЛОХО] : Посоветуй нишу для розничного магазина — чтобы была хорошая маржа, высокий спрос и небольшой порог входа
[ХОРОШО] : Реши задачу: выбрать нишу для розничного магазина в российском городе-миллионнике. Пусть K — твои знания. Пусть a — возможная ниша. X1|a — маржинальность ниши (0–1, где 1 — максимальная маржа). X2|a — уровень потребительского спроса в городах-миллионниках (0–1). X3|a — вероятность что стартовые вложения не превысят 500 000 рублей (0–1). Найди a*, которая максимизирует: O(a) = E[X1|a] × E[X2|a] × E[X3|a] 1. Сгенерируй 8 ниш-кандидатов. 2. Для каждой оцени X1, X2, X3 отдельно с пояснением. Вычисли O(a). 3. Верни финальный выбор с таблицей всех оценок.
Источник: UtilityMaxPrompting: A Formal Framework for Multi-Objective Large Language Model Optimization
ArXiv ID: 2603.11583 | Сгенерировано: 2026-03-13 04:25

Проблемы LLM

ПроблемаСутьКак обойти
Модель сама решает, что важнее, когда целей несколькоПишешь "найди выгодный, но надёжный вариант". Модель генерирует текст, который звучит как баланс. Но реальных вычислений нет. Она не знает, что важнее: 80% надёжности при 60% выгоде — или наоборот. Это её интерпретение, не твоё. Работает для любой задачи с двумя и более конкурирующими критериямиОпиши каждый критерий как отдельную переменную X1, X2, X3. Попроси модель оценить каждый по очереди от 0 до 1. Потом перемножить оценки и выбрать максимум. Модель перестаёт балансировать — начинает измерять

Методы

МетодСуть
Формула вместо списка требований — оценка через произведениеОписываешь каждый критерий как переменную: X1 — маржа, X2 — спрос, X3 — доступность. Задаёшь формулу: O(a) = E[X1] × E[X2] × E[X3]. Просишь: 1) сгенерировать 7–10 вариантов, 2) оценить каждую переменную отдельно от 0 до 1, 3) перемножить и выбрать максимум. Почему работает: модель плохо балансирует несколько целей одновременно, но хорошо оценивает один изолированный критерий. Формула разбивает одну сложную задачу на несколько простых. Мультипликативная структура добавляет логику: если один критерий близок к нулю — весь вариант проваливается, даже при хороших остальных. Когда работает: критерии можно описать измеримо ("вероятность, что бюджет не превысит 500 тыс."). Не работает: субъективные задачи ("напиши красивый текст"), слабые модели (ниже уровня GPT-4o, Claude Sonnet). Рычаги: добавь X4, X5 для тонкого контроля; уточни шкалу (0–1 или 1–10, главное — одинаково для всех); меняй число кандидатов (3–5 для сравнения известных, 15–20 для широкого поиска)

Тезисы

ТезисКомментарий
Жёсткая формулировка не убирает двусмысленность — иногда делает хужеКажется, что если написать "найди ТОЛЬКО выгодный И надёжный" — станет точнее. Нет. Двусмысленность остаётся. Просто жёстче фиксируется неправильная интерпретация. Результат иногда хуже мягкой формулировки. Применяй: не ужесточай формулировку при нескольких целях — структурируй. Разбей одно требование на отдельные переменные
📖 Простыми словами

UtilityMaxPrompting: A Formal Framework for Multi-ObjectiveLargeLanguageModelOptimization

arXiv: 2603.11583

Суть UtilityMaxPrompting в том, что нейронки катастрофически плохо справляются с многозадачностью «в уме». Когда ты просишь AI найти вариант, который будет одновременно дешевым, качественным и быстрым, модель просто генерирует текст, который похож на сбалансированный ответ. На деле же она не считает веса и приоритеты, а просто гадает, пытаясь угодить всем словам в промпте сразу. В итоге ты получаешь среднее арифметическое между «плохо» и «никак», потому что нейронка не понимает математическую суть компромисса.

Это как прийти к риелтору и сказать: «Хочу квартиру в центре, с евроремонтом, но за копейки». Риелтор кивнет и покажет тебе либо сарай в центре, либо дворец в пригороде, потому что он не знает твою функцию полезности. Без четкой формулы, что для тебя важнее — сэкономить лишний миллион или не тратить час на дорогу — любой совет будет пальцем в небо. UtilityMax заставляет модель перестать быть вежливым советчиком и превращает её в калькулятор, который сначала оцифровывает твои хотелки, а потом выдает результат.

Работает это через жесткую декомпозицию: ты заставляешь модель разбить абстрактное «хорошо» на конкретные переменные полезности. Вместо того чтобы выдать готовый ответ, AI сначала оценивает каждый вариант по шкале (например, от 0 до 1) для каждого критерия отдельно. Если Артём ищет нишу для магазина, модель выставляет баллы за маржу, спрос и порог входа. Затем эти оценки перемножаются или суммируются по заданной формуле, и только вариант с максимальным итоговым баллом признается победителем. Весь процесс происходит внутри одного промпта, заставляя модель «рассуждать» через числа, а не через эпитеты.

Хотя метод тестировали на бизнес-задачах, принцип универсален. Его можно натравить на выбор отеля, подбор стека технологий для проекта или даже на написание кода, где нужно соблюсти баланс между скоростью работы и читаемостью. Везде, где есть конфликт интересов (хочу быстро, но чтобы не сломалось), обычный промпт выдаст кашу, а UtilityMax — математически обоснованный выбор. Это переход от интуитивного «мне кажется» к системному многокритериальному анализу силами текстовой модели.

Короче: хватит надеяться, что AI сам догадается, какой критерий для тебя важнее. Если задача сложнее, чем «напиши пост про котиков», используй UtilityMax: выноси критерии в переменные, заставляй модель ставить оценки и считай итоговую пользу. Либо ты сам задаешь правила игры, либо получаешь галлюцинацию о компромиссе, которая в реальности не работает. Оцифруй свои приоритеты, иначе нейронка просто выберет самый «красиво звучащий» вариант, который по факту окажется полной фигней.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с