AI для новичковИнструкция
Системный промпт и temperature: что это и как задать
Что делают системное сообщение и temperature в OpenAI-совместимом запросе — с примерами на Python и curl для модели CheapTokens.

Содержание
Системный промпт — это сообщение с ролью system, которое говорит модели, как вести себя в каждом ответе: кто она, в каком формате отвечать, чего избегать. Temperature (температура) — число, обычно от 0 до 2 (диапазон зависит от модели), которое задаёт, насколько может меняться формулировка: низкие значения дают сфокусированные, повторяемые ответы, высокие — более разнообразные. Оба параметра идут в один запрос Chat Completions к https:/.
Ниже: что это такое, с каких значений начать и запрос, который можно запустить на Python или curl. Если вы ещё не отправляли запрос, начните с первого API-запроса к CheapTokens.
Что такое системный промпт#
Запрос к чату — это список сообщений, и у каждого есть роль. В справке Chat Completions их четыре: system, user, assistant и tool (справка DeepSeek API, проверено 22 октября 2026 года). Для первого запроса нужны три:
system— постоянные инструкции от вас, разработчика. Модель воспринимает их как правила разговора.user— то, что человек спрашивает или передаёт в этой реплике.assistant— прошлые ответы модели. Вы добавляете их сами, когда продолжаете диалог.
У системного сообщения role равна system, а content — строка. Поле name необязательное.
"messages": [
{"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."}
]Системное сообщение идёт первым. Сообщение пользователя — это сама задача.
Как написать полезный системный промпт#
- Скажите, чем занята модель, одной фразой: «Ты редактор», «Ты сортируешь обращения в поддержку».
- Укажите формат ответа: «Верни только переписанный текст», «Ответь в двух предложениях», «Ответь валидным JSON».
- Пишите правила короткими прямыми предложениями. Несколько ясных строк работают лучше одного длинного абзаца.
- Не раздувайте. Системный промпт отправляется с каждым запросом и считается входными токенами, поэтому длинный оплачивается каждый раз. Как считаются вход и выход — в статье входные и выходные токены.
Что делает temperature#
Модель выбирает каждый следующий токен из набора вероятных кандидатов. Temperature определяет, насколько строго она держится самого вероятного. По справке DeepSeek API (проверено 22 октября 2026 года) temperature принимает значения от 0 до 2, по умолчанию 1: чем выше значение, тем случайнее вывод, чем ниже — тем он сфокусированнее и детерминированнее. Диапазоны у моделей разные: DeepSeek указывает от 0 до 2, Z.ai — от 0 до 1 для GLM-5.3 (оба проверены 22 октября 2026 года), поэтому значения от 0 до 1 безопасны для обеих. Диапазон для своей модели смотрите в документации.
Отправные точки, которые подходят для большинства задач. Это практические ориентиры, а не гарантии:
Прокрутите таблицу вправо →
| Задача | С чего начать |
|---|---|
| Извлечение данных, классификация, код, строгие форматы | от 0 до 0.3 |
| Вопросы и ответы, краткие пересказы, переписывание | от 0.3 до 0.7 |
| Мозговой штурм, названия, творческий текст | от 0.8 до 1 |
Три вещи, которые стоит знать:
- Низкая temperature — это повторяемость, а не идентичность. Не рассчитывайте на побайтно одинаковые ответы.
- Меняйте temperature или top_p, но не оба сразу. Это рекомендация DeepSeek;
top_p— второй параметр выбора токенов, по умолчанию 1. Пока вы учитесь, не трогайте его. - Некоторые режимы игнорируют temperature. В справке DeepSeek сказано, что в режиме thinking temperature не действует, а в режиме без thinking
top_pфиксирован на 1.0. Если вы изменили значение, а разницы нет, сначала проверьте режим модели.
Отправьте запрос с обоими параметрами#
Задайте ключ переменной окружения, чтобы он не попал в код (см. что такое API-ключ и как его хранить). Точный id модели берите из документации CheapTokens: у разных провайдеров одна и та же модель называется по-разному. В примере — MiniMax-M2.7.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[
{"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."},
],
temperature=0.3,
max_tokens=1000,
)
print(response.choices[0].message.content)
print(response.choices[0].finish_reason)Тот же запрос через curl:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMaxAI/MiniMax-M2.7",
"messages": [
{"role": "system", "content": "You are an editor. Rewrite the user'\''s text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."}
],
"temperature": 0.3,
"max_tokens": 1000
}'Что вы должны увидеть: короткую, более дружелюбную версию фразы и stop в finish_reason. Если finish_reason равен length, ответ упёрся в лимит max_tokens; см. почему ответ ИИ обрывается на полуслове.
Посмотрите, как работает temperature#
Лучший способ понять temperature — задать один и тот же вопрос несколько раз. Этот цикл отправляет один короткий запрос по три раза при 0 и при 1, используя client из примера выше:
for temp in (0, 1):
print("temperature", temp)
for _ in range(3):
r = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[
{"role": "system", "content": "Answer with one word."},
{"role": "user", "content": "Name a fruit."},
],
temperature=temp,
max_tokens=500,
)
print(" ", r.choices[0].message.content)При 0 три строки обычно содержат одно и то же слово; при 1 слова чаще отличаются. Модели, которые рассуждают перед ответом, могут потратить часть max_tokens на рассуждение, поэтому оставляйте лимит с запасом даже для ответа в одно слово. Затем поменяйте только системный промпт (например, «Answer with one word, in French») и запустите снова: правила из системного сообщения действуют при любой temperature.
Такие опыты маленькие. Для оценки — стоимость 100 запросов примерно по 120 входных и 80 выходных токенов (примерная нагрузка; число токенов зависит от ваших промптов):
| Модель | Вход $/1M | Выход $/1M | За запрос | 100 запросов | OpenRouter, 100 запросов |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0000056 | $0.00056 | $0.0011 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0000098 | $0.00098 | $0.0018 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000018 | $0.0018 | $0.0132 |
120 входных и 80 выходных токенов на запрос. Цены за 1M токенов актуальны и меняются вместе с нашими тарифами; столбец OpenRouter показывает справочные цены для той же нагрузки.
На какой модели попробовать#
- MiniMax-M2.7 — хороший первый выбор для множества коротких тестовых запросов, на ней же можно прогнать тот же системный промпт и сравнить ответы: контекст 180K, до 8 192 токенов в ответе, дешевле референсной цены OpenRouter и по входу, и по выходу. Текущая цена: вход $0.05, выход $0.15 за 1M токенов.
Один баланс работает для всех моделей, так что смена модели — это правка одной строки model. Все актуальные цены — на странице цен.
Если не работает#
- 401 или ошибка аутентификации: ключа нет, он набран с опечаткой или переменная окружения не задана в этом терминале. Проверьте
echo $CHEAPTOKENS_.API_ KEY - Модель не найдена: скопируйте id модели из документации точно, вместе с префиксом.
- Ошибка про неверный параметр: держите
temperatureв пределах, которые поддерживает ваша модель (от 0 до 1 безопасно), и передавайте число, а не строку. - Модель игнорирует правило: сформулируйте его одним коротким прямым предложением, поставьте в начало системного сообщения и повторите точный формат, который нужен.
- Изменение temperature ничего не меняет: возможно, вы используете режим, который её игнорирует (см. выше), либо ответ так жёстко ограничен («одно слово», «валидный JSON»), что вариантов почти нет.
- Ответ обрезается: увеличьте
max_tokens; как это сделать — в статье про max_tokens.
Следующий шаг#
Добавьте в системное сообщение одно ясное правило, выберите temperature из таблицы и запустите цикл выше на своей задаче. Когда результат вас устроит, оставьте системный промпт коротким и используйте его снова. Ключ и актуальные цены — в документации.



