AI cho người mớiHướng dẫn
Dán nhãn cho mọi tài liệu trong prompt để mô hình không nhầm lẫn chúng
Cách đặt tên và vai trò cho mỗi văn bản được dán, với prompt trước/sau và một yêu cầu chat completion hoạt động được bằng Python và curl.

Trên trang này
Bạn đã dán hai đoạn văn bản vào một tin nhắn và yêu cầu mô hình so sánh chúng. Trừ khi bạn nói rõ cái nào là cái nào, nó phải đoán. Cách khắc phục rất nhỏ: đặt tên và vai trò cho mỗi văn bản, và bọc mỗi văn bản trong thẻ riêng của nó. Hướng dẫn viết prompt của Anthropic (một trang được cập nhật liên tục, kiểm tra ngày 31 tháng 10 năm 2026) khuyến nghị gắn thẻ cho từng loại nội dung để mô hình không hiểu nhầm đâu là chỉ dẫn, đâu là ngữ cảnh và đâu là đầu vào. Dưới đây là prompt trước/sau và một yêu cầu chat completion hoạt động được mà bạn có thể gửi đến CheapTokens API.
Điều gì sai khi bạn chỉ dán#
Lấy trường hợp đơn giản nhất. Một nhà cung cấp gửi mô tả sản phẩm mới, và bạn muốn biết điều gì đã thay đổi so với mô tả trên trang cửa hàng của bạn. Bạn dán cả hai dưới "Điều gì đã thay đổi?" và nhấn gửi. Với bạn thứ tự là rõ ràng. Với mô hình, đó là hai khối văn bản không có gì ngăn cách, và câu hỏi không bao giờ nói cái nào là cũ. Nó có thể đoán đúng. Nó cũng có thể gọi văn bản mới là văn bản cũ và đưa cho bạn danh sách thay đổi chạy ngược, với giọng điệu hoàn toàn tự tin.
Cái bẫy tương tự ẩn trong các công việc hàng ngày:
- hai phiên bản của một hợp đồng, và bạn hỏi bên kia đã thay đổi gì;
- ba biên bản cuộc họp, và bạn hỏi quyết định nào mâu thuẫn với nhau;
- một mẫu văn phong cộng với một bản nháp: cái nào để bắt chước, cái nào để viết lại?
- một nhật ký lỗi được dán cùng với mã, và câu hỏi là "sửa cái này".
Trong mỗi trường hợp, mô hình cần hai thứ cho mỗi văn bản: một tên (nó là gì và đến từ đâu) và một vai trò (bạn muốn làm gì với nó).
Đặt tên và vai trò cho mỗi văn bản#
Ba bước nhỏ:
- Đặt mỗi văn bản trong thẻ riêng của nó. Hướng dẫn của Anthropic gợi ý một trình bao
<documents>với một<document index="1">cho mỗi văn bản, và bên trong nó một<source>cho tên và<document_cho chính văn bản.content> - Nói rõ mỗi cái là gì trong chỉ dẫn, bên ngoài các thẻ: "Tài liệu 1 là văn bản CŨ từ cửa hàng của chúng tôi. Tài liệu 2 là văn bản MỚI từ nhà cung cấp."
- Đặt câu hỏi bằng cùng những từ ngữ đó. "Liệt kê mọi sự thật đã thay đổi, dưới dạng cũ -> mới" giờ đã có cái cũ và cái mới để chỉ vào.
Đây là ví dụ về chai lọ trước và sau:
So sánh
Cùng một yêu cầu, trước và sau
Trước
What changed?
Steel water bottle, 500 ml. Keeps drinks cold for 12 hours. Dishwasher safe.
Steel water bottle, 750 ml. Keeps drinks cold for 24 hours. Hand wash only.Sau
Document 1 is the OLD text from our shop. Document 2 is the NEW text from the supplier. List every fact that changed, one per line, as old -> new.
<documents>
<document index="1">
<source>old description (current shop page)</source>
<document_content>
Steel water bottle, 500 ml. Keeps drinks cold for 12 hours. Dishwasher safe.
</document_content>
</document>
<document index="2">
<source>new description (from the supplier)</source>
<document_content>
Steel water bottle, 750 ml. Keeps drinks cold for 24 hours. Hand wash only.
</document_content>
</document>
</documents>
Các nhãn tốn một vài token và loại bỏ việc đoán. Anthropic đã viết lời khuyên này cho các mô hình Claude của họ, nhưng các nhãn là văn bản thuần, nên không có gì ngăn bạn gửi cùng bố cục đó đến một mô hình chat khác.
Gửi nó như một yêu cầu thực sự#
Đây là prompt "sau" dưới dạng một lệnh gọi API. Địa chỉ là https:/, API tương thích OpenAI, và mô hình là deepseek-. Lấy id mô hình từ tài liệu CheapTokens: tên khác nhau giữa các nhà cung cấp. DeepSeek-V4-Flash có cửa sổ ngữ cảnh 380K và tối đa 32.768 token đầu ra mỗi câu trả lời, đủ chỗ cho một đống văn bản dài. Khóa lấy từ biến môi trường, không bao giờ từ mã.
Cùng một yêu cầu trong hai công cụ
Python
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
old = "Steel water bottle, 500 ml. Keeps drinks cold for 12 hours. Dishwasher safe."
new = "Steel water bottle, 750 ml. Keeps drinks cold for 24 hours. Hand wash only."
prompt = f"""Document 1 is the OLD text from our shop. Document 2 is the NEW text from the supplier. List every fact that changed, one per line, as old -> new.
<documents>
<document index="1">
<source>old description (current shop page)</source>
<document_content>
{old}
</document_content>
</document>
<document index="2">
<source>new description (from the supplier)</source>
<document_content>
{new}
</document_content>
</document>
</documents>"""
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
messages=[{"role": "user", "content": prompt}],
max_tokens=300,
)
print(response.choices[0].message.content)
print(response.usage)curl
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"max_tokens": 300,
"messages": [{
"role": "user",
"content": "Document 1 is the OLD text from our shop. Document 2 is the NEW text from the supplier. List every fact that changed, one per line, as old -> new.\n\n<documents>\n<document index=\"1\">\n<source>old description (current shop page)</source>\n<document_content>\nSteel water bottle, 500 ml. Keeps drinks cold for 12 hours. Dishwasher safe.\n</document_content>\n</document>\n<document index=\"2\">\n<source>new description (from the supplier)</source>\n<document_content>\nSteel water bottle, 750 ml. Keeps drinks cold for 24 hours. Hand wash only.\n</document_content>\n</document>\n</documents>"
}]
}'Phản hồi là văn bản thuần trong choices[0]., và usage bên cạnh đó đếm số token. Một câu trả lời tốt liệt kê ba thay đổi: 500 ml -> 750 ml, 12 giờ -> 24 giờ, an toàn với máy rửa chén -> chỉ rửa tay. Nếu các mũi tên chạy ngược lại, mô hình đã mất dấu các nhãn. Kiểm tra rằng chỉ dẫn gọi các tài liệu bằng cùng tên mà các thẻ gọi.
Các nhãn tốn bao nhiêu#
Thẻ là văn bản, và văn bản được tính phí. Giả sử một trưởng nhóm đưa vào ba biên bản cuộc họp khoảng 2.000 token mỗi cái và hỏi quyết định nào xung đột. Ba biên bản: 3 × 2.000 = 6.000 token. Thêm khoảng 150 token cho chỉ dẫn và các thẻ (một giả định) và yêu cầu mang 6.150 token vào, với 300 token trả lời ra. Trên DeepSeek-V4-Flash, một yêu cầu đó tốn $0.00012, và bản thân các thẻ chỉ là sai số làm tròn so với các biên bản. Đây là cùng yêu cầu được gửi 1.000 lần, với OpenRouter bên cạnh:
| 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.00014 | $0.135 | $0.231 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00012 | $0.122 | $0.473 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00035 | $0.353 | $4.23 |
6.150 token đầu vào và 300 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ất cả 6.150 token vừa với cửa sổ 380K và còn dư chỗ (cửa sổ ngữ cảnh là gì). Tính tổng, đầu vào và đầu ra cộng lại, yêu cầu rẻ hơn OpenRouter. Đầu vào và đầu ra được tính phí theo mức khác nhau, và token đầu vào so với đầu ra giải thích tại sao. Số liệu hiện tại cho mọi mô hình có trên trang giá.
Thói quen cho những đống văn bản lớn hơn#
Khi có nhiều hơn hai văn bản, chỉ số thứ tự là không đủ: mỗi cái cần tên riêng của nó. Hình dưới đây cho thấy bố cục từ ví dụ: chỉ dẫn với câu hỏi trước, sau đó mỗi tài liệu trong thẻ riêng của nó.

- Đặt tên theo nội dung, không chỉ theo số.
<source>contract v2, sent by the client</tốt hơnsource> document 2khi câu trả lời trích dẫn lại cho bạn. - Giữ chỉ dẫn của bạn bên ngoài các thẻ, để một dòng bên trong văn bản được dán không bị coi là mệnh lệnh.
- Một văn bản, một thẻ. Một tệp dài vẫn là một thẻ; hai tệp là hai.
- Dùng lại các tên trong câu hỏi: "quyết định nào trong monday-notes mâu thuẫn với wednesday-notes?"
- Gán vai trò cho cả ví dụ. "Tài liệu 1 là mẫu văn phong: sao chép giọng điệu của nó, không phải sự thật. Tài liệu 2 là bản nháp cần viết lại."
Tự mình thử xemThử xem: bạn có một nhật ký lỗi và mã đã tạo ra nó trong một prompt. Bạn thêm gì cho mỗi cái?Hiện đáp án
Một tên và một vai trò. Cho nhật ký: <source>error log from the last run</ cộng với "đây là triệu chứng, đừng sửa nó". Cho mã: <source>app. cộng với "đây là thứ cần sửa". Sau đó yêu cầu sửa theo những tên đó.
Để biết những điều cơ bản của phần còn lại của prompt (mục tiêu, ngữ cảnh, định dạng), xem cách viết một prompt tốt.



