📝 LLM и AI

System prompts: задаём роль языковой модели

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
04.06.2026
⏱️
Время чтения
2 мин
👁️
Просмотров
15
🌱
Уровень
Начальный
🐦 💼 ✈️

System prompt — это невидимая инструкция для модели которую задаёт разработчик. Пользователь её не видит, но она определяет всё поведение ассистента на протяжении всего диалога.

Зачем нужен system prompt

Без system prompt Claude отвечает как «полезный ассистент общего назначения». С system prompt — как Python-тьютор, строгий ревьюер кода, саркастичный персонаж, JSON-парсер или специалист по безопасности. Один и тот же вопрос — разные ответы.

client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system="Ты — Senior Python-разработчик. Ревьюишь код строго. Находишь минимум 3 проблемы.",
    messages=[{"role": "user", "content": "Проверь мой код: ..."}]
)

Хороший vs плохой system prompt

❌ "Будь полезным ассистентом."

✓ "Ты — Python-тьютор для начинающих.
   Объясняешь через аналогии из повседневной жизни.
   Приводишь короткие примеры кода.
   Отвечаешь только на вопросы про Python.
   Если вопрос не по теме — мягко переводишь разговор обратно."

Принципы хорошего system prompt:
1. Роль — кто ты, какой опыт и характер
2. Задача — что делаешь и чего не делаешь
3. Формат — как структурировать ответ
4. Ограничения — что вне зоны компетенций

temperature — насколько «творческий» ответ

temperature (0.0–1.0) управляет случайностью выбора следующего токена:

client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    temperature=0.0,     # детерминированный режим
    messages=[...]
)
temperature Применение
0.0 Код, факты, JSON, структурированный вывод
0.3–0.5 Технические объяснения
0.7–0.9 Творческие задачи, brainstorming
1.0 Максимальная вариативность

При temperature=0.0 одинаковый вопрос → практически одинаковый ответ. При temperature=1.0 → каждый раз новый вариант.

max_tokens — лимит, а не цель

max_tokens — это максимальный потолок, а не целевая длина. Если поставить max_tokens=100, модель остановится ровно на 100 токенах — посередине предложения.

# Всегда проверяй stop_reason:
if message.stop_reason == "max_tokens":
    # ответ был обрезан — нужен больший лимит
    pass
elif message.stop_reason == "end_turn":
    # модель завершила ответ самостоятельно
    pass

Правило: ставь max_tokens с запасом 2–3x от ожидаемой длины ответа.

System prompt и токены

System prompt входит в input_tokens каждого запроса. Длинный system prompt (500 токенов) × 1000 запросов = 500 000 лишних input-токенов.

Для уменьшения затрат используй prompt caching — Anthropic кеширует system prompt на сервере:

client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": "Очень длинный system prompt...",
        "cache_control": {"type": "ephemeral"}
    }],
    messages=[...]
)

При cache hit — стоимость кешированных токенов снижается на ~90%.

Система ролей

В Messages API три уровня инструкций:

  1. system — задаёт роль и поведение (разработчик)
  2. user — сообщения пользователя
  3. assistant — ответы модели (можно использовать для few-shot примеров)
messages = [
    # Few-shot: показываем нужный формат ответа
    {"role": "user", "content": "2+2"},
    {"role": "assistant", "content": "4"},
    {"role": "user", "content": "Что такое декоратор?"},
]

Роли обязательно чередуются: user → assistant → user → …

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Anthropic SDK: первые шаги с Claude API

Anthropic Python SDK — официальная библиотека для работы с Claude. Она скрывает сложность HTTP-запросов, добавляет...

📅 04.06.2026 👁️ 17
📝

Стриминг ответов LLM: ответ по частям

По умолчанию messages.create() ждёт пока модель полностью сформирует ответ и только потом возвращает результат. При...

📅 04.06.2026 👁️ 19
📝

uv: современный менеджер пакетов для Python

uv — инструмент нового поколения для управления Python-зависимостями. Написан на Rust компанией Astral, в 10–100...

📅 04.06.2026 👁️ 17

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!