AI для початківцівПосібник
Як написати хороший запит: 5 частин і приклад до/після
Перетворіть розпливчастий однорядковий запит на запит із завданням, контекстом, форматом, прикладом і правилами, а потім надішліть його через OpenAI-сумісний API.

На цій сторінці
Ваша модель підсумовує лист клієнта трьома абзацами в понеділок і двома пунктами у вівторок. Той самий запит, та сама модель. Ось що робить однорядковий запит: він залишає кожне рішення моделі, а модель щоразу вирішує по-різному.
Хороший запит відповідає на п'ять питань: що робити (завдання), з чим працювати (контекст), як має виглядати відповідь (формат), як виглядає хороша відповідь (приклад) і чого уникати (обмеження). Нижче один розпливчастий запит стає структурованим, проходить через OpenAI-сумісний CheapTokens API, і ви бачите, що довший запит додає до рахунку.
Чому «Підсумуй цей лист» — це азартна гра#
Коли ви пишете «Підсумуй цей лист», ви вже маєте на думці відповідь: одне речення, наскільки це терміново, що робити далі. Модель не бачить цієї картини. Тож вона здогадується, і кожна здогадка розумна. Разом вони дають вам різну відповідь при кожному запуску, а скрипту, який читає відповідь, немає чого стабільно розібрати.
Посібник OpenAI з промпт-інженерії (прочитано 27 жовтня 2026) прямо формулює ідею: промпт-інженерія — це написання ефективних інструкцій, і GPT-моделі працюють краще, коли ви явно кажете їм, як виконати завдання. Ця звичка не обмежується текстом. 26 жовтня 2026 один Telegram-канал поділився запитом для 30-секундного згенерованого відео, розбитим на блоки: сцена, візуальний стиль, діалог, аудіо та виключення, технічні характеристики. Інше завдання, той самий хід. Автор назвав кожне рішення заздалегідь, замість того щоб залишити його моделі.
Спробуйте саміСпробуйте: що модель мала б вгадати з «Підсумуй цей лист»?Показати відповідь
Довжину (один рядок чи сторінку), аудиторію (ви чи клієнт), форму відповіді (проза, пункти, JSON), що вважається важливим і що робити, коли в листі цього не сказано. Кожне з цих питань може вирішити запит.
П'ять частин простими словами#
Уявіть, що ви вводите в курс справи нового колегу в його перший день. «Розберися з цим» дасть вам здогадку. Стікер із завданням, матеріалом, бажаним форматом, зразком і «не роби» дасть вам те, що ви мали на увазі.
Завдання — це одне дієслово й один об'єкт: «Підсумуй лист і оціни його терміновість». Будьте буквальними. «Допоможи з цим листом» — це не завдання.
Контекст — це матеріал, з яким працює модель: лист, опис продукту, політика. Модель знає лише те, що вивчила під час тренування, плюс те, що ви вставили. Обгортайте вставлений текст у роздільники, як-от XML-теги на кшталт <email>…</email> або markdown-заголовки, щоб ваші інструкції не змішалися з текстом. Посібник OpenAI пропонує обидва варіанти.
Формат — це те, як виглядає відповідь: «JSON з ключами summary, urgency, next_step» або «три пункти, по 12 слів максимум». Він найважливіший, коли код читає відповідь.
Приклад — це один вхід із бажаним виходом. Посібник рекомендує few-shot приклади, які охоплюють різноманітні входи з бажаними виходами. Одного прикладу цілком достатньо для початку; додайте другий, коли ваші входи сильно відрізняються.
Обмеження — це «не роби»: використовуй лише факти з листа, пиши «невідомо», коли чогось бракує, жодних повернень коштів чи знижок.

Порядок теж трохи важливий. Той самий посібник каже, що повідомлення розробника або системне повідомлення зазвичай іде так: ідентичність, інструкції, приклади, контекст, і що контекст належить ближче до кінця, бо він змінюється між запитами. Правила йдуть у системне повідомлення; вхід іде в повідомлення користувача.
З'єднайте пари
Зіставте кожну частину запиту з питанням, на яке вона відповідає
Торкніться елемента ліворуч, потім його пари
- ЗавданняЩо має робити модель?
- КонтекстЗ яким матеріалом вона працює?
- ФорматЯк має виглядати відповідь?
- ПрикладЯк виглядає хороша відповідь?
- ОбмеженняЧого вона не повинна робити?
До і після: лист клієнта#
Ось однорядковий запит поруч із тим самим проханням з усіма п'ятьма частинами. Сам лист — це контекст, і він іде в повідомлення користувача, обгорнутий у теги <email>.
Порівняйте
Один запит, два промпти
До
Summarize this email.Після
You summarize customer emails for a support team.
Task: Summarize the email in the <email> tags and rate how urgent it is.
Format: Reply with JSON only, using the keys "summary" (one sentence), "urgency" ("low", "medium" or "high") and "next_step" (one short sentence).
Example:
<email>Hi, order 1042 was due Monday and it's Thursday. Where is it?</email>
{"summary": "Order 1042 is three days late and the customer asks where it is.", "urgency": "medium", "next_step": "Check the carrier tracking for order 1042 and reply with the status."}
Rules:
- Use only what the email says. If something is missing, write "unknown".
- Don't offer refunds or discounts.
- Output nothing outside the JSON.Прочитайте «після» згори донизу, і ви зможете вказати на кожну частину: вступний рядок і завдання, рядок формату, приклад, правила. Лист навмисно відсутній у тексті. Він змінюється з кожним запитом, тож іде окремо.

Надішліть це через API#
Інструкції ніколи не змінюються, тож вони живуть у константі й ідуть першими. Лист змінюється, тож він іде останнім. Це весь скрипт, який використовує OpenAI Python SDK, націлений на CheapTokens. Модель — DeepSeek-V4-Flash: контекст 380K, до 32 768 вихідних токенів на відповідь, одна ціна будь-якої години. Візьміть базову URL-адресу та ідентифікатор моделі з документації CheapTokens; якщо у вас ще немає ключа, ваш перший запит до API проведе вас через це.
import json
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
SYSTEM_PROMPT = """You summarize customer emails for a support team.
Task: Summarize the email in the <email> tags and rate how urgent it is.
Format: Reply with JSON only, using the keys "summary" (one sentence), "urgency" ("low", "medium" or "high") and "next_step" (one short sentence).
Example:
<email>Hi, order 1042 was due Monday and it's Thursday. Where is it?</email>
{"summary": "Order 1042 is three days late and the customer asks where it is.", "urgency": "medium", "next_step": "Check the carrier tracking for order 1042 and reply with the status."}
Rules:
- Use only what the email says. If something is missing, write "unknown".
- Don't offer refunds or discounts.
- Output nothing outside the JSON.
"""
email = "Hello, I was charged twice for my subscription this month. Please fix it before Friday, my card is almost at its limit."
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": f"<email>\n{email}\n</email>"},
],
)
reply = response.choices[0].message.content
print(json.loads(reply))
print(response.usage.prompt_tokens, response.usage.completion_tokens)Якщо рядок формату виконав свою роботу, відповідь — це один JSON-об'єкт з summary, urgency і next_step, а json.loads перетворює його на словник. Якщо він викликає помилку, модель обгорнула JSON у зайвий текст: посильте останнє правило або додайте другий приклад. Останній рядок виводить, скільки токенів увійшло й вийшло, — це число, про яке йдеться в наступному розділі.
Скільки коштують зайві слова#
Токен — це частина слова. Ви платите за токен за те, що надсилаєте (вхід), і за те, що пише модель (вихід), а вихід — дорожча сторона. Докладніше про це в вхідні та вихідні токени.
Скажімо, ви запускаєте бота підтримки з 1 000 листів на день, і лист — це близько 300 токенів. Однорядковий запит додає приблизно 10 токенів інструкції, тож увіходить близько 310; припустімо, він дає вільний підсумок приблизно на 250 токенів. Системний запит вище — це близько 200 токенів, плюс приблизно 10 на теги <email>, тож увіходить близько 500; припустімо, рядок формату утримує відповідь у JSON приблизно на 80 токенів. На DeepSeek-V4-Flash це $0.00003 за лист для однорядкового запиту і $0.000016 для структурованого. Запит став довшим, але запит став дешевшим, бо довга частина — це вхід, а частина, яку ви скоротили, — це вихід. Запустіть скрипт і замініть ці припущення на власні prompt_tokens і completion_.
Ось структурований запит на 1 000 листів на день по моделях. Загалом, з урахуванням входу й виходу разом, CheapTokens виходить дешевшим за довідкову ціну OpenRouter на цьому навантаженні; поточні ціни на сторінці цін.
| Модель | Вхід $/1М | Вихід $/1М | За запит | 1 000 запитів | OpenRouter, 1 000 запитів |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000013 | $0.0132 | $0.0234 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000016 | $0.0155 | $0.0462 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000037 | $0.037 | $0.444 |
500 вхідних і 80 вихідних токенів на запит. Ціни за 1 млн токенів актуальні та змінюються разом із нашими тарифами; стовпець OpenRouter показує довідкові ціни для того самого навантаження.
Перевірте себе#
Одне питання про звичку, яка найбільше окупається, коли скрипт повторно використовує запит. Коли структура працює, наступні важелі — це системне повідомлення й температура, про них у Системний запит і температура.
Швидка перевірка
Ваш скрипт надсилає ті самі інструкції з новим листом щоразу. Куди має йти лист?
Показати відповідь
Відповідь: У кінці, після інструкцій і прикладу
Інструкції залишаються незмінними між запитами, а лист змінюється. Посібник OpenAI пропонує розміщувати контекст, який змінюється, ближче до кінця запиту.



