Giới hạn Thử lại cho các Lệnh gọi Công cụ của Agent

Sự cố tồi tệ nhất mà agent của chúng tôi gây ra không phải là một câu trả lời sai. Đó là một vòng lặp.

Một lệnh gọi công cụ thất bại. Agent thử lại. Lần thử lại cũng thất bại. Agent cứ tiếp tục như vậy. Nó tiêu tốn token và gọi API của chúng tôi hàng trăm lần chỉ trong một phút.

Agent đã làm đúng những gì chúng tôi yêu cầu. Chúng tôi bảo nó thử lại nếu một công cụ thất bại. Nhưng chúng tôi đã quên bảo nó khi nào thì nên dừng lại.

Việc thử lại rất hữu ích cho các lỗi tạm thời. Vấn đề là các agent không thể phân biệt được lỗi tạm thời và lỗi vĩnh viễn. Nếu không có giới hạn, một agent sẽ thử lại một lệnh gọi bị lỗi cho đến khi có thứ gì đó ngăn nó lại.

Mã nguồn truyền thống sử dụng giới hạn thử lại. Các lệnh gọi công cụ của agent đã chuyển quyết định này vào quá trình suy luận của mô hình. Điều này khiến vòng lặp trở nên vô hình và không có giới hạn.

Chúng tôi đã khắc phục điều này bằng cách thêm hai mức ngân sách bên ngoài mô hình:

• Giới hạn mỗi lần gọi (Per-call cap): Một công cụ cụ thể sẽ có một số lần thử nhất định. Nếu nó thất bại, agent phải thử một hướng đi khác. • Ngân sách mỗi phiên (Per-session budget): Toàn bộ tác vụ có một giới hạn về tổng số lần gọi công cụ. Nếu agent chạm đến giới hạn này, nó sẽ dừng lại và yêu cầu trợ giúp.

Bản thân giới hạn không phải là giải pháp. Điều quan trọng là những gì xảy ra sau khi chạm giới hạn.

Nếu bạn chỉ dừng lại, agent sẽ bị kẹt. Thay vào đó, chúng tôi đưa cho agent một thông điệp rõ ràng. Chúng tôi báo cho nó biết lệnh gọi đã thất bại và nó không được thử lại nữa. Điều này biến một vòng lặp thành một quyết định. Thông thường, sau đó agent sẽ chọn một cách tiếp cận mới.

Kể từ khi thêm tính năng này, các vòng lặp do lạm dụng công cụ gần như đã biến mất. Khi chúng xảy ra, chúng sẽ được xử lý một cách gọn gàng thay vì tạo ra những hóa đơn API khổng lồ.

Tìm ra giới hạn phù hợp là một việc khó khăn. Giới hạn quá chặt sẽ làm hỏng các tác vụ dài. Giới hạn quá lỏng sẽ cho phép các vòng lặp tốn kém diễn ra. Chúng tôi thiết lập các giới hạn dựa trên độ dài tác vụ ở phân vị thứ 95.

Bạn có cách nào tốt hơn để thiết lập các mức ngân sách này không? Hãy cho tôi biết trong phần bình luận nhé.

Nguồn: https://dev.to/james_oconnor_dev/bounded-retries-for-agent-tool-calls-the-budget-that-stopped-our-infinite-loop-incidents-4354

Cộng đồng học tập tùy chọn: https://t.me/GyaanSetuAi