В каждой команде, строящей продукт поверх передовых LLM, регулярно проходит один и тот же тип встречи. Кто-то приносит последнюю таблицу лидеров бенчмарка benchmark leaderboard. Кто-то другой отмечает, что ранжирование с прошлого месяца снова перемешалось. Третий участник замечает, что модель, которую сейчас использует их команда, опустилась на две позиции по некоторой метрике, о которой они три недели назад вовсе не слышали. К концу встречи никто не понимает, стоит ли мигрировать, и разговор переносят на следующий квартал.
Проблема этой встречи не в людях. Дело в том, что бенчмарки измеряют синтетические задачи, а ваш продукт — не синтетическая задача. Таблица лидеров показывает, как модель выступает на MMLU, на SWE-bench Verified, на GPQA Diamond — тестах, спроектированных исследователями так, чтобы их можно было сравнивать между моделями. Ни один из этих тестов не похож на те подсказки, которые ваше приложение реально отправляет в продакшене. Ни один из них не отражает, как модель справляется с тем типом грязного, специфичного для домена ввода, который генерируют ваши пользователи.
Этот материал демонстрирует ровно то упражнение, которое бенчмарки сделать не могут. Три конкретных промпта, предназначенные для отправки в GPT-5.5, Claude Sonnet 4.6 и Gemini 3.1 Pro через одну и ту же совместимую с OpenAI конечную точку, с одинаковыми настройками температуры и без дополнительного промптинга. Промпты охватывают три категории, с которыми сталкивается большинство продакшен-нагрузок: структурированная экстракция из «грязного» документа, планирование с тяжелым рассуждением и генерация кода под ограничениями. Наблюдения ниже — это поведенческие паттерны, о которых команды, выполняющие такое сравнение, стабильно сообщают, — паттерны, которые вы увидите сами, если запустите эти промпты у себя.
В таблицах лидеров эти три модели отличаются на 0,8 процентного пункта по SWE-bench Verified. На практике они ведут себя очень по‑разному. Выбор между ними — не о том, кто набирает больше очков в бенчмарках, а о том, какой поведенческий паттерн лучше подходит под вашу нагрузку.
Что измеряют бенчмарки и что они упускают
Бенчмарки существуют, потому что это необходимо. Провайдерам моделей нужны стандартизированные тесты, чтобы заявлять о возможностях, исследователям — чтобы публиковать сравнения, а всем остальным — чтобы иметь хоть какую-то объективную точку отсчета для оценки моделей. Они полезны. Но они также неполны в аспектах, важных для продакшена.
Есть три конкретных ограничения, о которых стоит сказать прямо, потому что каждое из них проявится в примерах промптов ниже.
- Бенчмарки измеряют изолированные способности, а не поведенческие паттерны. SWE-bench Verified говорит вам, может ли модель решить определенный тип GitHub‑задачи. Он не говорит, склонна ли модель переусложнять простые проблемы, задает ли уточняющие вопросы при неоднозначном промпте или выдает ли с первого раза результат в запрошенной вами структуре. Это то, что вы будете наблюдать ежедневно в продакшене.
- Под бенчмарки тюнят. Когда релиз модели заметно подчеркивает ее результат на конкретном бенчмарке, это сигнал, что модель как минимум частично оптимизировали под этот бенчмарк. Фактическая производительность в реальном мире и производительность в бенчмарке могут расходиться — иногда существенно — как только модель покидает условия, для которых был создан бенчмарк.
- Бенчмарки агрегируют. Разница в 0,8 п.п. по SWE-bench Verified может скрывать тот факт, что Модель A сильно лучше в одной конкретной категории задач и хуже в другой, в то время как Модель B стабильно ровная по всему спектру. Агрегация сворачивает информацию, которая вам нужна для принятия решения.
Упражнение ниже как раз призвано поднять на поверхность ту информацию, которую агрегирование скрывает. Задача не в том, чтобы объявить победителя — а в том, чтобы показать, какие вопросы вы должны задавать, когда запускаете то же самое упражнение на своих промптах.
Настройка
Три промпта, выбранные потому, что они соответствуют категориям, которые покрывают большинство продакшен-нагрузок. Настройка: каждый промпт отправляется во все три модели с одинаковыми параметрами (temperature 0.3, без переопределения системного промпта, формат ответа по умолчанию), доступ через единую совместимую с OpenAI конечную точку, чтобы сравнение было «яблоки с яблоками» — без SDK‑особенностей конкретного провайдера, без разного маппинга параметров, без риска, что одна модель получит особое отношение из‑за того, как сформирован запрос.
Сами промпты ниже — в виде блоков кода, которые можно скопировать и запустить. Поведенческие описания, которые следуют за каждым из них, — это паттерны, которые команды стабильно фиксируют при таком сравнении, паттерны, задокументированные во множестве сторонних исследований в 2026 году и такие, которые вы должны ожидать увидеть сами, запуская эти промпты у себя. Запустить самому — в этом и состоит смысл; статья дает вам рамку и стартовые промпты, чтобы это сделать.
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["COMET_API_KEY"], # or replace with your API key
base_url="https://api.cometapi.com/v1", # one endpoint, multiple models
)
MODELS = [
"gpt-5.5",
"claude-sonnet-4-6",
"gemini-3.1-pro",
]
def run_comparison(prompt: str, temperature: float = 0.3) -> dict[str, str]:
"""
Send the same prompt to all three models and return their responses.
"""
responses = {}
for model in MODELS:
result = client.chat.completions.create(
model=model,
messages=[
{
"role": "user",
"content": prompt,
}
],
temperature=temperature,
)
responses[model] = result.choices[0].message.content
return responses
# Example usage
if __name__ == "__main__":
prompt = "Summarise the key risks in this contract."
outputs = run_comparison(prompt)
for model, response in outputs.items():
print(f"\n--- {model} ---")
print(response)
Промпт 1: Структурированная экстракция из «грязного» документа
Это «хлеб с маслом» для половины LLM‑функций, вышедших в 2026 году. Взять неструктурированный ввод — письмо, тикет в поддержку, транскрипт встречи, скан формы — и извлечь конкретные поля в структурированный объект. Промпт ниже просит каждую модель извлечь семь полей из намеренно «грязного» письма в поддержку, содержащего частичную информацию, конфликтующие сигналы и одно поле, которого в источнике вовсе нет.
Промпт
You are processing customer support emails. Extract the followingseven fields from the email below into a JSON object with exactlythese keys: - customer_name (string)- order_id (string)- issue_type (one of: "shipping", "product_quality", "billing", "returns", "other")- urgency (one of: "low", "medium", "high")- requested_action (string)- affected_product (string)- escalation_history (any prior contact about this issue, if mentioned)
Email:---Hi there, I'm writing about order #FT-2289334 from last Tuesday. The Cascadehiking boots I received are NOT the size 11 I ordered — they'reclearly size 10 (I can see the label inside). I have a guided trekbooked in 5 days and I genuinely don't know what to do. I've beena customer for years and this is the first time something likethis has happened. Can you sort this out urgently? I'd prefer a same-day exchange ifat all possible. I'm in Manchester. Margaret W.--- Return only the JSON object. No commentary, no markdown code fences.
На что смотреть
Три вещи. Во‑первых, соблюдает ли модель запрошенную JSON‑схему без выдумок. Во‑вторых, как модель обрабатывает поле, которого нет в исходнике (escalation_history — клиент не упоминает предыдущих обращений по этой конкретной проблеме): признает отсутствие или правдоподобно выдумывает? В‑третьих, добавляет ли модель комментарии вне JSON, что потребует последующей очистки парсингом. Поле urgency тоже стоит отметить: «5 дней» — это не «прямо сейчас», но клиент явно нервничает, что оставляет место для интерпретации.
Что команды стабильно отмечают при запуске этого теста
GPT-5.5. Обычно с первого раза выдает чистый JSON. Соблюдение схемы сильное: каждый запрошенный ключ присутствует, формат парсится без предобработки. Для отсутствующих полей GPT-5.5 склонен возвращать явный null. Обычно не оборачивает JSON в markdown‑фенсы и не добавляет пояснительный текст, что упрощает дальнейшую обработку. В неоднозначных интерпретациях, как здесь с приоритетом, GPT-5.5, как правило, более консервативен, чем два других: там, где Claude и Gemini могут поставить «high» по эмоциональному тону клиента, GPT-5.5 чаще опирается на конкретный 5‑дневный горизонт и выбирает «medium».
Claude Sonnet 4.6. Также выдает чистый JSON и обычно наиболее педантично следует запрошенной схеме. Там, где GPT-5.5 оставляет отсутствующее поле равным null, Claude часто добавляет незапрошенные поля, сигнализирующие о проблемах качества данных — например, «notes» или «data_quality_notes», которых не просили, но в них действительно полезная информация. Это полезно для ручной проверки, но ломает ваш пайплайн, если последующий парсер строго проверяет схему. Повторяющийся паттерн Claude: высокое качество, но иногда сверх того, что просили в промпте, — требуется явно ограничивать в промпте.
Gemini 3.1 Pro. Обычно выдает самый «экономный» результат из трех. Все запрошенные поля, без лишних, без окружающего текста. Соблюдение схемы — ровно как просили. Один нюанс: для отсутствующих полей Gemini склонен возвращать пустую строку вместо null. Строгие JSON‑парсеры, различающие это, заметят разницу; «мягкие» — нет. Поведение достаточно стабильно между прогонками, чтобы считать это предпочтением модели, а не артефактом.
Что это говорит вам
Все три модели умеют структурированную экстракцию. Различия — в поведенческих деталях вокруг запрошенной схемы. Если ваша последующая система строго относится к схеме и рассматривает лишние поля как ошибку, безопаснее выбрать Gemini 3.1 Pro или GPT-5.5. Если вы хотите, чтобы модель поднимала проблемы качества данных без явного запроса, Claude Sonnet 4.6 окажется полезнее. Ничего из этого не видно в бенчмарках.
Промпт 2: Задача планирования с тяжелым рассуждением
Этот промпт просит модели спланировать многоступенчатое исследование: исследовательский вопрос с тремя неявными ограничениями, которые внимательная модель должна выявить до разбиения работы по шагам. Тип задачи, которую агентное приложение делегировало бы LLM как шаг планирования до вызова каких‑либо инструментов.
Промпт
I'm trying to answer this research question for my team: "Is our customer churn rate higher among users who haven't usedfeature X in the last 30 days?" Produce a plan for how to investigate this. The plan should:- Identify the steps required- Sequence them with dependencies- Be actionable for a data analyst on my team Return the plan in clear, structured form.
Неявные ограничения, на которые стоит смотреть: вопрос не определяет, что именно значит «churn» («отток») — закрытие аккаунта? отсутствие логинов? отсутствие покупок? — он не указывает, как контролировать смешивающие факторы (пользователи с низким вовлечением уходят по многим причинам, не связанным с feature X), и не задает базовую группу сравнения. Внимательный планировщик должен поднять все три до того, как сформирует шаги.
На что смотреть
Действительно ли модель продумывает задачу или выдает правдоподобную последовательность шагов, которая разваливается при проверке. Выявляет ли она неявные ограничения без подсказки. И корректно ли простроены зависимости между шагами — план, который выглядит нормально, но где третий шаг зависит от результата пятого, бесполезен на практике.
Что команды стабильно отмечают при запуске этого теста
GPT-5.5. Обычно выдает наиболее пригодный к исполнению план. Ход рассуждений виден — GPT-5.5 перечисляет свои предположения о неявных ограничениях (определение оттока, контрольная группа, смешивающие факторы) до выкладки шагов, что облегчает выявление расхождения с ожидаемым толкованием. Зависимости шагов надежно отмечены и проставлены. Часто добавляет раздел с указанием, какие шаги можно параллелить; это не просили, но добавляет реальную пользу. Это тот тип задачи, где проявляется обучение GPT-5.5 под инструментальное использование и агентные сценарии — планирование сформировано с учетом дальнейшего исполнения.
Claude Sonnet 4.6. Часто выдает самый «вдумчивый» план — в прямом смысле. План Claude нередко включает соображения, которых две другие модели не поднимают. В таком вопросе Claude, скорее всего, отметит методологическую проблему корреляции vs причинности, укажет, что «не использовали feature X» может быть симптомом оттока, а не причиной, и явно зафиксирует ограничения, которые не были проговорены, но на которые должен обратить внимание внимательный аналитик. Минус: план может быть длиннее необходимого, а отдельные шаги — переусложненными относительно задачи. Это согласуется с поведением Claude в других местах — экспертная тщательность, иногда сверх требуемого.
Gemini 3.1 Pro. Обычно выдает самый чисто структурированный план, с наиболее ясным графом зависимостей. Качество рассуждения высокое — Gemini стабильно выявляет неявные ограничения, декомпозирует проблему в защитимую последовательность и выдает пошаговые инструкции, которые реально можно исполнить. Недостаток: план может выглядеть несколько механистично. Он справляется с задачей, но обычно не поднимает методологических тонкостей, которые отмечает Claude, и не добавляет инсайтов о параллелизации, характерных для GPT-5.5. Это соответствует более широкому паттерну Gemini — силен в рассуждении, более «ремесленный» в сопутствующих суждениях.
Что это говорит вам
Качество рассуждения на этой задаче у всех трех моделей высокое. Различия — в сопутствующем поведении, в том, что модель добавляет сверх буквальной просьбы. GPT-5.5 добавляет операционную прагматику (параллелизация, подсказки по исполнению). Claude добавляет экспертную заботу (методология, крайние случаи, статистические нюансы). Gemini добавляет ясность и лаконичность. Ни один вариант не «неправилен». Что подойдет вашему приложению, зависит от того, что вы хотите, чтобы модель делала после завершения задачи, которую вы ей поставили.
Промпт 3: Генерация кода с конкретными ограничениями
Этот промпт просит модели реализовать небольшую, но нетривиальную функцию: Python‑функцию, которая принимает список событий с отметками времени и возвращает самый длинный разрыв между последовательными событиями, учитывая четыре крайних случая. Ограничения явны; цель — протестировать генерацию кода под ограничениями, а не потолок возможностей — каждую модель хватит на эту функцию. Разница — в том, как они соблюдают ограничения.
Промпт
Write a Python function that takes a list of timestamped events andreturns the longest gap (in seconds) between consecutive events. Requirements:- Function signature: longest_gap(events: list[datetime]) -> float- Handle these edge cases: 1. Empty list (return 0.0 or raise — your choice, but be consistent) 2. Single event 3. Duplicate timestamps 4. Unsorted input- Use only the standard library- Include type hints- Return just the function. No tests or usage examples.
На что смотреть
Покрывает ли модель все четыре крайних случая или молча упускает некоторые. Точны ли тайп‑хинты или формальны. Выбирает ли реализацию на основе защитимого алгоритма (сортировка, затем линейный проход) или что-то экзотическое. И соблюдает ли модель ограничение «без тестов и примеров использования» в конце промпта — это тот тип поздней инструкции, которую модели с сильным следованием инструкциям соблюдают, а более слабые — тихо нарушают.
Что команды стабильно отмечают при запуске этого теста
GPT-5.5. Обычно выдает наиболее тщательно проработанный код. Все четыре крайних случая обработаны явными ветвлениями, тайп‑хинты точны (часто включая Optional или Union для возвращаемых значений в крайних случаях), и присутствует докстринг с примерами вызовов. Реализация обычно выбирает очевидный алгоритм — сортировка, проход, отслеживание максимального разрыва — и корректна. Полезно знать: GPT-5.5 часто добавляет юнит‑тесты или примеры использования, даже если в промпте явным образом просили вернуть только функцию. Это издержки «операционно прагматичных» моделей — они добавляют то, что, по их мнению, вам пригодится, даже если вы просите этого не делать.
Claude Sonnet 4.6. Обычно выдает наиболее читаемый код. Функция лаконична, крайние случаи обработаны через аккуратные guard‑clauses в начале, тайп‑хинты точные и минимальные. Claude часто добавляет продуманный комментарий, объясняющий выбор, который промпт оставил открытым — например, дубликаты временных меток трактуются как разрывы нулевой длины и объясняется почему, что является защитимым решением, которое в промпте не было задано. Claude чаще, чем GPT-5.5, соблюдает ограничение «без тестов». Сама функция — наиболее сопровождаемая из трех. Это согласуется с репутацией Claude по качеству кода: чисто, идиоматично, на уровне эксперта.
Gemini 3.1 Pro. Обычно выдает самый экономный код из трех. Функция корректна, крайние случаи обработаны, реализация самая короткая. Докстринг обычно в одну строку. Тайп‑хинты присутствуют и точны. Решение Gemini редко включает тесты или развернутые комментарии и не переусложняет — ровно то, что просили. Если разработчику нужна рабочая функция, а тесты он добавит отдельно, это самый прямой путь. Если разработчик хочет, чтобы модель сделала и сопутствующую работу, две другие добавят больше (даже если вы просили этого не делать).
Что это говорит вам
Все три модели могут написать эту функцию. Поведенческая разница — в том, сколько сопутствующей работы каждая модель делает сверх буквальной просьбы и насколько строго соблюдает явные «не добавлять X» ограничения. GPT-5.5 склонен к обстоятельности, даже когда ее отменили в промпте. Claude склонен к «ремеслу» (читаемый код, вдумчивые комментарии по спорным моментам). Gemini склонен к экономии (сделать ровно то, что просили, и ничего больше). Для агентных рабочих процессов, где вывод модели напрямую попадает в продакшен‑код, желаемое поведение зависит от того, что ожидает ваша последующая ревью‑процедура, и от того, насколько строго вам нужно соблюдение запретительных инструкций.
Возникающие паттерны
По трем промптам выше проявляются три стабильных поведенческих паттерна, отмеченные в сравнительных исследованиях и отчетах разработчиков, опубликованных в 2026 году. Это не заявления о «возможностях» — каждая модель справляется с каждой задачей на высоком уровне. Это тенденции, такие, которые видны только тогда, когда команды наблюдают, как одна и та же модель обрабатывает десятки промптов. Запустите промпты выше у себя — увидите те же паттерны; статья дана, чтобы у вас была рамка и понимание, на что смотреть.
| Model | Behavioural tendency | Fits best when… |
|---|---|---|
| GPT-5.5 | Операционно прагматичен. Добавляет подсказки для исполнения, защитное программирование и вывод, удобный для дальнейшей обработки. Силен в задачах, сформированных под инструменты и агентные сценарии. | Ваше приложение конвейерит вывод модели в дальнейшее исполнение — агенты, рабочие процессы или пайплайны, где следующий шаг автоматизирован. |
| Claude Sonnet 4.6 | Экспертная тщательность. Поднимает вопросы вне буквальной просьбы, отмечает этику и методологию, выдает очень читаемый код. | В вашем приложении человек просматривает результат модели — генерация контента, код‑ревью, аналитика, где важна «ремесленная» качество. |
| Gemini 3.1 Pro | Экономичен и прямолинеен. Делает ровно то, что просили, и ничего больше. Самое чистое соблюдение схемы и наименьший токен‑вывод при равном объеме работы. | У приложения строгие требования к формату вывода, приоритет — предсказуемая стоимость, или вы хотите, чтобы модель была точным инструментом, а не «напарником». |
Важная оговорка. Это тенденции, а не правила. Каждую модель можно направить к любому из этих поведений соответствующим промптингом — достаточно подробный системный промпт заставит Gemini добавить тесты, ограничит Claude до «минимума» или заставит GPT-5.5 пропустить юнит‑тесты. Важен дефолт — что каждая модель делает «с коробки», до вашего руления. Именно с дефолтным поведением вы и живете в продакшене, если не противодействуете ему активно.
Как протестировать на своей нагрузке
Упражнение выше воспроизводимо под любую нагрузку — и его стоит сделать. Бенчмарк‑баллы полезны как первичный фильтр, но поведенческие паттерны, значимые для вашего конкретного приложения, видны только тогда, когда вы наблюдаете, как модели справляются с вашими конкретными промптами.
Практическое руководство по запуску упражнения на вашем трафике:
- Выберите три репрезентативные категории промптов. Не три случайных — три категории, покрывающие вашу нагрузку. Большинство продакшен‑систем разлагаются на несколько типов промптов (экстракция, классификация, генерация, рассуждение, код, суммаризация). Выберите категории, на которые приходится основная часть трафика.
- Подберите 20–30 примеров на категорию. Желательно из реального трафика. Анонимизируйте, где нужно. Важно, чтобы промпты выглядели как то, что видит ваше приложение, а не как задания из бенчмарков. Двадцати примеров на категорию достаточно, чтобы увидеть паттерны; тридцати — чтобы увериться.
- Прогоните через одну конечную точку, все модели. Совместимая с OpenAI агрегирующая конечная точка радикально ускоряет процесс по сравнению с запуском каждой модели через свой SDK. Код в начале статьи — это вся настройка. Одна и та же температура, те же параметры, тот же промпт — различия в выводе — это различия моделей.
- Оценивайте сначала качественно, потом количественно. Сначала посмотрите на вывод глазами. Поведенческие паттерны обычно очевидны уже после первого десятка промптов. Когда сформируется гипотеза о том, как каждая модель ведет себя на вашей нагрузке, тогда можно строить рубрику для оценки — но гипотеза рождается из наблюдения, а не из готового шаблона.
- Обращайте внимание на то, что модель добавляет. Вопрос бенчмарка — получает ли модель правильный ответ. Поведенческий вопрос — что еще она делает. Добавляет ли тесты? Объясняет ли рассуждения? Поднимает ли риски? Выдает ли дополнительные поля, которых вы не просили? Здесь и живут различия моделей.
- Выбирайте модель, которая соответствует вашему последующему процессу. Если у вас дальше автоматизация, вам нужна модель, чье дефолтное поведение дает чистый, парсируемый вывод. Если у вас дальше ручная проверка, вам нужна модель, чье дефолтное поведение добавляет тот тип суждений, который хочет видеть ревьюер. Правильный ответ зависит от того, что происходит после модели.
Заключение
Выбор между GPT-5.5, Claude Sonnet 4.6 и Gemini 3.1 Pro — не о том, какая модель «лучше». Это о том, какая модель соответствует форме вашей нагрузки — а эту форму бенчмарки увидеть не могут. Упражнение выше можно выполнить за один день, если у вас уже собраны промпты; ценность в том, что вы перестаете гадать и начинаете наблюдать.
Для команд, которые запускают упражнение сами: самый простой сетап — единая совместимая с OpenAI конечная точка, которая предоставляет доступ ко всем трем моделям через одни учетные данные. CometAPI — один из вариантов: вы направляете существующий OpenAI SDK на другой base URL, и переменной становится лишь параметр model. Партнерский материал, The 2026 LLM API Pricing Comparison, покрывает стоимость — вместе они дают поведенческую и финансовую картину, необходимую для взвешенного выбора.
Бенчмарки говорят, что модель может делать. Поведенческие паттерны говорят, что модель будет делать по умолчанию на ваших промптах. Первый ответ — опубликован. Второй — вам нужно наблюдать самим. Двадцать промптов на категорию, один день — и у вас будет ответ, которого не даст ни одна таблица лидеров.
Готовы интегрироваться надежно? Загляните на CometAPI и API doc — бесшовный доступ к Claude Fable 5 наряду с другими передовыми моделями, единое биллингование и надежность уровня Enterprise. Регистрируйтесь сегодня и начните с щедрых кредитов для новых пользователей — ваш следующий прорывной проект уже ждет.
