Bỏ qua đến nội dung chính

Designing effective subagents

TL;DR

  • Để các tác nhân phụ hoạt động hiệu quả, cần tối ưu hóa tên và mô tả của chúng nhằm định hướng rõ ràng cho tác nhân chính về thời điểm và cách thức kích hoạt.
  • Việc xác định định dạng đầu ra cụ thể giúp tác nhân phụ biết khi nào đã hoàn thành nhiệm vụ và giảm thời gian chạy không cần thiết.
  • Hạn chế quyền truy cập công cụ của tác nhân phụ theo vai trò của chúng và yêu cầu báo cáo trở ngại giúp tăng cường độ tin cậy và ngăn chặn các tác dụng phụ không mong muốn.

Điểm chính

  • Tối ưu hóa Tên và Mô tả: Sửa đổi tênmô tả của tác nhân phụ trong tệp cấu hình để tác nhân chính có thể khởi chạy chúng một cách chính xác và cung cấp lời nhắc đầu vào phù hợp.
  • Định dạng Đầu ra Rõ ràng: Xác định một định dạng đầu ra cụ thể trong lời nhắc hệ thống của tác nhân phụ để tạo điểm dừng tự nhiên, giúp chúng hoàn thành nghiên cứu hiệu quả hơn.
  • Báo cáo Trở ngại: Yêu cầu tác nhân phụ báo cáo các trở ngại (như giải pháp thay thế, vấn đề phụ thuộc, lệnh cần cờ đặc biệt) trong tóm tắt đầu ra để tác nhân chính không phải khám phá lại.
  • Giới hạn Quyền truy cập Công cụ: Chỉ cấp quyền truy cập công cụ (ví dụ: đọc tệp, bash, sửa đổi, ghi) mà tác nhân phụ thực sự cần cho vai trò của mình.
  • Phân quyền Cụ thể: Giữ tác nhân phụ ở chế độ chỉ đọc nếu chúng chỉ nghiên cứu; chỉ cấp quyền chỉnh sửaghi cho các tác nhân phụ thực sự thay đổi mã (ví dụ: tác nhân định kiểu).
  • Ảnh hưởng Lời nhắc: Sử dụng mô tả của tác nhân phụ để ảnh hưởng đến hướng dẫn mà luồng tác nhân chính cung cấp khi ủy quyền nhiệm vụ.

Từ vựng

  • tác nhân phụ — sub agent
  • tác nhân chính — main agent
  • lời nhắc hệ thống — system prompt
  • lời nhắc đầu vào — input prompt
  • định dạng đầu ra — output format
  • trở ngại — obstacle / workaround
  • quyền truy cập công cụ — tool access
  • chỉ đọc — read-only
  • tệp cấu hình tác nhân phụ — sub agent config file
  • luồng tác nhân chính — main agent thread

Nội dung chi tiết

Giới thiệu về tác nhân phụ hiệu quả

Sau khi bạn đã biết cách tạo tác nhân phụ, hãy cùng xem xét các mẫu thiết kế dẫn đến tác nhân phụ hiệu quả.

Tối ưu hóa tên và mô tả tác nhân phụ

Đầu tiên, hãy hiểu rõ hơn về cách dữ liệu của tác nhân phụ trong tệp cấu hình sub agent config file được sử dụng. Bất cứ khi nào bạn gửi một tin nhắn đến tác nhân chính trong cửa sổ ngữ cảnh, tênmô tả của mỗi tác nhân phụ sẽ được bao gồm trong lời nhắc hệ thống. Do đó, nếu bạn muốn kiểm soát tốt hơn thời điểm tác nhân chính tự động khởi chạy một tác nhân phụ, bạn nên sửa đổi tênmô tả của nó.

Tiếp theo, hãy nhớ rằng khi một tác nhân phụ được khởi chạy, tác nhân chính sẽ viết một lời nhắc đầu vào. Khi viết lời nhắc đầu vào này, nó sử dụng mô tả làm hướng dẫn. Vì vậy, nếu bạn muốn kiểm soát tốt hơn thời điểm tác nhân chính tự động khởi chạy một tác nhân phụ, bạn nên sửa đổi tênmô tả.

Hãy xem xét lại tác nhân phụ đánh giá của chúng ta. Hiện tại, khi tác nhân chính chạy tác nhân phụ này, tác nhân phụ sẽ nhận được một lời nhắc đầu vào yêu cầu nó sử dụng get diff để tìm các thay đổi hiện tại. Nếu chúng ta muốn tác nhân chính đáng tin cậy hơn trong việc chỉ định chính xác các tệp cần đánh giá cho tác nhân phụ, chúng ta sẽ cập nhật mô tả. Bạn phải cho tác nhân AI biết chính xác những tệp nào bạn muốn nó đánh giá. Bây giờ, nếu chúng ta yêu cầu Claude chạy tác nhân đánh giá mã (code reviewer agent), chúng ta sẽ thấy một đầu vào khác.

Bạn cũng có thể ảnh hưởng đến những gì luồng tác nhân chính (main thread) nói với một tác nhân phụ thông qua mô tả. Ví dụ, việc thêm cụm từ 'trả về các nguồn có thể trích dẫn' vào mô tả của tác nhân phụ tìm kiếm web (web search sub agent) sẽ khiến luồng tác nhân chính đưa hướng dẫn đó vào khi ủy quyền nhiệm vụ.

Định dạng đầu ra và báo cáo trở ngại

Cải tiến quan trọng nhất bạn có thể thực hiện là xác định một định dạng đầu ra trong lời nhắc hệ thống. Điều này tạo ra các điểm dừng tự nhiên cho tác nhân phụ. Nếu không có định dạng đầu ra được xác định, các tác nhân phụ sẽ gặp khó khăn trong việc quyết định khi nào đã hoàn thành đủ nghiên cứu và chúng có xu hướng chạy lâu hơn rất nhiều so với các tác nhân phụ được cung cấp một định dạng đầu ra.

Khi một tác nhân phụ phát hiện ra một giải pháp thay thế (workaround) cho một vấn đề nào đó, chẳng hạn như giải quyết vấn đề phụ thuộc (dependency issue) hoặc nhận thấy một lệnh nhất định cần các cờ (flags) đặc biệt, những chi tiết này nên xuất hiện trong tóm tắt. Nếu không, luồng tác nhân chính sẽ phải tự mình khám phá lại cùng một giải pháp, trở ngại gặp phải, bất kỳ vấn đề thiết lập, giải pháp thay thế được phát hiện, hoặc lỗi môi trường (environment quirks), các lệnh cần cờ hoặc cấu hình đặc biệt, các phụ thuộc hoặc import gây ra vấn đề. Việc yêu cầu báo cáo trở ngại một cách rõ ràng trong định dạng đầu ra sẽ giúp làm nổi bật thông tin này.

Giới hạn quyền truy cập công cụ

Một tác nhân phụ chỉ đọc (read-only sub agent) chỉ sử dụng glob, grep, read sẽ không thể vô tình sửa đổi tệp. Ràng buộc (constraint) này làm rõ vai trò của tác nhân phụ và ngăn chặn các tác dụng phụ không mong muốn. Vì vậy, hãy nghĩ về những gì tác nhân phụ thực sự cần làm. Nếu nó chỉ nghiên cứu, nó chỉ cần đọc tệp. Do đó, hãy giữ nó ở chế độ chỉ đọc. Bằng cách đó, nó không thể vô tình sửa đổi bất cứ điều gì trong quá trình khám phá.

Một người đánh giá cần chạy get diff để xem những gì đã thay đổi. Vì vậy, hãy cấp cho nó quyền truy cập bash, nhưng nó vẫn không cần chỉnh sửa tệp. Chỉ cấp quyền chỉnh sửa (edit) và ghi (write) cho các tác nhân phụ thực sự nên thay đổi của bạn, chẳng hạn như một tác nhân định kiểu (styling agent) áp dụng cập nhật CSS. Điều này cũng giúp làm rõ mục đích của từng tác nhân phụ khi bạn có nhiều tác nhân phụ.

Tóm tắt các đặc điểm tác nhân phụ hiệu quả

Tóm lại, các tác nhân phụ hiệu quả sử dụng đầu ra có cấu trúc, báo cáo trở ngại, có mô tả cụ thể và giới hạn quyền truy cập công cụ.

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?