| Single-shot → workflow → agentic → multi-agent | Mức độ bất định và tự chủ thật sự là bao nhiêu? | Dùng kiến trúc đơn giản nhất đáp ứng yêu cầu. Chỉ tăng autonomy khi bước kế tiếp phụ thuộc kết quả trung gian; chỉ multi-agent khi isolation/parallel/specialization tạo lợi ích rõ. |
| Prompt → hook → permission → code/tool gate | Đây là hướng dẫn mềm hay invariant bắt buộc? | Prompt cho judgment; hook cho trigger tất định; permission/code gate cho giới hạn không được phép vượt. Hard rule phải fail closed. |
| Tool contract → tool choice → structured error | Model có biết khi nào dùng, gọi thế nào và phục hồi ra sao? | Description phải nêu WHEN/WHAT/boundary; schema thu hẹp input; auto/any/tool/none dùng đúng mục đích; lỗi phải có category, retryability và partial result. |
| Schema-valid ≠ semantically correct | Output đúng kiểu nhưng có đúng ý nghĩa và đúng nguồn không? | Kết hợp strict schema với cross-field invariant, grounding excerpt, source locator và business validation. |
| Accuracy tổng ≠ accuracy theo segment | Chất lượng có ổn định theo document type, field và edge case? | Định nghĩa success criteria trước prompt; dùng labeled eval set, segment metrics, calibration, stratified sampling và human review theo expected risk. |
| Context lớn ≠ context tốt | Thông tin nào thực sự cần cho quyết định kế tiếp? | Giữ facts/commitments ngoài summary; trim tool output; dùng subagent/scratchpad/compaction; context là working memory cần curate. |
| Async batch ≠ real-time | Ai đang chờ, SLA là gì và failure được correlate thế nào? | Sync cho blocking flow; batch cho throughput/cost. Dùng custom_id, poll, resubmit item lỗi và version prompt/schema cùng record. |
| Production-ready ≠ demo chạy được | Ai có quyền hành động, điều gì được audit và rollback? | Least privilege, PII masking trước context, idempotency cho write, audit trail, human approval, rollback và observable state. |