Tôi đã đặt một AI Agent đứng trước 20 năm dữ liệu ticket hỗ trợ

Chúng tôi có một hệ thống helpdesk với một triệu ticket. Chúng tôi có 2.400 tài liệu hướng dẫn và hai kho mã nguồn (codebase) khổng lồ.

Khi một lập trình viên hỏi liệu chúng tôi đã từng giải quyết một vấn đề nào đó trước đây chưa, câu trả lời luôn là có. Chỉ là dữ liệu đang bị vùi lấp đâu đó. Nhân viên cấp cao mất hàng giờ để tìm kiếm. Nhân viên cấp dưới mất hàng tuần.

Tôi đã xây dựng một AI agent để xử lý toàn bộ dữ liệu này. Hiện nó đã được đưa vào vận hành thực tế (production). Dưới đây là những gì thực sự đã xảy ra.

Dữ liệu không phải là phần khó nhất. Biết tìm ở đâu mới là vấn đề. Việc khiến agent ngừng "chém gió" (tự bịa đặt thông tin) còn khó hơn nữa.

Cách thức hoạt động:

  • Một agent với đầu vào là ngôn ngữ tự nhiên.
  • Nó đọc cơ sở dữ liệu helpdesk, các công cụ quản lý dự án, GitLab và SVN.
  • Nó thực hiện tìm kiếm vector trên các tài liệu hướng dẫn và các ticket cũ.
  • Nó có thể tạo ra các tệp như .xlsx hoặc .docx.
  • Nó tự chọn các công cụ và chạy chúng song song.

Kiến trúc rất đơn giản. Nó chạy trong một container Node tách biệt với ứng dụng chính. Tôi làm vậy để cô lập lỗi (failure isolation). Nếu AI gặp lỗi, hệ thống helpdesk vẫn hoạt động bình thường.

Bài học lớn nhất nằm ở prompt. Tôi đã bắt đầu với một "bức tường" văn bản khổng lồ. Nó dài tới 40.000 tokens. Việc bảo trì rất khó khăn và agent cũng bị mất tập trung.

Tôi đã thay đổi cách tiếp cận. Tôi chia nhỏ prompt thành các tệp kỹ năng (skill files) nhỏ.

  • Tìm kiếm ticket là một tệp.
  • Lịch sử mã nguồn là một tệp khác.
  • Quản lý dự án là tệp thứ ba.

Prompt chính đóng vai trò như một bộ định tuyến (router). Nó chỉ tải một kỹ năng khi cần thiết. Điều này đã giúp giảm lượng token từ 40.000 xuống còn 8.000 cho mỗi yêu cầu. Agent luôn tập trung vào nhiệm vụ và mã nguồn cũng dễ dàng cập nhật hơn.

Tôi cũng thêm vào các hồ sơ người dùng (user profiles). Một lập trình viên sẽ nhận được các đường dẫn mã nguồn. Một quản lý dự án sẽ nhận được các bản tóm tắt trạng thái. Agent biết ai đang hỏi mà không cần được thông báo.

Nó không hoàn hảo. Chúng tôi đã đối mặt với những thất bại thực tế:

  • Hallucinations (Ảo giác): Agent tự tạo ra các URL giả. Cách khắc phục: Chỉ định các mẫu chính xác hoặc bắt buộc phải tra cứu.
  • Mất trí nhớ: Agent quên các quy tắc trong các cuộc hội thoại dài. Cách khắc phục: Chèn một danh sách việc cần làm (to-do list) có cấu trúc vào mỗi lượt hội thoại.
  • Vòng lặp vô tận: Agent thực hiện quá nhiều lệnh gọi công cụ. Cách khắc phục: Thiết lập một hạn mức (budget) nghiêm ngặt cho mỗi yêu cầu.
  • Bảo mật: Người dùng cố gắng đánh lừa nó. Cách khắc phục: Đừng dựa vào prompt để đảm bảo an toàn. Hãy sử dụng thông tin đăng nhập cơ sở dữ liệu chỉ đọc (read-only) trong hạ tầng của bạn.

Công việc thực sự nằm ở một vòng lặp hàng tuần. Tôi đọc nhật ký (logs). Tôi chấm điểm các phiên làm việc. Tôi tinh chỉnh các kỹ năng. Tôi cập nhật các hồ sơ.

Nếu bạn bỏ qua vòng lặp này, bạn chỉ có một bản demo. Nếu bạn thực hiện nó, bạn sẽ có một sản phẩm.

Mục tiêu không chỉ là câu trả lời nhanh hơn. Mục tiêu là giữ lại kiến thức nội bộ (institutional knowledge) trong tổ chức. Khi một người rời đi, kiến thức của họ vẫn còn lại trong các bản ghi chép (transcripts).

Tóm tắt cho quá trình xây dựng của bạn:

  • Bắt đầu với RAG trên chính lịch sử của bạn.
  • Sử dụng các tệp kỹ năng tải chậm (lazy-loaded) thay vì một prompt lớn duy nhất.
  • Sử dụng hồ sơ người dùng để có ngữ cảnh cá nhân hóa.
  • Cô lập AI trong container riêng của nó.
  • Thực thi bảo mật thông qua hạ tầng, không phải qua chỉ dẫn.
  • Đọc nhật ký hàng tuần.

Source: https://dev.to/nunc/i-put-an-ai-agent-in-front-of-20-years-of-support-tickets-heres-what-actually-broke-5gdd

Optional learning community: https://t.me/GyaanSetuAi