Hook dự án: khách hàng EU yêu cầu compliance audit
Tháng 5/2026, team chúng tôi nhận yêu cầu từ khách hàng fintech Đức: hệ thống AI scoring tín dụng của họ phải đáp ứng EU AI Act trước ngày 2/8/2026, nếu không họ sẽ ngừng cung cấp dịch vụ tại thị trường EU. Team phụ trách gồm 4 backend developer Việt Nam và 1 solution architect, làm việc từ xa qua hai múi giờ.
Đây không phải case đặc biệt. Theo nguồn từ Breaking Cube Tech (3/2026), đã có developer ở Mỹ mất hai tuần code resume screener cho HR platform rồi mới phát hiện đó là high-risk AI system theo Annex III. Tương tự với team chúng tôi: phân loại risk sai từ đầu sẽ dẫn đến phải retrofit toàn bộ audit logging và human oversight trên codebase đã chạy production.
Trong bài này, tôi chia sẻ 4 điểm kỹ thuật cụ thể team cần kiểm tra, kèm code .NET mẫu. Mục tiêu: team Việt Nam đang xây AI cho khách hàng EU có thể tự audit trong 2 tuần, thay vì phát hiện vấn đề vào phút chót.
Timeline 3 mốc quan trọng
Theo Regulation (EU) 2024/1689, có ba mốc thời gian cần nhớ:
- Tháng 2/2025: Các AI practice bị cấm đã có hiệu lực (social scoring, manipulative AI, untargeted facial scraping).
- Tháng 8/2025: General-purpose AI model obligations có hiệu lực. Chủ yếu áp dụng cho OpenAI, Anthropic, Google - các nhà cung cấp model lớn. Nếu team bạn chỉ gọi API của họ, bạn thuộc "deployer" và chịu trách nhiệm về cách ứng dụng dùng model.
- 2/8/2026: High-risk AI system requirements có hiệu lực. Đây là mốc quan trọng nhất cho team đang xây sản phẩm AI ở EU.
Nếu hệ thống AI của bạn vẫn còn chạy production sau tháng 8, bạn nên đang lên kế hoạch compliance từ bây giờ. Retrofit tốn gấp đôi thời gian so với thiết kế ngay từ đầu.
4 điểm kỹ thuật team Việt Nam hay bỏ sót
1. Phân loại risk sai từ đầu
EU AI Act phân loại AI theo 4 mức: Unacceptable (cấm), High, Limited, Minimal. Full taxonomy nằm ở Annex III - danh sách 8 nhóm high-risk use case. Trong đó, employment-related AI (resume screening, interview scoring, performance evaluation) là high-risk bất kể chỉ là "suggestion tool" hay "human always makes the final call". Nếu AI tham gia filter hoặc rank candidate, bạn đã ở high-risk territory.
Team chúng tôi đã phân loại sai 1 use case lúc đầu: một chatbot hỗ trợ khách hàng nghĩ rằng "limited risk" vì chỉ trả lời câu hỏi. Nhưng khi chatbot đó bắt đầu gợi ý sản phẩm tài chính dựa trên phân tích hành vi, nó chuyển sang high-risk vì ảnh hưởng đến quyết định tài chính của người dùng. Sửa classification từ đầu tốn ít công hơn sửa sau khi đã viết test.
2. Audit logging - phần đau đầu nhất
Đây là yêu cầu khó nhất về mặt kỹ thuật: AI system phải tự động ghi log các sự kiện trong vận hành. Thời gian lưu log được quy định là "appropriate period" - khá mơ hồ. Team chúng tôi chọn 5 năm dựa trên precedent GDPR và tư vấn từ luật sư Đức. Con số này có thể quá thấp hoặc quá cao tùy member state.
Vấn đề thực tế: khi audit database down, bạn phải có fallback. Không thể silently drop audit records cho high-risk AI - đó là điều cơ quan quản lý sẽ phát hiện đầu tiên khi điều tra.
Đây là middleware audit logging team chúng tôi viết cho .NET, dùng Entity Framework Core và có fallback ra local file:
public sealed class AuditLoggingMiddleware
{
private readonly RequestDelegate _next;
private readonly AuditDbContext _auditDb;
private readonly ILogger<AuditLoggingMiddleware> _logger;
private const string FallbackPath = "./audit-fallback.ndjson";
public AuditLoggingMiddleware(
RequestDelegate next,
AuditDbContext auditDb,
ILogger<AuditLoggingMiddleware> logger)
{
_next = next;
_auditDb = auditDb;
_logger = logger;
}
public async Task InvokeAsync(HttpContext context)
{
// Chỉ audit các endpoint AI
if (!context.Request.Path.StartsWithSegments("/api/ai"))
{
await _next(context);
return;
}
var startTime = DateTimeOffset.UtcNow;
var auditEntry = new AuditEntry
{
Id = Guid.NewGuid(),
Endpoint = context.Request.Path,
Method = context.Request.Method,
ModelVersion = "gpt-5.6-2026-06",
UserId = context.User?.Identity?.Name ?? "anonymous",
RequestHash = HashPii(context.Request.Body),
Timestamp = startTime
};
try
{
await _next(context);
// Log cả request thành công và thất bại
auditEntry.ResponseStatus = context.Response.StatusCode;
auditEntry.ProcessingTimeMs =
(long)(DateTimeOffset.UtcNow - startTime).TotalMilliseconds;
await SafeWriteAuditAsync(auditEntry);
}
catch (Exception ex)
{
auditEntry.ResponseStatus = 500;
auditEntry.ErrorMessage = ex.Message;
// VẪN log khi exception - regulator quan tâm cả request fail
await SafeWriteAuditAsync(auditEntry);
throw;
}
}
private async Task SafeWriteAuditAsync(AuditEntry entry)
{
try
{
_auditDb.AuditEntries.Add(entry);
await _auditDb.SaveChangesAsync();
}
catch (Exception dbEx)
{
// Fallback: ghi ra local file, batch import khi DB recover
_logger.LogError(dbEx,
"Audit DB write failed for {Endpoint}, falling back to file",
entry.Endpoint);
var line = JsonSerializer.Serialize(entry);
await File.AppendAllTextAsync(FallbackPath, line + Environment.NewLine);
}
}
private static string HashPii(Stream body)
{
// PII hashing: tách riêng PII fields để audit log
// vẫn cho biết WHAT xảy ra nhưng không lộ WHO
// Implementation chi tiết phụ thuộc schema cụ thể
using var sha = SHA256.Create();
var hash = sha.ComputeHash(body);
return Convert.ToHexString(hash);
}
}
Code trên xử lý 2 vấn đề thực tế: fallback khi DB down, và phải log cả request thất bại (không chỉ request thành công). Phần PII hashing tách riêng mất 3 ngày để làm đúng vừa GDPR vừa audit.
3. Human override không phải checkbox
Mọi output AI high-risk phải có khả năng bị human override. Khi recruiter override ranking của AI, hành động đó phải được log riêng. Article 14 yêu cầu hệ thống phải được thiết kế để con người "properly understand" output và "decide not to use" nó. Một nút "Approve" mà không có ý nghĩa thực sự không đáp ứng yêu cầu này.
Team chúng tôi đã gặp tình huống khách hàng muốn gộp "approve" thành một nút bulk để tiết kiệm thời gian. Chúng tôi phải giải thích rằng bulk approve mà không qua từng case không phải human oversight thực sự, và sẽ bị coi là non-compliant. Khách hàng đã đồng ý tách thành approve từng case với ghi chú bắt buộc.
4. Conformity assessment - phần dễ trì hoãn
Đây là phần team hay trì hoãn vì flowchart của Chapter III khá phức tạp. Theo Article 43: high-risk system có thể dùng internal conformity assessment (Annex VI) hoặc third-party (Annex VII) tùy loại. Employment AI không phải safety-critical thường qualify cho self-assessment - nhưng ranh giới mơ hồ.
Hai luật sư team tôi hỏi cho hai câu trả lời khác nhau về cùng một use case. Khuyến nghị: đừng tự quyết, thuê luật sư EU có kinh nghiệm về AI Act.
Provider vs Deployer - ranh giới quan trọng
EU AI Act phân biệt rõ hai vai trò:
- Provider: cung cấp general-purpose AI model. OpenAI, Anthropic, Google thuộc nhóm này. Họ chịu trách nhiệm về model documentation, training data summary, adversarial testing.
- Deployer: xây ứng dụng trên model. Nếu bạn gọi OpenAI API, bạn là deployer. Bạn chịu trách nhiệm về cách ứng dụng dùng model: risk classification, transparency, audit logging, human oversight.
Điều quan trọng cho team Việt Nam: bạn không phải audit training data của GPT-4. Nhưng nếu bạn fine-tune một model, ranh giới provider/deployer trở nên mờ. EU AI Office guidance về vấn đề này còn sơ sài. Một số luật sư cho rằng fine-tuning khiến bạn thành "provider" của một high-risk AI model với bộ nghĩa vụ hoàn toàn khác. Số khác cho rằng bạn vẫn là deployer. Hiện chưa có consensus.
Team chúng tôi quyết định: nếu phải fine-tune cho use case high-risk, thuê thêm luật sư chuyên EU AI Act để review classification.
Có áp dụng nếu team bạn ở Việt Nam không?
Có, trong hầu hết trường hợp. Article 2(1) cover ba trường hợp: provider placing AI on EU market, deployer located in EU, và provider/deployer located outside EU whose AI system output is "used in the Union". Nếu app của bạn có user EU, EU AI Act áp dụng - bất kể công ty đặt ở đâu. Cùng logic lãnh thổ như GDPR: quy định theo user, không theo trụ sở công ty.
Một số developer Việt Nam tôi trao đổi nghĩ đây là "vấn đề châu Âu". Không phải, nếu bạn có khách hàng châu Âu. Ranh giới rất đơn giản: user ở EU + AI trong sản phẩm = EU AI Act áp dụng.
Điều này quan trọng với team AI Việt Nam thế nào
Với team BKGlobal, 3 việc cần làm ngay trong tháng 7/2026:
Audit mọi dự án AI đang chạy:
- Liệt kê tất cả pipeline AI có user EU
- Phân loại risk theo Annex III cho từng use case
- Ưu tiên high-risk để retrofit trước 2/8
Build audit logging ngay từ đầu cho dự án mới:
- Không phải retrofit sau này
- Middleware như code .NET ở trên
- Fallback cho DB down
Thuê luật sư EU cho use case high-risk:
- Không tự quyết conformity assessment
- Clarify provider/deployer nếu có fine-tuning
- Documentation review trước khi ship
Với team Việt Nam khác, câu hỏi đầu tiên nên là: dự án AI của bạn có user EU không? Nếu có, bạn cần checklist ở trên. Nếu không, bạn có thể chờ thêm vài tháng để xem EU enforcement thực tế như thế nào, rồi chuẩn bị cho lần enforce tiếp theo (2/2027 cho general-purpose AI risk classification theo lộ trình).
Số liệu & thống kê
| Số liệu | Nguồn | Ý nghĩa |
|---|---|---|
| High-risk AI rules có hiệu lực từ 2/8/2026 | EU AI Act Regulation 2024/1689 | Mốc quan trọng nhất cho developer |
| General-purpose AI obligations từ 8/2025 | EU AI Act | Áp dụng cho provider, không trực tiếp cho deployer |
| Prohibited AI practices từ 2/2025 | EU AI Act | Đã có hiệu lực, social scoring/manipulation |
| Phạt vi phạm: tối đa 7% doanh thu toàn cầu hoặc 35 triệu EUR | EU AI Act | Mức phạt cao nhất cho prohibited practices |
| Phạt high-risk violation: tối đa 3% doanh thu hoặc 15 triệu EUR | EU AI Act | Mức phạt cho high-risk non-compliance |
| Audit log retention: 5 năm (team chúng tôi áp dụng) | GDPR precedent + legal counsel | Có thể khác tùy member state |
Sources
| # | Title | URL | Ghi chú |
|---|---|---|---|
| 1 | EU AI Act Impact on Developers 2026 - What Actually Changes | https://tech.breakingcube.com/2026/03/10/eu-ai-act-impact-on-developers-2026/ | Nguồn case study developer thực tế |
| 2 | AI Act - Shaping Europe's Digital Future | https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai | Trang chính thức EU Commission |
| 3 | The Artificial Intelligence Act - Full text | https://artificialintelligenceact.eu/the-act/ | Toàn văn Regulation (EU) 2024/1689 |
Bạn đang xây AI cho khách hàng EU? Team BKGlobal đang hỗ trợ audit compliance cho 3 dự án fintech tại Việt Nam trong tháng 7/2026. Nếu team bạn cần review kiến trúc trước deadline 2/8, mở issue trên GitHub repo hoặc liên hệ trang tech.bkglobal.vn.
Bài liên quan trên tech.bkglobal.vn:
- Cloudflare Pay-Per-Crawl: thay đổi ảnh hưởng đến AI developer thế nào
- OpenAI giới hạn rollout GPT-5.6: developer cần biết gì
- RAG pipeline từ A đến Z: xây dựng hệ thống hỏi đáp tài liệu
- AI coding tools: năng suất thật 25-40%, không phải 10x
Son Do - BKGlobal Tech Team