Назад до блогу

AI для початківцівПосібник

Системний промпт і температура: що вони роблять і як їх налаштувати

Що роблять системне повідомлення і температура в запиті, сумісному з OpenAI, з прикладами Python і curl, які можна надіслати моделі CheapTokens.

Автор: CheapTokens TeamОпубліковано Оновлено 5 хв читання

Схема запиту чату: системне повідомлення з правилами, повідомлення користувача із завданням і регулятор температури
На цій сторінці
  1. Що таке системний промпт?
  2. Як написати корисний системний промпт
  3. Що робить температура?
  4. Надішліть запит з обома параметрами
  5. Подивіться на температуру в дії
  6. На якій моделі спробувати
  7. Якщо не працює
  8. Наступний крок

Системний промпт — це повідомлення з роллю system, яке каже моделі, як поводитися в кожній відповіді: ким вона є, який формат використовувати, чого уникати. Температура — це число, зазвичай від 0 до 2 (діапазон залежить від моделі), яке визначає, наскільки може варіюватися формулювання: низькі значення дають сфокусовані, повторювані відповіді, високі — більш різноманітні. Обидва параметри входять до одного запиту Chat Completions, який ви надсилаєте на https://api.cheaptokens.dev/v1.

Далі: що таке кожен із них, з яких значень почати та запит, який можна виконати в Python або curl. Якщо ви ще не надсилали запит, почніть із першого запиту до API з CheapTokens.

Що таке системний промпт?#

Запит чату — це список повідомлень, і кожне повідомлення має роль. Довідник Chat Completions перелічує чотири: system, user, assistant і tool (довідник DeepSeek API, перевірено 22 жовтня 2026 року). Для першого запиту потрібні три:

  • system — постійні інструкції від вас, розробника. Модель сприймає їх як правила розмови.
  • user — те, що людина запитує або надає в цьому ході.
  • assistant — попередні відповіді моделі. Ви додаєте їх самостійно, коли продовжуєте розмову.

Системне повідомлення потребує role зі значенням system та content як рядка. Поле name необов'язкове.

json
"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".
  • Давайте правила короткими, прямими реченнями. Кілька чітких рядків працюють краще, ніж один довгий абзац.
  • Тримайте його коротким. Системний промпт надсилається з кожним запитом і зараховується як вхідні токени, тому за довгий платите щоразу. Як тарифікуються вхід і вихід, описано в вхідні та вихідні токени.

Що робить температура?#

Модель обирає кожен наступний токен із набору ймовірних кандидатів. Температура контролює, наскільки суворо вона дотримується найімовірнішого. Згідно з довідником 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

Три речі, які варто знати:

  1. Низька температура робить відповіді більш повторюваними, але не ідентичними. Не покладайтеся на побайтово однакові відповіді.
  2. Змінюйте температуру або top_p, але не обидва. Це рекомендація DeepSeek; top_p — другий параметр вибірки зі значенням за замовчуванням 1. Не чіпайте його, поки вчитеся.
  3. Деякі режими ігнорують температуру. Довідник DeepSeek каже, що температура не має ефекту в режимі мислення, і що top_p фіксований на 1.0 у режимі без мислення. Якщо ви змінюєте значення і не бачите різниці, спершу перевірте режим моделі.

Надішліть запит з обома параметрами#

Встановіть ключ як змінну середовища, щоб він ніколи не потрапив у код (див. що таке API-ключ і як його безпечно зберігати). Візьміть точний ідентифікатор моделі з документації CheapTokens: різні провайдери називають ту саму модель по-різному. У цьому прикладі використовується MiniMax-M2.7.

python
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:

bash
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; див. чому відповідь AI обривається на півслові.

Подивіться на температуру в дії#

Найкращий спосіб зрозуміти температуру — поставити те саме питання кілька разів. Цей цикл надсилає один короткий запит тричі з температурою 0 і тричі з температурою 1, використовуючи client з прикладу вище:

python
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 на ці міркування, тому тримайте ліміт щедрим навіть для відповіді одним словом. Потім змініть лише системний промпт (наприклад, "Відповідай одним словом французькою") і запустіть знову: правила в системному повідомленні діють за будь-якої температури.

Такі експерименти невеликі. Для приблизної оцінки ось вартість 100 запитів приблизно по 120 вхідних і 80 вихідних токенів кожен (приклад робочого навантаження; кількість токенів залежить від ваших промптів):

Модель За запит 100 запитів OpenRouter, 100 запитів
GLM-5.3-Flash $0.0000056 $0.00056 $0.0011
DeepSeek-V4-Flash $0.0000098 $0.00098 $0.0018
MiniMax-M2.7 $0.000018 $0.0018 $0.0132

120 вхідних і 80 вихідних токенів на запит. Ціни за 1 млн токенів актуальні та змінюються разом із нашими тарифами; стовпець OpenRouter показує довідкові ціни для того самого навантаження.

На якій моделі спробувати#

  • MiniMax-M2.7 — хороший перший вибір для багатьох коротких тестових запитів, і ви можете повторно використовувати той самий системний промпт, щоб порівняти відповіді: контекст 180K, до 8 192 вихідних токенів, дешевше за довідкову ціну OpenRouter з обох боків. Поточна ціна: вхід $0.05, вихід $0.15 за 1M токенів.

Один баланс покриває їх усі, тому перемикання моделі — це зміна model в одному рядку. Усі поточні ціни на сторінці цін.

Якщо не працює#

  • 401 або помилка автентифікації: ключ відсутній, введений неправильно або змінна середовища не встановлена в цьому терміналі. Перевірте echo $CHEAPTOKENS_API_KEY.
  • Модель не знайдено: скопіюйте ідентифікатор моделі з документації точно, включно з префіксом.
  • Помилка про недійсний параметр: тримайте temperature у межах діапазону, який підтримує ваша модель (0 до 1 безпечно), і передавайте числа, а не рядки.
  • Модель ігнорує ваше правило: зробіть його одним коротким, прямим реченням, перемістіть на початок системного повідомлення та повторіть точний формат, який хочете.
  • Зміна температури нічого не змінює: можливо, ви використовуєте режим, який її ігнорує (див. вище), або відповідь настільки обмежена ("одне слово", "валідний JSON"), що варіацій мало.
  • Відповідь обрізана: збільште max_tokens; посібник із max_tokens пояснює як.

Наступний крок#

Покладіть одне чітке правило в системне повідомлення, виберіть температуру з таблиці та запустіть наведений вище цикл для свого завдання. Коли результат вас влаштує, тримайте системний промпт коротким і повторно використовуйте його. Отримайте ключ і перевірте поточні ціни в документації.