Claude Certification Guide
0% chương trình học đã hoàn thành
1.4

Thực Thi Quy Trình và Bàn Giao

Những điều bạn cần biết

Task Statement 1.4 vạch ra ranh giới rõ ràng giữa hai cách tiếp cận để kiểm soát hành vi của agent: hướng dẫn dựa trên prompt và thực thi theo lập trình. Kỳ thi kiểm tra sự khác biệt này liên tục, và nếu hiểu sai ở các tình huống rủi ro cao thì bạn sẽ mất điểm.

Phổ Thực Thi

Có hai cách hoàn toàn khác nhau để thực thi thứ tự quy trình làm việc trong một hệ thống agentic:

Hướng dẫn dựa trên prompt nghĩa là đưa các chỉ thị vào system prompt. Ví dụ: "Luôn xác minh danh tính khách hàng trước khi xử lý hoàn tiền." Cách này hoạt động hầu hết thời gian — có lẽ 90-95% trường hợp. Nhưng nó có tỷ lệ thất bại khác không. Model mang tính xác suất. Đôi khi nó sẽ bỏ qua các bước, sắp xếp lại thứ tự, hoặc diễn giải chỉ thị một cách lỏng lẻo. Với các thao tác rủi ro thấp, tỷ lệ thất bại này là chấp nhận được.

Thực thi theo lập trình nghĩa là triển khai hook, cổng điều kiện tiên quyết (prerequisite gate), hoặc kiểm tra ở mức mã nguồn để chặn vật lý các tool ở giai đoạn sau cho đến khi các điều kiện tiên quyết được hoàn thành. Ví dụ: tool process_refund không thể thực thi cho đến khi get_customer đã trả về một ID khách hàng đã được xác minh. Cách này hoạt động mọi lần. Nó mang tính tất định, không mang tính xác suất. Dù model quyết định làm gì đi nữa, cổng vẫn ngăn chặn thứ tự thực thi sai.

Khái niệm chính

Hướng dẫn dựa trên prompt mang tính xác suất — nó hoạt động hầu hết thời gian. Thực thi theo lập trình mang tính tất định — nó hoạt động mọi lần. Quy tắc quyết định trong kỳ thi: nếu một lần thất bại duy nhất có thể gây tổn thất tài chính, vi phạm bảo mật, hoặc vi phạm tuân thủ, hãy dùng thực thi theo lập trình.

Quy Tắc Quyết Định Trong Kỳ Thi

Kỳ thi áp dụng một quy tắc quyết định nhất quán trên nhiều tình huống:

  • Các thao tác tài chính (hoàn tiền, chuyển khoản, thanh toán): thực thi theo lập trình. Một lần hoàn tiền chưa được xác minh vào sai tài khoản là một tổn thất tài chính.
  • Các thao tác bảo mật (xác minh danh tính, kiểm soát truy cập): thực thi theo lập trình. Một lần vượt qua xác minh danh tính là một vi phạm bảo mật.
  • Các thao tác tuân thủ (kiểm tra AML, yêu cầu quy định): thực thi theo lập trình. Một lần bỏ sót kiểm tra tuân thủ có thể dẫn đến hình phạt pháp lý.
  • Các thao tác rủi ro thấp (sở thích định dạng, hướng dẫn phong cách, thứ tự đầu ra): hướng dẫn dựa trên prompt là chấp nhận được. Một sự không nhất quán về định dạng không phải là rủi ro kinh doanh.

Kỳ thi sẽ đưa ra các giải pháp dựa trên prompt như các lựa chọn đáp án cho các tình huống rủi ro cao. Hãy loại bỏ chúng. System prompt được tăng cường, các ví dụ few-shot, và các chỉ thị mạnh hơn đều cải thiện độ chính xác nhưng không cái nào cung cấp đảm bảo tất định. Khi tình huống liên quan đến tiền bạc, bảo mật, hoặc tuân thủ, đáp án luôn là thực thi theo lập trình.

Bẫy thi: Exam Trap

Kỳ thi liên tục đưa ra "thêm chỉ thị mạnh hơn vào system prompt" hoặc "đưa vào các ví dụ few-shot cho thấy quy trình đúng" như các phương án gây nhiễu cho các tình huống rủi ro cao. Những đáp án này cải thiện xác suất nhưng không loại bỏ tỷ lệ thất bại. Đối với các thao tác tài chính, bảo mật, và tuân thủ, chỉ có thực thi theo lập trình là đúng.

Cổng Điều Kiện Tiên Quyết Trong Thực Tế

Một cổng điều kiện tiên quyết là một kiểm tra theo lập trình chặn một tool không cho thực thi cho đến khi một điều kiện trước đó được đáp ứng. Trong một agent hỗ trợ khách hàng:

  1. Agent có quyền truy cập các tool get_customer, lookup_order, và process_refund.
  2. Một cổng điều kiện tiên quyết kiểm tra: get_customer đã trả về một ID khách hàng đã được xác minh cho phiên này chưa?
  3. Nếu có, process_refund thực thi bình thường.
  4. Nếu không, process_refund trả về thông báo lỗi: "Không thể xử lý hoàn tiền — danh tính khách hàng chưa được xác minh. Vui lòng gọi get_customer trước."

Cổng là mã nguồn, không phải một chỉ thị prompt. Model không thể vượt qua nó bằng cách quyết định bỏ qua bước xác minh. Ngay cả khi model cố gắng gọi process_refund trực tiếp, cổng vẫn chặn lệnh gọi đó và trả về một lỗi buộc model phải xác minh danh tính trước.

Hook Vòng Đời Subagent: SubagentStart và SubagentStop

Claude Agent SDK cung cấp các sự kiện hook vòng đời dành riêng cho việc quản lý subagent. Chúng bổ sung cho các hook PreToolUse và PostToolUse được đề cập trong Task Statement 1.5.

SubagentStart kích hoạt khi một subagent được sinh ra thông qua Agent tool (trước đây là Task tool). Nó cung cấp cho coordinator một điểm hook để ghi nhật ký, xác thực, hoặc sửa đổi lệnh gọi subagent trước khi subagent bắt đầu thực thi. Các trường hợp sử dụng bao gồm thực thi giới hạn tốc độ khi sinh subagent, ghi nhật ký subagent nào được gọi để phục vụ quan sát, và xác thực rằng coordinator đang truyền đúng ngữ cảnh cần thiết.

SubagentStop kích hoạt khi một subagent hoàn thành thực thi và trả kết quả về cho coordinator. Hook này cho phép bạn chặn, xác thực, hoặc biến đổi đầu ra của subagent trước khi coordinator xử lý nó. Các trường hợp sử dụng bao gồm xác thực rằng đầu ra của subagent tuân theo các schema mong đợi, loại bỏ dữ liệu nhạy cảm khỏi kết quả của subagent, và ghi nhật ký hoàn thành của subagent để giám sát hiệu năng.

Hook có phạm vi subagent: Các subagent có thể định nghĩa các hook PreToolUse và PostToolUse của riêng chúng trong frontmatter AgentDefinition của chúng. Các hook này có phạm vi giới hạn trong subagent — chúng chỉ chặn các lệnh gọi tool được thực hiện bởi subagent cụ thể đó, không phải coordinator hay các subagent khác. Điều này cho phép thực thi chính sách theo từng subagent (ví dụ: một subagent xử lý hóa đơn có thể có một hook PreToolUse chặn các khoản hoàn tiền vượt ngưỡng, trong khi một subagent hỗ trợ kỹ thuật không có giới hạn như vậy).

Tự động chuyển đổi hook Stop: Khi frontmatter của một subagent định nghĩa các hook Stop, chúng sẽ tự động được chuyển đổi thành các sự kiện SubagentStop khi chạy. Điều này có nghĩa là bạn có thể định nghĩa logic dọn dẹp hoặc xác thực ngay trong cấu hình của chính subagent, và SDK đảm bảo nó chạy như một sự kiện vòng đời SubagentStop khi subagent hoàn thành.

Khái niệm chính

SubagentStart và SubagentStop là các hook vòng đời để quan sát và kiểm soát việc gọi subagent. Các subagent có thể định nghĩa các hook PreToolUse/PostToolUse của riêng chúng có phạm vi giới hạn trong quá trình thực thi của chúng, và các hook Stop trong frontmatter của subagent tự động chuyển đổi thành các sự kiện SubagentStop khi chạy.

Xử Lý Yêu Cầu Nhiều Vấn Đề

Khách hàng thường xuyên gửi các yêu cầu với nhiều vấn đề: "Tôi muốn trả lại đơn hàng, cập nhật địa chỉ giao hàng, và hỏi về điểm thưởng thành viên của tôi." Kỳ thi kiểm tra cách các agent nên xử lý các yêu cầu ghép này.

Cách tiếp cận đúng:

  1. Phân rã yêu cầu thành các mục riêng biệt (trả hàng, cập nhật địa chỉ, hỏi về điểm thưởng).
  2. Điều tra từng mục song song bằng cách sử dụng ngữ cảnh dùng chung (thông tin tài khoản của khách hàng liên quan đến cả ba mục).
  3. Tổng hợp một giải pháp thống nhất giải quyết tất cả các mục trong một phản hồi duy nhất.

Cách tiếp cận sai là xử lý chúng tuần tự bằng các cuộc hội thoại riêng biệt, hoặc chỉ giải quyết mục đầu tiên và bỏ quên phần còn lại.

Giao Thức Bàn Giao Có Cấu Trúc

Khi một agent không thể giải quyết một vấn đề và phải chuyển lên cho một nhân viên hỗ trợ (human agent), việc bàn giao phải tuân theo một giao thức có cấu trúc. Ràng buộc then chốt: nhân viên hỗ trợ KHÔNG có quyền truy cập vào bản ghi cuộc hội thoại. Họ không thể cuộn qua lịch sử trò chuyện để hiểu vấn đề.

Một bản tóm tắt bàn giao đúng chuẩn phải tự chứa đầy đủ và bao gồm:

  • ID khách hàng — để nhân viên hỗ trợ có thể tra cứu tài khoản.
  • Tóm tắt hội thoại — khách hàng yêu cầu điều gì và những gì đã được thử.
  • Phân tích nguyên nhân gốc rễ — đánh giá của agent về vấn đề tiềm ẩn.
  • Số tiền hoàn trả (nếu có) — con số tài chính cụ thể, không phải một tham chiếu mơ hồ.
  • Hành động đề xuất — điều mà agent tin rằng nhân viên hỗ trợ nên làm.

Bản tóm tắt này là thông tin duy nhất mà nhân viên hỗ trợ nhận được. Nếu nó không đầy đủ, nhân viên hỗ trợ phải yêu cầu khách hàng lặp lại mọi thứ, tạo ra trải nghiệm tồi tệ.

Ví Dụ Thực Tế: Tỷ Lệ Thất Bại 8%

Dữ liệu thực tế cho thấy một agent hỗ trợ khách hàng xử lý hoàn tiền mà không xác minh quyền sở hữu tài khoản trong 8% các trường hợp. System prompt chỉ thị: "Luôn xác minh danh tính khách hàng trước khi xử lý bất kỳ khoản hoàn tiền nào." Prompt hoạt động đúng 92% thời gian nhưng thất bại 8% thời gian.

Tỷ lệ thất bại 8% đã dẫn đến các khoản hoàn tiền được xử lý vào sai tài khoản. Đây là một thao tác tài chính với hậu quả tiền tệ thực sự.

Cách khắc phục là một cổng điều kiện tiên quyết theo lập trình. Trước khi process_refund có thể thực thi, hệ thống kiểm tra rằng get_customer đã trả về một ID khách hàng đã được xác minh trong phiên hiện tại. Điều này loại bỏ hoàn toàn tỷ lệ thất bại 8% — không phải bằng cách cải thiện prompt, mà bằng cách ngăn chặn vật lý thứ tự thực thi sai.

Bẫy thi

Bẫy thi: Enhanced system prompt instructions as the fix for high-stakes compliance failures

Nếu prompt hiện tại đã chỉ thị đúng quy trình nhưng vẫn thất bại 8% thời gian, một prompt mạnh hơn có thể giảm tỷ lệ thất bại xuống 3-4% nhưng sẽ không bao giờ đạt 0%. Các thao tác tài chính, bảo mật, và tuân thủ đòi hỏi thực thi theo lập trình để có đảm bảo tất định.

Bẫy thi: Few-shot examples as sufficient for guaranteed compliance

Các ví dụ few-shot cải thiện hành vi của model nhưng vẫn mang tính xác suất. Chúng không thể cung cấp mức thực thi 100% cần thiết cho các thao tác tài chính và tuân thủ. Hãy dùng các cổng điều kiện tiên quyết theo lập trình.

Bẫy thi: Routing classifiers proposed to fix per-agent compliance issues

Một bộ phân loại định tuyến (routing classifier) quyết định agent nào xử lý một yêu cầu. Lỗi tuân thủ xảy ra trong chuỗi thực thi của agent, không phải ở cấp độ định tuyến. Các bộ phân loại xử lý việc định tuyến, không phải việc thực thi quy trình theo từng agent.

Bẫy thi: Handoff summaries that omit critical fields like customer ID or recommended action

Nhân viên hỗ trợ không có quyền truy cập vào bản ghi cuộc hội thoại. Bản tóm tắt bàn giao phải tự chứa đầy đủ với tất cả các trường bắt buộc: ID khách hàng, tóm tắt hội thoại, phân tích nguyên nhân gốc rễ, số tiền hoàn trả, và hành động đề xuất.

Tình huống luyện tập

Không tìm thấy câu hỏi luyện tập "q-1-4-001".

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

Xây Dựng Cổng Điều Kiện Tiên Quyết Cho Các Thao Tác Tài Chính

Bạn sẽ học được gì

  • Vì sao thực thi theo lập trình là bắt buộc đối với các thao tác tài chính thay vì hướng dẫn dựa trên prompt
  • Cách các cổng điều kiện tiên quyết chặn vật lý việc thực thi tool cho đến khi các điều kiện tiên quyết được đáp ứng
  • Sự khác biệt giữa tỷ lệ thất bại prompt 8% và tỷ lệ thất bại cổng 0%
  • Cách triển khai các giao thức bàn giao có cấu trúc với tất cả các trường bắt buộc
  • Cách các yêu cầu nhiều vấn đề nên được phân rã và xử lý song song

Các bước

Vì sao: Ba tool này tạo ra chính xác tình huống mà kỳ thi sử dụng cho câu hỏi về tỷ lệ thất bại 8%. Sự phụ thuộc về quy trình giữa get_customer và process_refund là nơi thực thi theo lập trình trở nên thiết yếu.

Bạn sẽ thấy: Ba định nghĩa tool với input_schema JSON Schema đúng chuẩn. get_customer nhận tên hoặc email, lookup_order nhận ID đơn hàng, và process_refund nhận ID khách hàng và số tiền.

Vì sao: Đây là khái niệm cốt lõi của kỳ thi: các chỉ thị prompt hoạt động đúng 92% thời gian nhưng thất bại 8%. Một cổng điều kiện tiên quyết cung cấp mức thực thi tất định 100%. Kỳ thi luôn loại bỏ các giải pháp dựa trên prompt cho các thao tác tài chính.

Bạn sẽ thấy: Một bộ theo dõi trạng thái ở cấp phiên ghi lại liệu get_customer đã trả về một khách hàng đã được xác minh hay chưa. Bộ xử lý process_refund kiểm tra trạng thái này trước khi thực thi và trả về một lỗi nếu việc xác minh chưa xảy ra.

Vì sao: Việc kiểm tra nỗ lực vượt qua cho thấy sự khác biệt giữa thực thi dựa trên prompt và thực thi theo lập trình. Ngay cả khi model quyết định bỏ qua xác minh, cổng vẫn chặn hành động — đó chính là toàn bộ mục đích của thực thi tất định.

Bạn sẽ thấy: Agent cố gắng gọi process_refund mà không xác minh trước. Cổng trả về một thông báo lỗi bị chặn. Sau đó agent gọi get_customer trước khi thử lại việc hoàn tiền thành công.

Vì sao: Nhân viên hỗ trợ KHÔNG có quyền truy cập vào bản ghi cuộc hội thoại. Bản tóm tắt bàn giao là thông tin duy nhất họ nhận được. Kỳ thi kiểm tra xem bạn có bao gồm tất cả năm trường bắt buộc hay không: ID khách hàng, tóm tắt, nguyên nhân gốc rễ, số tiền, và hành động đề xuất.

Bạn sẽ thấy: Một hàm bàn giao tạo ra một đối tượng có cấu trúc với cả năm trường được điền đầy đủ. Không có trường nào để trống hoặc chứa văn bản giữ chỗ.

Vì sao: Các yêu cầu nhiều vấn đề kiểm tra xem agent có phân rã yêu cầu thành các mục riêng biệt và giải quyết tất cả chúng hay không. Kỳ thi mong đợi sự phân rã, điều tra song song, và giải pháp thống nhất — không phải xử lý tuần tự hay bỏ quên các mục.

Bạn sẽ thấy: Agent xác định cả ba vấn đề, điều tra từng vấn đề, và tạo ra một bản tóm tắt bàn giao bao quát cả ba vấn đề với chi tiết cụ thể cho từng vấn đề. Không có vấn đề nào bị bỏ sót.

Nguồn tham khảo