AI agent

Bảy bài học kỹ thuật khi xây dựng tác nhân trò chuyện AI cho môi trường sản xuất

Trigger.dev chia sẻ những hiểu biết thực tế về độ trễ, đếm token và khả năng chống chịu của luồng dữ liệu (stream) từ quá trình xây dựng tác nhân trò chuyện trên bảng điều khiển dành cho nhà phát triển.

Illustration of split processing with fast initial response and complex background assembly
Minh họa được tạo riêng cho bài viết này

Được dịch tự động từ bản gốc tiếng Anh.

Các kỹ sư tại Trigger.dev đã công bố một bản tổng kết chi tiết về việc xây dựng tác nhân trò chuyện AI cấp độ sản xuất cho bảng điều khiển dành cho nhà phát triển của họ. Được phát hành vào tháng 10 năm 2026, bài viết nêu ra bảy bài học quan trọng rút ra trong quá trình triển khai các tính năng như gỡ lỗi, tạo biểu đồ và tìm kiếm tài liệu. Các phát hiện này tập trung vào những quyết định kiến trúc giúp cải thiện trải nghiệm người dùng và độ tin cậy của hệ thống.

Chuyện gì đã xảy ra

Nhóm đã xây dựng một công cụ nội bộ để hỗ trợ người dùng tương tác với nền tảng thông qua ngôn ngữ tự nhiên. Tác nhân này thực hiện các nhiệm vụ phức tạp như kiểm tra nhật ký chạy (run logs), tạo hình ảnh trực quan và truy vấn tài liệu. Vì các hoạt động này đòi hỏi xử lý nặng nề như thực thi sandbox và truy cập tệp, các kỹ sư đã gặp phải những thách thức cụ thể liên quan đến độ trễ và quản lý trạng thái.

Họ nhận thấy rằng các mẫu request-response (yêu cầu-phản hồi) tiêu chuẩn không đủ đáp ứng cho các tác vụ dài hạn của tác nhân. Để giải quyết vấn đề này, họ đã triển khai một kiến trúc tách biệt, trong đó phản hồi ban đầu nhẹ nhàng được truyền tải ngay lập tức (streamed) trong khi logic tác nhân nặng hơn khởi tạo ngầm ở phía sau. Cách tiếp cận này đảm bảo người dùng nhận được phản hồi tức thì, chẳng hạn như thấy lệnh gọi công cụ get_run("abc123") xuất hiện trong vòng một giây, thay vì phải nhìn chằm chằm vào biểu tượng tải trang tĩnh.

Bài viết cũng mô tả chi tiết cách họ xử lý việc nén cuộc hội thoại, logic thử lại (retry) và độ bền vững của luồng dữ liệu. Bằng cách chia sẻ mã nguồn và các ví dụ cấu hình, họ cung cấp một khuôn mẫu cho các nhà phát triển khác đang đối mặt với những vấn đề tương tự khi chuyển đổi các nguyên mẫu AI sang môi trường sản xuất, nơi độ tin cậy và hiệu suất cảm nhận là yếu tố tối quan trọng.

Cơ chế hoạt động

Cơ chế cốt lõi dựa trên việc tách rời tương tác ban đầu của người dùng khỏi toàn bộ quá trình thực thi tác nhân. Khi một tin nhắn được gửi đến, một route máy chủ web tiêu chuẩn sẽ xử lý lần gọi mô hình đầu tiên. Lần gọi này truyền tải phản hồi trở lại máy khách ngay lập tức, thường chứa chỉ báo lệnh gọi công cụ. Đồng thời, hệ thống khởi động toàn bộ môi trường tác nhân. Khi sẵn sàng, tác nhân tiếp quản ngữ cảnh cuộc hội thoại, bao gồm cả các lệnh gọi công cụ ban đầu, đảm bảo tính liên tục mà không trùng lặp tin nhắn hay thay đổi giọng điệu.

Về tính toàn vẹn dữ liệu, hệ thống sử dụng các luồng dữ liệu bền vững (durable streams) được lưu trữ trên object storage. Mỗi phần (chunk) của phản hồi được gán một số thứ tự (sequence number). Nếu máy khách ngắt kết nối và kết nối lại, nó sẽ gửi ID số thứ tự cuối cùng đã nhận. Máy chủ sau đó phát lại bất kỳ phần nào bị thiếu từ kho lưu trữ trước khi tiếp tục luồng trực tiếp. Điều này ngăn ngừa mất dữ liệu và tránh sự khó chịu khi phải khởi động lại một quá trình tạo sinh dài từ đầu.

Việc đếm token để quản lý cửa sổ ngữ cảnh (context window) được tối ưu hóa bằng cách chỉ theo dõi số token đầu vào của bước gần nhất. Vì đầu ra của một bước trở thành đầu vào của bước tiếp theo, việc cộng dồn đầu vào của mọi bước sẽ dẫn đến tình trạng đếm thừa rất lớn. Phương pháp này đảm bảo việc nén chỉ kích hoạt khi cần thiết, giữ lại ngữ cảnh liên quan mà không tóm tắt quá sớm.

Chi tiết chính

  • Khởi tạo tách biệt: Lần gọi mô hình đầu tiên chạy trong request handler để tăng tốc độ, trong khi tác nhân nặng bắt đầu ở nền, giảm một nửa thời gian chờ đợi để có cập nhật hữu ích.
  • Đếm token chính xác: Logic nén chỉ sử dụng số lượng token đầu vào của bước cuối cùng để tránh đếm thừa lịch sử hội thoại lặp đi lặp lại.
  • Giới hạn thử lại: Các công cụ triển khai bộ đếm thử lại nội bộ với khoảng nghỉ ngắn (backoff) cho các lỗi mạng tạm thời, giới hạn số lần thất bại liên tiếp để ngăn chặn vòng lặp vô tận.
  • Luồng dữ liệu bền vững: Các phần phản hồi được lưu trữ kèm ID số thứ tự trong object storage, cho phép máy khách tiếp tục các luồng bị gián đoạn một cách liền mạch.
  • Quản lý phiên bản prompt: Prompt được định nghĩa trong mã nguồn với kiểm soát phiên bản, cho phép cập nhật mà không cần triển khai lại và thử nghiệm A/B thông qua bảng điều khiển.
  • Đánh giá ngầm: Mười phần trăm lượt hội thoại hoàn tất được gửi đến một mô hình giám khảo để chấm điểm về tính cơ sở (groundedness), chất lượng câu trả lời và sự súc tích.

Tại sao điều này quan trọng

Đối với các kỹ sư phần mềm xây dựng giao diện AI, độ trễ cảm nhận thường quan trọng hơn tổng thời gian thực thi thực tế. Người dùng từ bỏ các công cụ trông có vẻ không phản hồi, ngay cả khi backend vẫn đang làm việc chăm chỉ. Mẫu khởi tạo tách biệt được mô tả ở đây cung cấp một giải pháp cụ thể cho vấn đề UX này. Nó chứng minh rằng bạn không cần chờ toàn bộ stack tác nhân sẵn sàng trước khi mang lại giá trị cho người dùng. Việc hiển thị các bước trung gian, chẳng hạn như các lệnh gọi công cụ, xây dựng lòng tin và giữ chân người dùng tham gia trong các hoạt động kéo dài.

Độ tin cậy trong kết nối luồng dữ liệu là một điểm đau lớn khác trong các ứng dụng thực tế. Sự bất ổn của mạng là phổ biến, đặc biệt đối với người dùng di động hoặc những người có kết nối không ổn định. Việc triển khai các luồng dữ liệu bền vững với khả năng tiếp tục dựa trên số thứ tự biến đổi một kết nối HTTP mong manh thành một phiên làm việc mạnh mẽ. Điều này giảm thiểu các ticket hỗ trợ và nâng cao chất lượng tổng thể của tương tác, khiến tác nhân cảm giác như một phần tự nhiên của ứng dụng chứ không phải một dịch vụ bên ngoài hay trục trặc.

Cuối cùng, sự nhấn mạnh vào khả năng quan sát (observability) và đánh giá (evals) làm nổi bật sự chuyển dịch từ AI thử nghiệm sang các hệ thống được kỹ thuật hóa. Không có đánh giá có cấu trúc và prompt được quản lý phiên bản, việc lặp lại hành vi của tác nhân trở thành phỏng đoán. Bằng cách coi prompt là mã nguồn và đánh giá đầu ra một cách có hệ thống, các nhóm có thể đưa ra những cải tiến dựa trên dữ liệu. Sự nghiêm ngặt này là cần thiết để duy trì phản hồi chất lượng cao khi độ phức tạp của các công cụ và truy vấn người dùng ngày càng tăng.

Bạn có thể làm gì

  • Triển khai một request handler hai giai đoạn, nơi lần gọi đầu tiên truyền tải phản hồi tức thì trong khi tác nhân chính khởi tạo ở nền.
  • Kiểm toán logic đếm token của bạn để đảm bảo bạn không cộng dồn đầu vào từ mọi bước lịch sử, điều dẫn đến việc nén ngữ cảnh quá sớm.
  • Thêm ID số thứ tự vào các phản hồi luồng dữ liệu và lưu trữ các phần trong kho lưu trữ bền vững để cho phép máy khách tiếp tục sau khi ngắt kết nối.
  • Xác định rõ giới hạn thử lại trong định nghĩa công cụ của bạn để ngăn tác nhân lặp vô tận do các lỗi tạm thời.
  • Quản lý phiên bản prompt trong mã nguồn và tạo cơ chế chuyển đổi phiên bản mà không cần triển khai lại toàn bộ ứng dụng.
  • Thiết lập các job đánh giá ngầm chấm điểm các lượt hội thoại hoàn tất để theo dõi xu hướng hiệu suất.

Công cụ từ cửa hàng Bytechap

Đọc tiếp

Tất cả bài viết