# System prompt: задаём роль и правила

Курс: Claude API для разработчиков — https://zero2claude.ru/learn/api
Канонический URL: https://zero2claude.ru/learn/api/1-1-system-prompt

System prompt — это поле system с ролью и правилами модели. С ним один и тот же вопрос даёт другой ответ.

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

Каждый запрос к Claude — это массив `messages` с сообщениями пользователя. Но есть отдельное верхнеуровневое поле `system`: туда выносят **роль, тон и правила**, по которым модель отвечает. Сами вопросы остаются в `messages`, а `system` задаёт рамку для всех них.

Представь бота поддержки интернет-магазина. Без `system` на вопрос «где мой заказ?» Claude ответит общими словами. С `system` — заговорит как ваш оператор: вежливо, по правилам, не выдумывая номера заказов.

## Как это выглядит в запросе

```
{
  "model": "claude-opus-4-8",
  "max_tokens": 1024,
  "system": "Ты — оператор поддержки магазина «Полка». Отвечай вежливо и кратко. Если не знаешь номер заказа — попроси его, не придумывай.",
  "messages": [
    {"role": "user", "content": "Где мой заказ?"}
  ]
}
```

`system` — это **одна строка** на верхнем уровне тела запроса, а не сообщение с ролью `system` внутри `messages`. Это не обязательное поле: без него модель просто отвечает как ассистент по умолчанию.

Держи в `system` стабильные правила, а конкретику (имя клиента, номер заказа) передавай в `messages`. Так [промпт](/learn/prompting) легче переиспользовать и кэшировать.

## Порепетируй

Ниже — один и тот же вопрос с system-промптом и без него. Почувствуй разницу.
