AI cho người mớiHướng dẫn
Cách viết một prompt tốt: 5 phần và một ví dụ trước/sau
Biến một yêu cầu một dòng mơ hồ thành một prompt với task, context, format, example và rules, rồi gửi nó qua một API tương thích OpenAI.

Trên trang này
Mô hình của bạn tóm tắt email khách hàng thành ba đoạn vào thứ Hai và thành hai gạch đầu dòng vào thứ Ba. Cùng một prompt, cùng một mô hình. Đó là điều mà một yêu cầu một dòng gây ra: nó để mọi quyết định cho mô hình, và mô hình quyết định khác nhau mỗi lần.
Một prompt tốt trả lời năm câu hỏi: làm gì (task), làm việc với cái gì (context), câu trả lời nên trông như thế nào (format), một câu trả lời tốt trông như thế nào (example) và cần tránh điều gì (constraints). Dưới đây, một yêu cầu mơ hồ trở thành một yêu cầu có cấu trúc, đi qua API CheapTokens tương thích OpenAI, và bạn thấy prompt dài hơn thêm gì vào hóa đơn.
Tại sao "Tóm tắt email này" là một canh bạc#
Khi bạn gõ "Tóm tắt email này", bạn đã có sẵn câu trả lời trong đầu: một câu, mức độ khẩn cấp, cần làm gì tiếp theo. Mô hình không thấy được bức tranh đó. Nên nó đoán, và mọi phỏng đoán đều hợp lý. Cộng lại, chúng cho bạn câu trả lời khác nhau mỗi lần chạy, và một script đọc câu trả lời không có gì ổn định để phân tích.
Hướng dẫn prompt-engineering của OpenAI (đọc ngày 27 tháng 10 năm 2026) nói thẳng ý tưởng: prompt engineering là viết hướng dẫn hiệu quả, và các mô hình GPT làm tốt hơn khi bạn nói rõ ràng cho chúng cách hoàn thành một tác vụ. Thói quen này không giới hạn ở văn bản. Vào ngày 26 tháng 10 năm 2026 một kênh Telegram chia sẻ một prompt cho video tạo 30 giây được chia thành các khối: cảnh, phong cách hình ảnh, đối thoại, âm thanh và loại trừ, thông số kỹ thuật. Tác vụ khác, cùng một động tác. Tác giả đặt tên cho mọi quyết định ngay từ đầu thay vì để mô hình tự quyết.
Tự mình thử xemThử xem: mô hình sẽ phải đoán gì từ "Tóm tắt email này"?Hiện đáp án
Độ dài (một dòng hay một trang), đối tượng (bạn hay khách hàng), hình dạng câu trả lời (văn xuôi, gạch đầu dòng, JSON), điều gì được coi là quan trọng, và phải làm gì khi email không nói rõ. Mỗi điều trong số đó là thứ mà một prompt có thể giải quyết.
Năm phần, nói một cách đơn giản#
Hãy nghĩ đến việc giới thiệu cho một đồng nghiệp mới vào ngày đầu tiên. "Xử lý cái này đi" sẽ cho bạn một phỏng đoán. Một tờ giấy nhớ ghi công việc, tài liệu, định dạng bạn muốn, một mẫu và một "đừng" sẽ cho bạn đúng điều bạn muốn.
Task là một động từ và một tân ngữ: "Tóm tắt email và đánh giá mức độ khẩn cấp." Hãy nói thẳng. "Giúp với email này" không phải là một tác vụ.
Context là tài liệu mà mô hình làm việc trên đó: email, mô tả sản phẩm, chính sách. Mô hình chỉ biết những gì nó học được trong quá trình huấn luyện cộng với những gì bạn dán vào. Hãy bọc văn bản dán vào trong dấu phân cách, chẳng hạn như thẻ kiểu XML như <email>…</email> hoặc tiêu đề markdown, để hướng dẫn của bạn không bị lẫn với văn bản. Hướng dẫn của OpenAI đề xuất cả hai.
Format là hình dạng của câu trả lời: "JSON với các khóa summary, urgency, next_step" hoặc "ba gạch đầu dòng, mỗi dòng tối đa 12 từ". Nó quan trọng nhất khi code đọc câu trả lời.
Example là một đầu vào với đầu ra bạn muốn. Hướng dẫn khuyến nghị các ví dụ few-shot bao phủ nhiều loại đầu vào đa dạng với đầu ra mong muốn. Một ví dụ là khởi đầu tốt; thêm ví dụ thứ hai khi đầu vào của bạn khác nhau nhiều.
Constraints là những "đừng": chỉ dùng thông tin từ email, viết "unknown" khi thiếu điều gì đó, không hoàn tiền hay giảm giá.

Thứ tự cũng quan trọng một chút. Cùng hướng dẫn đó nói rằng một tin nhắn developer hoặc system thường đi theo thứ tự danh tính, hướng dẫn, ví dụ, ngữ cảnh, và ngữ cảnh nên nằm gần cuối vì nó thay đổi giữa các yêu cầu. Quy tắc nằm trong tin nhắn system; đầu vào nằm trong tin nhắn user.
Ghép cặp
Ghép mỗi phần của prompt với câu hỏi mà nó trả lời
Nhấn vào một mục bên trái, rồi đến cặp của nó
- TaskMô hình nên làm gì?
- ContextNó làm việc trên tài liệu nào?
- FormatCâu trả lời nên trông như thế nào?
- ExampleMột câu trả lời tốt trông như thế nào?
- ConstraintsNó không được làm gì?
Trước và sau: một email khách hàng#
Đây là câu một dòng bên cạnh cùng yêu cầu với đầy đủ năm phần. Bản thân email là ngữ cảnh, và nó nằm trong tin nhắn user, được bọc trong thẻ <email>.
So sánh
Một yêu cầu, hai prompt
Trước
Summarize this email.Sau
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.Đọc phần "sau" từ trên xuống dưới và bạn có thể chỉ vào từng phần: dòng mở đầu và tác vụ, dòng định dạng, ví dụ, các quy tắc. Email được cố ý bỏ khỏi văn bản. Nó thay đổi theo mỗi yêu cầu, nên nó đi riêng.

Gửi nó qua API#
Các hướng dẫn không bao giờ thay đổi, nên chúng nằm trong một hằng số và đi trước. Email thay đổi, nên nó đi cuối. Đây là toàn bộ script, dùng SDK Python của OpenAI trỏ đến CheapTokens. Mô hình là DeepSeek-V4-Flash: ngữ cảnh 380K, tối đa 32.768 token đầu ra mỗi câu trả lời, một mức giá vào mọi giờ. Lấy base URL và model id từ tài liệu CheapTokens; nếu bạn chưa có key, yêu cầu API đầu tiên của bạn sẽ hướng dẫn qua từng bước.
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)Nếu dòng định dạng làm đúng việc của nó, câu trả lời là một đối tượng JSON với summary, urgency và next_step, và json.loads biến nó thành một dictionary. Nếu nó báo lỗi, mô hình đã bọc JSON trong văn bản thừa: hãy siết chặt quy tắc cuối hoặc thêm ví dụ thứ hai. Dòng cuối in ra có bao nhiêu token vào và ra, đó là con số mà phần tiếp theo nói đến.
Những từ thừa tốn bao nhiêu#
Một token là một phần của từ. Bạn trả tiền theo token cho những gì bạn gửi (input) và cho những gì mô hình viết (output), và output là phía đắt hơn. Nói thêm về điều đó trong input so với output token.
Giả sử bạn chạy một bot hỗ trợ với 1.000 email mỗi ngày, và email khoảng 300 token. Câu một dòng thêm khoảng 10 token hướng dẫn, nên khoảng 310 token đi vào; ta giả định nó nhận được một bản tóm tắt tự do khoảng 250 token. System prompt ở trên khoảng 200 token, cộng thêm khoảng 10 cho các thẻ <email>, nên khoảng 500 token đi vào; ta giả định dòng định dạng giữ câu trả lời thành JSON khoảng 80 token. Trên DeepSeek-V4-Flash, đó là $0.00003 mỗi email cho câu một dòng và $0.000016 cho prompt có cấu trúc. Prompt dài hơn, nhưng yêu cầu rẻ hơn, vì phần dài là input và phần bạn rút ngắn là output. Chạy script và thay những giả định này bằng prompt_tokens và completion_ của riêng bạn.
Đây là prompt có cấu trúc với 1.000 email mỗi ngày trên các mô hình. Tổng cộng, tính cả input và output, CheapTokens rẻ hơn giá tham chiếu của OpenRouter trên khối lượng công việc này; giá hiện tại nằm trên trang giá.
| Mô hình | Đầu vào $/1M | Đầu ra $/1M | Mỗi yêu cầu | 1.000 yêu cầu | OpenRouter, 1.000 yêu cầu |
|---|---|---|---|---|---|
| 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 token đầu vào và 80 token đầu ra mỗi yêu cầu. Giá trên 1 triệu token là giá hiện hành và thay đổi cùng với biểu phí của chúng tôi; cột OpenRouter hiển thị giá tham chiếu cho cùng khối lượng công việc.
Tự kiểm tra#
Một câu hỏi về thói quen mang lại lợi ích nhiều nhất khi một script tái sử dụng prompt. Khi cấu trúc đã hoạt động, các nút tiếp theo là tin nhắn system và temperature, được đề cập trong System prompt và temperature.
Kiểm tra nhanh
Script của bạn gửi cùng hướng dẫn với một email mới mỗi lần. Email nên đi đâu?
Hiện đáp án
Trả lời: Ở cuối, sau hướng dẫn và ví dụ
Các hướng dẫn giữ nguyên giữa các yêu cầu và email thay đổi. Hướng dẫn của OpenAI đề xuất đặt ngữ cảnh thay đổi gần cuối prompt.



