Trong Bài 1, chúng ta đã thảo luận về thách thức Non-Determinism và tính an toàn của Agent. Một trong những rủi ro lớn nhất khi đưa Agent vào thực tế là việc người dùng vô tình (hoặc cố ý) gửi các thông tin nhạy cảm cho AI. Bài học này sẽ hướng dẫn bạn thiết lập một "Màng lọc bảo mật" tự động sử dụng PII Detection Guardrails, tích hợp vào quy trình phát triển chuyên nghiệp của chúng ta.
I. PII là gì?
PII (Personally Identifiable Information) là những thông tin có thể dùng để định danh một cá nhân. Trong môi trường doanh nghiệp, việc bảo vệ PII là bắt buộc để tuân thủ các chứng chỉ bảo mật như GDPR hoặc SOC2. Các ví dụ phổ biến bao gồm: Email, Số điện thoại, Địa chỉ nhà, Số thẻ ngân hàng, hoặc API Keys.
II. Các chiến lược xử lý PII (Strategies)
LangChain cung cấp 4 cách xử lý khi phát hiện thông tin nhạy cảm thông qua piiMiddleware:
redact(Mặc định): Thay thế bằng nhãn mô tả, ví dụ:[REDACTED_EMAIL]. Cách này giúp tiết kiệm Token vì nhãn thường ngắn hơn dữ liệu gốc.mask: Che một phần dữ liệu, ví dụ:****-****-****-3456.hash: Biến thành một chuỗi mã hóa. AI vẫn nhận ra đó là cùng một thực thể nhưng không biết nội dung thật.block: Ngắt kết nối ngay lập tức và báo lỗi nếu phát hiện thông tin nhạy cảm.
III. Mã nguồn: 13-pii-detection-guardrails.ts
Chúng ta sẽ tạo một Agent tích hợp nhiều tầng bảo mật. Chúng ta sử dụng createGeminiModel từ util-langchain và nạp môi trường qua env.ts.
// apps/langchain/scripts/13-pii-detection-guardrails.ts
// pnpm --filter=ai-notes-langchain run tsx scripts/13-pii-detection-guardrails.ts
import './env';
import { createGeminiModel, generateImage } from '@workspace/util-langchain';
import { createAgent, piiMiddleware } from 'langchain';
async function main() {
const model = createGeminiModel();
// 1. Initialize Agent with multiple PII Security Layers
const agent = createAgent({
model: model,
tools: [],
middleware: [
// Layer 1: Completely redact Emails from user input
piiMiddleware('email', {
strategy: 'redact',
applyToInput: true,
}),
// Layer 2: Mask Credit Card numbers (keeping only last 4 digits)
piiMiddleware('credit_card', {
strategy: 'mask',
applyToInput: true,
}),
// Layer 3: Custom guardrail using Regex (e.g., blocking potential API Keys)
piiMiddleware('api_key', {
detector: /sk-[a-zA-Z0-9]{32}/,
strategy: 'block',
applyToInput: true,
}),
],
});
// 2. Generate visual diagram
await generateImage(
agent.graph,
'graph-ignore/scripts-13-pii-guardrails.jpg',
);
console.log('--- Starting Security Guardrails Test ---');
// 3. Scenario: User sends a message with multiple sensitive entities
try {
const response = await agent.invoke({
messages: [
{
role: 'user',
content:
'Hello, my email is nam@example.com and my card is 1234-5678-9012-3456. Please save this.',
},
],
});
console.log('\n[Security Report]:');
// In the response, you can verify that the AI received the filtered version
// The middleware modifies state.messages before they reach the Model.
const filteredUserMsg = response.messages[0].content;
console.log('Filtered Input seen by AI:', filteredUserMsg);
console.log('\n[AI Response]:');
console.log(response.messages.at(-1).content);
} catch (error: any) {
// This blocks the execution if Layer 3 (API Key) is triggered
console.error('\n[SECURITY BLOCK]:', error.message);
}
}
main().catch(console.error);IV. Phân tích kỹ thuật
applyToInput: true: Đây là lá chắn quan trọng nhất. Middleware sẽ quét và lọc nội dung ngay khi bạn gọi.invoke(). AI sẽ chỉ nhìn thấy bản ghi đã được làm sạch thông tin (ví dụ:[REDACTED_EMAIL]), đảm bảo thông tin thật không bao giờ rời khỏi server của bạn hoặc đi vào hệ thống của nhà cung cấp LLM.applyToOutput: true: (Tùy chọn) Bạn có thể bật tính năng này để lọc cả câu trả lời của AI. Nếu AI vô tình nhắc lại hoặc suy luận ra thông tin nhạy cảm, nó cũng sẽ bị chặn trước khi hiện ra màn hình người dùng.- Hệ thống tập trung: Nhờ việc sử dụng
createGeminiModeltừ Bài 1, các tầng bảo mật này hoạt động nhất quán trên cùng một cấu hình Model Gemini 2.5 Flash mạnh mẽ.
Sơ đồ hoạt động:

V. Tổng kết
- PII Detection là tầng bảo vệ đầu tiên và quan trọng nhất cho sự riêng tư của người dùng trong các ứng dụng AI doanh nghiệp.
- Sử dụng
redactđể tối ưu hóa chi phí Token vàblockcho các dữ liệu tối mật. - Việc kết hợp Middleware với hệ thống tiện ích chuyên nghiệp giúp Agent của bạn không chỉ thông minh mà còn an toàn và tin cậy.
Trong bài học tiếp theo, chúng ta sẽ học về Human-in-the-loop — cách để Agent "xin phép" con người trước khi thực hiện những hành động thực sự quan trọng và nhạy cảm!