Tạo prompt có cấu trúc: XML, JSON và các framework

Nắm vững các tag XML, JSON schema và framework COSTAR để cấu trúc các câu lệnh tạo ra đầu ra AI đáng tin cậy và nhất quán trên mọi mô hình.

Bước tiến lớn nhất về chất lượng câu lệnh đến từ cấu trúc. Không phải từ ngữ tốt hơn. Không phải câu lệnh dài hơn, mà là cấu trúc.

Một câu lệnh được cấu trúc cho AI biết chính xác từng phần thông tin nằm ở đâu: Đâu là hướng dẫn, đâu là ngữ cảnh, đâu là ví dụ và định dạng đầu ra nên như thế nào. Điều này loại bỏ sự mơ hồ gây ra kết quả không nhất quán.

Tag XML: Nền tảng

Tag XML là công cụ cấu trúc linh hoạt nhất. Chúng hoạt động trên tất cả các mô hình AI chính và Claude được đào tạo đặc biệt với XML trong dữ liệu huấn luyện của nó.

Cấu trúc cơ bản

<role>Bạn là một nhà phân tích tài chính chuyên về các chỉ số SaaS.</role>

<task>Phân tích dữ liệu hàng quý sau đây và đưa ra những hiểu biết.</task>

<data>
Quý 1: Doanh thu: 2,1 triệu đô la, Tỷ lệ khách hàng rời bỏ: 4,2%, NRR: 112%
Quý 2: Doanh thu: 2,4 triệu đô la, Tỷ lệ khách hàng rời bỏ: 3,8%, NRR: 118%
Quý 3: Doanh thu: 2,9 triệu đô la, Tỷ lệ khách hàng rời bỏ: 3,1%, NRR: 125%
</data>

<output_format>
1. Tóm tắt (2 câu)
2. Ba xu hướng chỉ số chính (với phần trăm thay đổi)
3. Một rủi ro cần lưu ý
4. Một cơ hội cần nêu bật
</output_format>

So sánh điều này với phiên bản không có cấu trúc: "Bạn là một nhà phân tích tài chính. Hãy xem xét Quý 1: Doanh thu 2,1 triệu đô la, tỷ lệ khách hàng rời bỏ 4,2%, NRR 112%. Quý 2: 2,4 triệu đô la, 3,8%, 118%. Quý 3: 2,9 triệu đô la, 3,1%, 125%. Hãy cho tôi biết về xu hướng và những gì chúng tôi nên tập trung vào".

Cả hai đều chứa cùng một thông tin. Phiên bản có cấu trúc hơn sẽ cho kết quả nhất quán và dễ dự đoán hơn.

Các tag XML thông dụng

TagMục đíchVí dụ
<role>Xác định vai trò/chuyên môn của AI<role>Nhà khoa học dữ liệu cấp cao</role>
<task>Nên làm gì<task>Phân loại các yêu cầu hỗ trợ này</task>
<context>Thông tin cơ bản<context>Chúng tôi đã ra mắt phiên bản 2.0 vào tuần trước</context>
<constraints>Quy tắc và giới hạn<constraints>Tối đa 200 từ</constraints>
<examples>Các ví dụ Few-shot<examples>Input: X → Output: Y</examples>
<output_format>Định dạng mong muốn<output_format>JSON với các trường...</output_format>
<input>Dữ liệu cần xử lý<input>[đặt dữ liệu người dùng ở đây]</input>

Kiểm tra nhanh: Bạn có một prompt với hướng dẫn, ngữ cảnh, thông tin người dùng nhập và định dạng đầu ra mong muốn - tất cả trong cùng một đoạn văn. Rủi ro là gì?

Câu trả lời: Trí tuệ nhân tạo (AI) có thể hiểu sai phần nào là hướng dẫn, phần nào là ngữ cảnh và phần nào là dữ liệu đầu vào. Ví dụ, nếu ngữ cảnh của bạn bao gồm "luôn kiểm tra lại các phép tính", AI có thể coi đó là một hướng dẫn, trong khi thực tế đó là mô tả chính sách của công ty. Các tag XML ngăn chặn điều này: Nội dung <context> được đọc là thông tin nền, nội dung <instructions> được coi là các lệnh cần tuân theo.

JSON schema để kiểm soát đầu ra

Khi bạn cần đầu ra có cấu trúc mà code có thể phân tích cú pháp, hãy chỉ định JSON schema:

<task>Trích xuất thông tin liên hệ từ email sau.</task>

<output_format>
Trả về một đối tượng JSON với các trường sau:
{
  "name": "Họ và tên đầy đủ của người gửi",
  "email": "Địa chỉ email",
  "company": "Tên công ty (hoặc null nếu không được đề cập)",
  "request": "Tóm tắt một câu về những gì họ muốn",
  "urgency": "thấp | trung bình | cao"
}
</output_format>

<input>
Chào, tôi là Marcus Chen từ DataFlow Inc. Chúng tôi cần trợ giúp khẩn cấp về việc tích hợp API.
Hệ thống sản xuất của chúng tôi đang gặp sự cố và chúng tôi cần ai đó
tham gia cuộc gọi trong vòng một giờ. Số điện thoại trực tiếp của tôi là marcus@dataflow.io.
</input>

Đầu ra dự kiến:

{
  "name": "Marcus Chen",
  "email": "marcus@dataflow.io",
  "company": "DataFlow Inc.",
  "request": "Cần trợ giúp khẩn cấp về tích hợp API do hệ thống sản xuất gặp sự cố",
  "urgency": "cao"
}

Framework COSTAR

COSTAR cung cấp một prompt framework hoàn chỉnh hoạt động cho mọi tác vụ:

Thành phầnÝ nghĩa của nóVí dụ
Context (ngữ cảnh)Bối cảnh và tình huống"Chúng tôi là một công ty SaaS B2B, sẽ ra mắt tính năng mới vào tháng tới"
Objective (mục tiêu)Những thứ bạn cần"Soạn thảo email thông báo dành cho khách hàng hiện tại"
Style (phong cách)Phương pháp giao tiếp"Chuyên nghiệp nhưng thân thiện, tương tự như phong cách giao tiếp của Stripe"
Tone (giọng điệu)Chất lượng cảm xúc"Hào hứng nhưng không quá lời - tự tin, không phải kiểu bán hàng"
Audience (khán giả)Ai sẽ nhận được nó"Khách hàng hiện tại đang sử dụng gói Pro"
Response (phản ứng)Thông số định dạng"Tiêu đề email + Nội dung email 3 đoạn + Văn bản nút kêu gọi hành động (CTA)"

COSTAR trong thực tiễn

<context>
Công ty chúng tôi (TechCorp) bán phần mềm quản lý dự án. Chúng tôi vừa bổ sung tính năng
ưu tiên nhiệm vụ dựa trên AI. Người dùng thử nghiệm bản beta rất thích tính năng này (tỷ lệ hài lòng 92%).
Chúng tôi sẽ ra mắt chính thức vào thứ Ba tuần tới.
</context>

<objective>Viết email thông báo sản phẩm.</objective>

<style>Chuyên nghiệp nhưng thân thiện. Câu ngắn gọn. Tương tự như cách Notion
thông báo cập nhật sản phẩm.</style>

<tone>Tự tin và hào hứng, nhưng không cường điệu. Không dùng từ "mang tính cách mạng"
hoặc "thay đổi cuộc chơi" — hãy để tính năng tự nói lên giá trị của nó.</tone>

<audience>Khách hàng hiện tại của gói Pro đã sử dụng sản phẩm
trong hơn 3 tháng.</tone> Họ đã quen thuộc với giao diện.</audience>

<response>
- Tiêu đề email (dưới 50 ký tự)
- Đoạn văn bản trước tiêu đề (dưới 100 ký tự)
- Nội dung email (3 đoạn, mỗi đoạn 2-3 câu)
- Một nút CTA kèm văn bản
</response>

Kiểm tra nhanh: Hai prompt tạo ra cùng một nội dung nhưng một prompt sử dụng COSTAR và prompt kia chỉ là một đoạn văn. Trong trường hợp nào COSTAR QUAN TRỌNG HƠN?

Câu trả lời: Khi prompt có thể tái sử dụng - được sử dụng bởi một nhóm, được nhúng vào một ứng dụng hoặc chạy hàng trăm lần. Một prompt cá nhân dùng một lần có thể không trang trọng. Nhưng một prompt chạy trong môi trường sản xuất hoặc được chia sẻ trong nhóm cần phải tạo ra chất lượng như nhau bất kể ai chạy nó. Các thành phần rõ ràng của COSTAR ngăn ngừa sự sai lệch: Mọi thành viên trong nhóm đều sử dụng cùng một ngữ cảnh, kiểu dáng và thông số kỹ thuật đầu ra.

Kết hợp các cấu trúc

Các prompt mạnh mẽ nhất kết hợp những tag XML với các nguyên tắc COSTAR và đầu ra JSON:

<system>
Bạn là một nhà phân tích phản hồi khách hàng. Bạn xử lý các đánh giá sản phẩm
và trích xuất thông tin chi tiết có cấu trúc.
</system>

<context>Chúng tôi bán một ứng dụng năng suất. Các đánh giá đến từ App Store.</context>

<task>
Phân tích đánh giá sau và trích xuất dữ liệu có cấu trúc.
</task>

<output_format>
{
  "sentiment": "positive | negative | mixed",
  "topics": ["danh sách các chủ đề được đề cập"],
  "feature_requests": ["bất kỳ tính năng nào người dùng muốn"],
  "bugs_mentioned": ["bất kỳ lỗi nào được báo cáo"],
  "summary": "tóm tắt một câu"
}
</output_format>

<input>
{{REVIEW_TEXT}}
</input>

Văn bản giữ chỗ {{REVIEW_TEXT}} biến đây thành một template - bạn có thể thay thế các đánh giá khác nhau trong khi cấu trúc vẫn không đổi. Đây là cách các prompt trong sản xuất hoạt động: Xác định cấu trúc một lần, chỉ thay đổi đầu vào.

Bài tập thực hành

  1. Lấy một prompt bạn thường dùng và cấu trúc lại nó bằng các tag XML
  2. Áp dụng framework COSTAR cho một nhiệm vụ phức tạp (ví dụ: viết đề xuất, phân tích dữ liệu)
  3. Tạo schema đầu ra JSON để trích xuất thông tin từ văn bản không có cấu trúc
  4. So sánh đầu ra của câu hỏi cũ với phiên bản có cấu trúc - lưu ý sự khác biệt về tính nhất quán

Những điểm chính cần ghi nhớ

  • Cấu trúc quan trọng hơn độ dài - các prompt được tổ chức tốt tạo ra kết quả nhất quán hơn so với những prompt dài, không có cấu trúc
  • Các tag XML tạo ra ranh giới rõ ràng giữa hướng dẫn, ngữ cảnh, ví dụ và định dạng đầu ra
  • JSON schema đảm bảo đầu ra có thể được phân tích cú pháp bởi code - điều cần thiết cho các ứng dụng sản xuất
  • COSTAR (Context, Objective, Style, Tone, Audience, Response) bao gồm tất cả các khía cạnh của một prompt hoàn chỉnh
  • Các template có chỗ giữ chỗ ({{VARIABLE}}) giúp những prompt có cấu trúc có thể tái sử dụng trên các đầu vào khác nhau
  • Claude được đào tạo với các tag XML; tất cả mọi mô hình chính đều phản hồi tốt với những prompt có cấu trúc
  • Câu 1:

    Trong framework COSTAR, thành phần 'S' (Style) thực hiện điều gì?

    GIẢI THÍCH:

    Style liên quan đến phương pháp giao tiếp, không phải nội dung. Cùng một thông tin được trình bày theo kiểu "bản tóm tắt dành cho lãnh đạo" so với kiểu "tài liệu kỹ thuật chi tiết" sẽ tạo ra kết quả khác biệt đáng kể - ngay cả khi dữ liệu giống hệt nhau. Phong cách quyết định giọng điệu của AI: Độ phức tạp của từ ngữ, độ dài câu, việc sử dụng thuật ngữ chuyên ngành, mức độ chi tiết và cách tiếp cận hùng biện. Trang trọng hay giản dị, kỹ thuật hay dễ hiểu, thuyết phục hay trung lập - tất cả đều định hình lựa chọn từ ngữ, cấu trúc câu và giọng điệu tổng thể.

  • Câu 2:

    Khi nào nên sử dụng định dạng JSON trong prompt thay vì XML?

    GIẢI THÍCH:

    JSON là lựa chọn đúng đắn khi đầu ra của AI được đưa vào một hệ thống khác. Nếu một script Python xử lý phản hồi của AI, JSON schema đảm bảo đầu ra nhất quán, có thể phân tích cú pháp. XML tốt hơn cho các prompt dễ đọc đối với con người, nơi bạn đang sắp xếp những hướng dẫn. Nhiều nhà phát triển sử dụng XML cho cấu trúc prompt và JSON cho định dạng đầu ra - kết hợp cả hai điểm mạnh. JSON đảm bảo đầu ra phù hợp với một schema được xác định mà các chương trình có thể sử dụng mà không cần phân tích cú pháp bổ sung

  • Câu 3:

    Tại sao tag XML cải thiện độ tin cậy của prompt?

    GIẢI THÍCH:

    Tag XML giải quyết vấn đề ranh giới. Nếu không có chúng, một prompt dài sẽ là một khối văn bản hỗn độn, nơi hướng dẫn, ngữ cảnh và ví dụ bị lẫn lộn với nhau. Với các tag như <instructions>, <context> và <examples>, mỗi phần được phân định rõ ràng. AI biết chính xác đâu là hướng dẫn, đâu là ngữ cảnh cần suy luận và đâu là ví dụ cần làm theo. Hướng dẫn, ngữ cảnh, ví dụ và định dạng đầu ra được tách biệt rõ ràng nên AI không thể nhầm lẫn cái này với cái kia

Thứ Năm, 23/04/2026 15:22
51 👨
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
    ❖ Kỹ thuật thiết kế Prompt