Промптинг для каждой модели
Оптимизация промптов для Claude, GPT, Gemini и open-source моделей
Проблема: Вы написали отличный промпт, который идеально работает на ChatGPT, но на Claude результат хуже. На Llama системное сообщение полностью игнорируется. Почему?
Решение: Говорите на диалекте каждой модели
Гайд по промптингу под конкретную модель — это практика адаптировать одну и ту же задачу под соглашения, на которых обучалась каждая семья LLM, вместо того чтобы везде переиспользовать один универсальный промпт. Архитектура моделей у разных провайдеров похожа — трансформер, предсказывающий следующий токен, — но обучающие данные, инструкционное дообучение и рекомендованное форматирование различаются. Именно из-за этого промпт, который блестит на одной модели, на другой может давать посредственный результат. Представь, что это один язык, но разные диалекты: грамматика общая, а идиомы, пунктуация и нормы вежливости — нет.
Как это работает
Каждый провайдер документирует форматирование, которое совпадает с тем, как модель дообучали. Anthropic советует оборачивать секции промпта в XML-теги вроде <document> и <instructions>, потому что Claude обучался на данных, где такая структура несла смысл, и он строго следует системному промпту (system prompt). Модели GPT от OpenAI опираются на markdown-заголовки, нативный function calling и JSON mode для структурированного вывода. Gemini от Google — выраженно мультимодальная (multimodal) модель, ей лучше, когда изображения стоят в начале промпта, плюс search grounding для свежих фактов. Open-source модели (Llama, Qwen, DeepSeek) ждут точный chat template со спец-токенами вроде <|im_start|> / <|im_end|>; пропустишь шаблон — и модель может полностью проигнорировать твоё системное сообщение. Размер контекстного окна (context window) тоже сильно различается — от нескольких тысяч токенов на маленьких open-source моделях до 200K–1M на флагманах, — так что длина промпта тоже часть диалекта.
Когда использовать, компромиссы и разбор примера
Адаптируй под модель всегда, когда в продакшене важны качество, стоимость или надёжность, — и особенно когда ты поддерживаешь сразу несколько провайдеров за одной фичей. Главный компромисс — поддержка: вести параллельные варианты промпта дороже, чем один общий шаблон, а провайдеры со временем меняют дефолты, поэтому гайды устаревают. Частая ловушка — установка «один промпт для всех», а ещё перенос XML-каркаса на GPT (где чище читается markdown) или отказ от chat template на open-source модели. Разбор примера: допустим, ты извлекаешь сумму счёта из PDF. На Claude ты положишь файл в теги <document> и попросишь ответ внутри тегов <total>. На GPT — включишь JSON mode и опишешь функцию, возвращающую {"total": number}. На Gemini — приложишь изображение первым, а инструкцию после. Одна задача, три диалекта — и заметно лучше результат, чем прогонять все три через один промпт.
Представьте это как разговор на разных диалектах одного языка:
- 1. Изучите родной формат модели: Claude → XML-теги, GPT → markdown/JSON, Gemini → структурированные шаблоны, Open-source → chat templates со спец. токенами
- 2. Используйте уникальные фичи модели: Claude: предзаполненные ответы ассистента. GPT: function calling, JSON mode. Gemini: search grounding, image-first мультимодальность. Llama: LoRA-адаптеры.
- 3. Адаптируйте длину и структуру: Claude и Gemini хорошо работают с длинным контекстом (200K-1M). GPT лучше с фокусированными, краткими промптами. Open-source модели теряют качество после 8-32K токенов.
- 4. Тестируйте и сравнивайте: Запустите одну задачу на нескольких моделях, сравните результаты, затем оптимизируйте промпт под сильные стороны выбранной модели
Форматы промптов для каждой модели
- Claude (Anthropic): XML-теги для структуры, extended thinking, контекст 200K, предзаполненные ответы, строгое следование системному промпту
- GPT-4 / GPT-5 (OpenAI): JSON mode, function calling, предпочтителен markdown, приоритизация инструкций (последние важнее)
- Gemini (Google): Настоящая мультимодальность (изображения в начало промпта), контекст 1M+ токенов, search grounding, шаблоны промптов повышают точность на 40%
- Open-source (Llama, DeepSeek, Qwen): Обязательны chat templates (im_start/im_end), явное форматирование, короткие промпты работают лучше, формат system prompt зависит от модели
- Частая ловушка: один промпт для всех: Промпт, оптимизированный для GPT-4, может давать на 20-30% худший результат на Claude, потому что Claude ожидает XML-структуру, а не markdown-заголовки. Всегда адаптируйтесь под модель.
Интересный факт: Claude специально обучался на данных с XML-структурой, поэтому оборачивание секций промпта в теги вроде <instructions>, <context>, <output_format> значительно улучшает результаты. Модели GPT, напротив, лучше работают с markdown-заголовками (## Instructions) — использование XML на GPT на самом деле ухудшает «читаемость» для модели.
Попробуйте сами!
Изучите интерактивное сравнение ниже, чтобы увидеть, как одна и та же задача оформляется по-разному для каждой модели, и узнайте их уникальные фичи.
Промптинг для каждой модели
- • Длинный контекст (200K токенов)
- • XML-структурированные промпты
- • Extended thinking
- • Строгое следование system prompt
XML-теги: <instructions>, <context>, <examples>, <output_format>
- ✦ Предзаполненные ответы ассистента
- ✦ Парсинг XML-тегов обучен в модели
- ✦ Chain-of-thought через extended thinking
- • Function calling и tool use
- • JSON mode для структурированного вывода
- • Точное следование инструкциям
- • Последние инструкции приоритетнее
Markdown-заголовки: ## Role, ## Instructions, ## Examples, ## Output
- ✦ JSON mode (гарантированный валидный JSON)
- ✦ Function/tool calling API
- ✦ Structured Outputs schema
- • Огромный контекст (1M+ токенов)
- • Нативная мультимодальность (изображения, видео, аудио)
- • Search grounding
- • Структурные шаблоны +40% точности
Структурированные шаблоны с чёткими секциями. Изображения/медиа в НАЧАЛО промпта.
- ✦ Search grounding (данные из веба в реальном времени)
- ✦ Image-first мультимодальная обработка
- ✦ Контекст 1M+ для целых кодовых баз
- • Полный локальный контроль, без затрат на API
- • Fine-tuning через LoRA/QLoRA
- • Гибкие варианты развёртывания
- • Данные не покидают ваши серверы
Chat templates со спец. токенами: <|im_start|>system, <|im_start|>user, <|im_start|>assistant
- ✦ LoRA/QLoRA fine-tuning для кастомных задач
- ✦ Квантизация для edge deployment
- ✦ Нет rate limits и ограничений использования
Частые вопросы
Почему один и тот же промпт по-разному работает на разных моделях?
Потому что Claude, GPT, Gemini и open-source модели обучались на разных данных и инструкционном дообучении и ждут разное форматирование. Claude настроен на XML-теги, GPT — на markdown и function calling, Gemini — на мультимодальный ввод, а open-source модели — на точные chat templates. Архитектура (трансформер) общая, но соглашения разные, поэтому промпт, оптимизированный под одну модель, на другой даёт результат хуже.
Как правильно структурировать промпт для Claude?
Claude хорошо реагирует на XML-теги: оборачивай секции в <document>, <instructions>, <context>, <output_format>. Он строго следует системному промпту и поддерживает контекст до 200K токенов, предзаполненные ответы ассистента и extended thinking. Для извлечения данных задавай формат вывода прямо в тегах, например ответ внутри <total>. Это надёжнее, чем markdown-заголовки, которые лучше работают на GPT.
Чем промптинг для GPT отличается от Gemini?
GPT (OpenAI) предпочитает markdown-заголовки, JSON mode и нативный function calling для структурированного вывода, а при конфликте инструкций приоритизирует последние. Gemini (Google) — выраженно мультимодальная модель: изображения лучше ставить в начало промпта, у неё контекст 1M+ токенов и search grounding для свежих фактов. Поэтому для структурированных ответов удобнее GPT с JSON, а для задач с картинками и актуальными данными — Gemini.
Зачем для open-source моделей нужен chat template?
Llama, Qwen и DeepSeek ждут точный chat template со спец-токенами вроде <|im_start|> и <|im_end|>, которые размечают роли (system, user, assistant). Если пропустить шаблон или использовать чужой формат, модель может полностью проигнорировать системное сообщение и выдать мусор. Используй официальный шаблон модели (обычно через apply_chat_template в токенизаторе), держи промпты короче и форматируй явно — длинный контекст open-source модели держат хуже флагманов.
Создайте бесплатный аккаунт для решения челленджей
3 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения