Deep Dive: Safety and injection defenses
Tổng quan Safety
Prompt engineering hiện đại phải coi untrusted text là nguy cơ, không chỉ là input. Một khi model có thể gọi tool, đọc file hay truy cập MCP, prompt design và safety design là cùng một bài toán.
Bản chất của prompt injection là dữ liệu không tin cậy cố tình override instruction. Nó có thể khiến model exfiltrate data, gọi sai tool hoặc vi phạm policy mà không hề “tự nhận ra”.
Các vendor lớn đang hội tụ quanh cùng một khung: tách data khỏi instruction, dùng structured outputs để giảm freeform channels, giữ approvals bật, và chạy eval/trace graders để theo dõi hành vi thực tế.
| Lớp defense | Mục tiêu | Ví dụ |
|---|---|---|
| Input separation | Tách untrusted text khỏi developer context | User message thay vì developer message |
| Structured outputs | Giảm freeform channels | JSON schema, enums, required fields |
| Approvals + guardrails | Chặn hành động nguy hiểm | Human approval node, PII redaction |
Cơ chế Mechanics
Một workflow an toàn thường có ít nhất bốn lớp: sanitize input, separate instructions from data, constrain output bằng schema, và chặn tool action bằng approvals hoặc policy checks.
Càng nhiều tool và context sources, càng phải coi every boundary là untrusted. Model không nên được phép tự quyết định toàn bộ flow khi input chứa text lạ hoặc khi action có tác động thật.
Defense-in-depth cho agentic prompts: cô lập, constraining và approvals.
flowchart LR U[Untrusted input] --> S[Sanitize / separate] S --> C[Constrained output] C --> G[Guardrails / approvals] G --> T[Tool / action] T --> O[Observed result]
Khi dùng Fit
Bất kỳ workflow nào có RAG, browser, file access, MCP, email, ticket system hay database write đều phải coi safety là phần của prompt design.
Ở mức vận hành, guardrails quan trọng không kém prompt wording. Một prompt rất đẹp nhưng cho phép tool calls quá tự do vẫn là một hệ thống dễ bị thao túng.
Ưu điểm
- Giảm prompt injection và data leakage
- Làm rõ boundary giữa instruction và data
- Có thể kết hợp evals, approvals và validators
Nhược điểm
- Tăng friction cho developer và user
- Có thể làm pipeline chậm hơn
- Không có defense nào là tuyệt đối
Failure modes Risk
Anti-patterns cần tránh
- Nhét raw user text vào developer messages.
- Cho tool args freeform text thay vì schema.
- Tắt approvals trong workflow rủi ro cao.
- Không chạy trace graders hoặc policy evals trên agent traces.
So sánh Compare
| Defense | Giá trị | Khi nào cần |
|---|---|---|
| Structured outputs | Giảm freeform channels | Khi tool calls / JSON output |
| Tool approvals | Ngăn hành động nguy hiểm | Khi action có impact thật |
| Guardrails / evals | Theo dõi và harden liên tục | Khi workflow production |