Hướng dẫn Prompt Engineering cho Tester (Phần 3): Prompt Chaining, Meta Prompting và Iterative Refinement

Tuy nhiên, có những tình huống mà các kỹ thuật cơ bản chưa đủ: tác vụ phức tạp nhiều bước phụ thuộc lẫn nhau, prompt của bạn cho output chưa tốt và bạn không biết cách cải thiện, hoặc bạn cần một quy trình bài bản để dần dần nâng chất lượng prompt qua thực tế. Bài viết này sẽ giải quyết ba tình huống đó với ba kỹ thuật cuối trong bộ công cụ Prompt Engineering theo chuẩn ISTQB CT-GenAI [2]: Prompt Chaining, Meta Prompting, và Iterative Refinement.

Phần 1: Prompt Chaining — Chia nhỏ tác vụ phức tạp

1.1. Định nghĩa

Prompt Chaining là kỹ thuật chia một tác vụ phức tạp thành một chuỗi các prompt nhỏ liên tiếp, trong đó output của prompt trước trở thành input (hoặc một phần input) của prompt sau [2].

Thay vì yêu cầu LLM giải quyết toàn bộ vấn đề cùng lúc, bạn dẫn dắt nó qua từng bước có mục tiêu rõ ràng — giống cách một mentor dẫn dắt junior tester: từng bước, từng câu hỏi, từng kiểm tra trung gian.

1.2. Vì sao chaining hiệu quả hơn "nhồi một lần"?

Có ba lý do được Anthropic và OpenAI đều đồng thuận trong tài liệu chính thức [3][4]:

LLM xử lý tốt hơn khi mỗi prompt có một mục tiêu duy nhất. Nhồi quá nhiều mục tiêu vào một prompt khiến LLM phải "chia sẻ" attention — kết quả là mỗi nhiệm vụ đều được làm ở mức trung bình.

Tester có cơ hội kiểm tra giữa chừng. Nếu bước 1 sai, bạn phát hiện ngay và sửa trước khi sang bước 2. Trong "nhồi một lần", lỗi ở bước đầu lan ra toàn bộ output và rất khó truy ngược.

Có thể tái sử dụng từng prompt riêng lẻ. Prompt "phân tích yêu cầu" có thể dùng cho hàng chục dự án khác nhau. Prompt "sinh test case từ test condition" cũng vậy.

1.3. Ví dụ thực tế — Phân tích yêu cầu đến sinh test case

Thay vì viết một prompt khổng lồ làm tất cả, hãy chia thành chuỗi 4 prompt:

Prompt 1 — Phân tích yêu cầu:

"Bạn là senior business analyst. Đọc user story sau và liệt kê các điểm chưa rõ ràng (ambiguity), các giả định ngầm, và các câu hỏi cần làm rõ với product owner. [Input: user story]"

Prompt 2 — Sinh test condition (input là output của Prompt 1):

"Dựa trên phân tích yêu cầu sau, hãy liệt kê các test condition cần kiểm thử, áp dụng kỹ thuật equivalence partitioning và boundary value analysis. [Input: kết quả Prompt 1]"

Prompt 3 — Ưu tiên hóa:

"Với danh sách test condition sau, đánh giá theo mức độ rủi ro (Cao/Trung bình/Thấp) và đề xuất top 10 condition quan trọng nhất. [Input: kết quả Prompt 2]"

Prompt 4 — Sinh test case:

"Với 10 condition đã chọn, viết test case đầy đủ theo format chuẩn của team. [Input: kết quả Prompt 3]"

Bạn review và điều chỉnh giữa mỗi bước. Chất lượng output cuối cùng cao hơn rõ rệt so với một prompt khổng lồ.

1.4. Khi nào nên dùng Prompt Chaining?

Phù hợp khi: tác vụ có nhiều bước phụ thuộc nhau, mỗi bước có giá trị riêng (test analysis → design → execution support), cần kiểm soát chất lượng từng bước, muốn xây prompt tái sử dụng.

Không phù hợp khi: tác vụ đơn giản chỉ một bước, output cuối là cái duy nhất bạn quan tâm và các bước trung gian không cần kiểm tra, hoặc khi tốc độ là ưu tiên hàng đầu (chaining mất nhiều lượt hơn).

Phần 2: Meta Prompting — Dùng LLM để cải thiện chính prompt của bạn

2.1. Định nghĩa

Meta Prompting là kỹ thuật dùng LLM để cải thiện hoặc tạo ra prompt [2]. Thay vì tự ngồi nghĩ cách viết prompt cho hoàn hảo, bạn nhờ LLM gợi ý — biến LLM thành "co-author" của chính prompt mình sẽ dùng.

Đây là kỹ thuật cực kỳ hữu ích cho tester mới làm quen với prompt engineering, vì nó giúp bạn học được "cách viết prompt tốt" thông qua chính các đề xuất của LLM.

2.2. Ba ứng dụng phổ biến

Ứng dụng 1 — Cải thiện prompt yếu:

Tôi có prompt sau và output chưa đạt yêu cầu:

"Viết test case cho chức năng login."

Hãy phân tích các điểm yếu của prompt này, sau đó viết lại
một phiên bản đầy đủ 6 thành phần RCIICO (Role, Context,
Instruction, Input data, Constraints, Output format) phù hợp
cho việc sinh test case chuyên nghiệp.

LLM sẽ chỉ ra prompt thiếu role, thiếu context, instruction quá mơ hồ — và đề xuất bản viết lại đầy đủ.

Ứng dụng 2 — Sinh prompt cho tác vụ mới:

Tôi cần một prompt giúp tổng hợp test report cuối sprint,
output sẽ gửi cho stakeholder cấp giám đốc.

Hãy thiết kế một prompt chuẩn theo framework RCIICO, kèm gợi ý
3-5 ví dụ test report mẫu (few-shot) mà tôi có thể bổ sung.

LLM tạo ra "khung sườn" prompt mà bạn chỉ cần điền dữ liệu cụ thể.

Ứng dụng 3 — Sinh chuỗi prompt chaining:

Tôi muốn xây một chuỗi prompt chaining cho quy trình:
yêu cầu khách hàng → test plan → test case → test data.

Hãy đề xuất 4 prompt liên tiếp với output trung gian rõ ràng,
mỗi prompt theo chuẩn RCIICO.

LLM thiết kế giúp bạn workflow hoàn chỉnh.

2.3. Lưu ý khi dùng Meta Prompting

Đừng "tin mù" đề xuất của LLM. Meta prompting cho ra điểm khởi đầu tốt, nhưng bạn vẫn cần review và điều chỉnh theo kiến thức nghiệp vụ của mình. LLM có thể đề xuất constraint không phù hợp với team, hoặc bỏ sót yếu tố đặc thù của ngành (ngân hàng, y tế…).

Cung cấp ví dụ "prompt tốt" trong meta prompt. Khi yêu cầu LLM cải thiện prompt, hãy đính kèm 1-2 prompt RCIICO chuẩn của bạn làm tham chiếu. LLM sẽ "học theo" style đó, kết quả phù hợp hơn với team.

Lưu lại các meta prompt hiệu quả. Sau vài tuần, bạn sẽ có "thư viện meta prompt" — những công thức đã chứng minh giúp tạo prompt chất lượng cho từng loại tác vụ.

Phần 3: Iterative Refinement — Vòng lặp đánh giá và tinh chỉnh

3.1. Định nghĩa

Iterative Refinement là kỹ thuật tinh chỉnh prompt qua nhiều vòng lặp, dựa trên đánh giá output thực tế từ mỗi lần chạy [5]. ISTQB CT-GenAI Section 2.3 nhấn mạnh: prompt engineering không phải "viết một lần là xong" mà là một quá trình lặp có hệ thống [2].

Đây là kỹ thuật kết nối prompt engineering với văn hóa kỹ thuật chuyên nghiệp: bạn không "may mắn có prompt tốt", bạn xây nó qua thời gian.

3.2. Quy trình 4 bước

Bước 1 — Đánh giá output có hệ thống. Sau mỗi lần chạy prompt, đối chiếu output với tiêu chí định trước. Đặt 4 câu hỏi:

Có hallucination không (LLM tự bịa thông tin sai)?

Có thiếu nội dung quan trọng không?

Có thừa nội dung không liên quan không?

Format có đúng yêu cầu không?

Bước 2 — Xác định nguyên nhân. Output sai thường do một trong các nguyên nhân:

Thiếu context: LLM không biết về hệ thống/ngành đặc thù → bổ sung Context.

Instruction mơ hồ: LLM tự diễn giải khác ý bạn → làm rõ Instruction.

Thiếu constraint: output dài lan man hoặc lệch hướng → bổ sung Constraints.

Thiếu ví dụ: format không đồng bộ → thêm few-shot examples.

Bước 3 — Cập nhật prompt với thay đổi nhỏ, tập trung. Đừng sửa cùng lúc nhiều thứ — bạn sẽ không biết thay đổi nào thực sự giúp ích. Mỗi vòng lặp, sửa một điểm rõ ràng.

Bước 4 — Lưu phiên bản hiệu quả. Khi prompt đạt chất lượng mong muốn, lưu vào file Markdown trong IDE (như đã hướng dẫn ở bài "Tester thời AI: chuyển dịch từ Excel sang IDE") với comment giải thích vì sao prompt này hoạt động tốt. Đây là tài sản dài hạn của bạn.

3.3. Ví dụ thực tế — Một prompt qua 3 vòng

Vòng 1 — Prompt ban đầu:

"Sinh 10 test case cho chức năng tìm kiếm sản phẩm."

Đánh giá: Output có test case nhưng quá generic, không phù hợp với hệ thống e-commerce ngành thời trang của team.

Vòng 2 — Bổ sung Role và Context:

"Bạn là tester e-commerce ngành thời trang. Hệ thống có filter theo size, màu, thương hiệu, khoảng giá. Sinh 10 test case cho chức năng tìm kiếm sản phẩm."

Đánh giá: Test case đã sát thực tế hơn, nhưng format không đồng bộ với template TestRail của team.

Vòng 3 — Thêm Output format và 1 ví dụ mẫu:

"[Role + Context như vòng 2]. Sinh 10 test case theo format sau: [đính kèm 1 test case mẫu của team]. Output dưới dạng bảng Markdown đúng cấu trúc."

Đánh giá: Output đạt yêu cầu, có thể copy-paste vào TestRail. Lưu prompt này vào thư viện cá nhân.

3.4. Lưu ý quan trọng

Theo các nghiên cứu của Anthropic, một prompt sau 3-5 vòng tinh chỉnh thường tăng chất lượng output rõ rệt so với prompt ban đầu [3]. Đầu tư 30 phút iterative refinement cho một prompt sẽ dùng 50 lần là khoản đầu tư có lãi suất cực cao.

Phần 4: Kết hợp ba kỹ thuật trong workflow thực tế

Ba kỹ thuật này không độc lập — chúng bổ trợ cho nhau trong workflow chuyên nghiệp:

Bắt đầu với Meta Prompting để tạo bản nháp prompt cho tác vụ mới.

Áp dụng Prompt Chaining nếu tác vụ phức tạp nhiều bước.

Dùng Iterative Refinement để tinh chỉnh từng prompt trong chuỗi qua thời gian.

Ví dụ cụ thể: bạn cần xây quy trình kiểm thử hồi quy hằng tuần. Tuần đầu, bạn dùng meta prompting để LLM đề xuất chuỗi 4 prompt chaining. Tuần thứ 2-3, bạn iterative refinement từng prompt dựa trên output thực tế. Đến tuần thứ 4, bạn có một workflow tự động chất lượng cao, có thể tái sử dụng dài hạn.

Lời kết

Với ba kỹ thuật Prompt Chaining, Meta Prompting và Iterative Refinement, bộ công cụ Prompt Engineering theo chuẩn ISTQB CT-GenAI của bạn đã hoàn chỉnh. Bạn không chỉ biết viết prompt tốt cho tác vụ đơn giản (qua RCIICO ở Phần 1), không chỉ biết tận dụng ví dụ để LLM hiểu pattern (qua few-shot ở Phần 2), mà còn có thể giải quyết tác vụ phức tạp, cải thiện chính prompt của mình, và xây quy trình tinh chỉnh có hệ thống.

Lời khuyên cuối cho cả series: prompt engineering không phải kỹ năng học một lần. Nó là kỹ năng "cơ bắp" — càng tập càng giỏi. Hãy bắt đầu bằng việc xây thư viện prompt cá nhân ngay tuần này: lưu 5 prompt RCIICO tốt nhất của bạn, kèm 2-3 chuỗi chaining cho các quy trình lặp lại, và một file ghi lại lịch sử iterative refinement. Sau ba tháng, bạn sẽ thấy năng suất kiểm thử của mình thay đổi rõ rệt.

Tại IT Learn, chúng tôi tin rằng tester làm chủ được prompt engineering theo chuẩn ISTQB CT-GenAI sẽ có lợi thế nghề nghiệp rõ rệt trong 3-5 năm tới — không chỉ vì biết "ra lệnh cho AI", mà vì biết làm việc với AI một cách có hệ thống và chuyên nghiệp.

Theo dõi blog của IT Learn để cập nhật những bài hướng dẫn chuyên sâu mới nhất, hoặc liên hệ với chúng tôi qua hộp tin nhắn để được tư vấn lộ trình học tập phù hợp.

Tài liệu tham khảo

[1] IT Learn. "Hướng dẫn Prompt Engineering cho Tester (Phần 1): Làm chủ framework RCIICO chuẩn ISTQB CT-GenAI" — bài trước trong series.

[2] ISTQB®. Certified Tester Specialist Level Syllabus – Testing with Generative AI (CT-GenAI) v1.0, July 2025. Tham chiếu cụ thể: Section 2.1.2 (Prompt Engineering Techniques — prompt chaining, meta prompting), Section 2.3 (Evaluate GenAI Results and Refine Prompts). https://istqb.org/

[3] Anthropic. "Chain Complex Prompts for Stronger Performance", Claude Documentation — hướng dẫn chính thức về prompt chaining và iterative refinement. https://docs.claude.com/en/docs/build-with-claude/prompt-engineering/chain-prompts

[4] OpenAI. "Best Practices for Prompt Engineering with the OpenAI API" — phần "Split complex tasks into simpler subtasks" tương đương với prompt chaining. https://platform.openai.com/docs/guides/prompt-engineering

[5] Anthropic. "Prompt Engineering Overview", Claude Documentation — phần "Prompt iteration and refinement". https://docs.claude.com/en/docs/build-with-claude/prompt-engineering/overview