Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 3 — Định nghĩa role, goal, task cho sắc bén

Đã đọc 0/8 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Ba trụ cột: role, goal, backstory

Chất lượng một agent phụ thuộc gần như hoàn toàn vào cách bạn định nghĩa nó. Ba trường quan trọng nhất trong CrewAI:

  • role: agent là ai — chức danh, chuyên môn. Ví dụ "Chuyên viên phân tích tài chính".
  • goal: agent phải đạt được gì — mục tiêu đo lường được. Ví dụ "Phát hiện 3 rủi ro dòng tiền lớn nhất trong báo cáo".
  • backstory: bối cảnh & phong cách định hình cách agent tư duy. Ví dụ "Bạn thận trọng, luôn nghi ngờ số liệu đẹp bất thường".
Mẹo vàng: viết goal có con số và tiêu chí thành công. "Phân tích báo cáo" là goal yếu; "Liệt kê đúng 3 rủi ro kèm dẫn chứng dòng số liệu" là goal mạnh.

Ví dụ đối chiếu: yếu vs mạnh

# YẾU — mơ hồ, agent tự do bịa
Agent(role="Trợ lý", goal="Giúp phân tích dữ liệu", backstory="Bạn thông minh.")

# MẠNH — cụ thể, đo lường được
Agent(
    role="Chuyên viên phân tích rủi ro tín dụng",
    goal="Từ báo cáo tài chính, chỉ ra đúng 3 rủi ro dòng tiền "
         "nghiêm trọng nhất, mỗi rủi ro kèm dòng số liệu chứng minh",
    backstory="Bạn có 10 năm thẩm định tín dụng, nghi ngờ mọi con "
              "số tăng trưởng bất thường và luôn đòi bằng chứng.",
)

Viết task: mô tả + expected_output

Task là việc cụ thể giao cho agent. Hai trường cốt lõi:

  • description: chỉ dẫn từng bước, có ràng buộc.
  • expected_output: định dạng kết quả — đây là phần quyết định agent sau có dùng được không.
Task(
    description=(
        "Đọc báo cáo tài chính đính kèm. "
        "1) Tính tỷ lệ nợ/vốn. "
        "2) So sánh dòng tiền 2 quý gần nhất. "
        "3) Chọn 3 rủi ro lớn nhất."
    ),
    expected_output=(
        "Bảng markdown 3 dòng, cột: Rủi ro | Mức độ (Cao/TB/Thấp) | Dẫn chứng số liệu"
    ),
    agent=risk_analyst,
)

Các bước viết một task tốt

  • Bắt đầu bằng động từ hành động (Đọc, Tính, So sánh, Chọn).
  • Đánh số các bước con để agent không bỏ sót.
  • Ràng buộc phạm vi ("đúng 3 rủi ro", "tối đa 150 từ").
  • Mô tả output như một khuôn mẫu — định dạng, cột, độ dài.
  • Nêu tiêu chí loại bỏ nếu cần ("bỏ qua rủi ro dưới 1% tổng tài sản").

Khung R-G-T để kiểm tra nhanh

Trước khi chạy, soi mỗi agent+task qua khung R-G-T:

Role   : Người này CÓ CHUYÊN MÔN đúng cho việc này không?
Goal   : Mục tiêu có ĐO LƯỜNG được không? (có số, có tiêu chí)
Task   : Output có phải là KHUÔN cụ thể agent sau dùng được ngay không?

Nếu một trong ba câu trả lời là "không", agent sẽ trôi khỏi ý định của bạn.

Gán tool cho đúng agent

Chỉ gán tool cho agent thực sự cần. Researcher cần search tool; Writer thường không cần tool nào. Gán thừa tool khiến agent "nghịch" công cụ không liên quan và tốn token.

from crewai_tools import SerperDevTool
search = SerperDevTool()
researcher = Agent(role="...", goal="...", tools=[search])

Checklist role/goal/task

  • [ ] Role là một chức danh chuyên môn cụ thể, không phải "trợ lý chung".
  • [ ] Goal có số hoặc tiêu chí thành công rõ ràng.
  • [ ] Backstory định hình phong cách/thái độ, không lặp lại goal.
  • [ ] Task description có các bước đánh số.
  • [ ] expected_output là một khuôn mẫu cụ thể.
  • [ ] Tool chỉ gán cho agent thực sự cần.

Sai lầm thường gặp

  • Goal chung chung kiểu "hỗ trợ người dùng" → agent làm mọi thứ hời hợt.
  • Backstory chỉ lặp lại goal → lãng phí, không thêm định hướng hành vi.
  • expected_output mô tả nội dung thay vì định dạng → agent sau khó parse.
  • Gán mọi tool cho mọi agent → agent lạm dụng tool, chậm và tốn tiền.
  • Task ôm đồm nhiều mục tiêu → nên tách thành nhiều task nhỏ, mỗi task một output.
Bài 4: cho các agent phối hợp — tuần tự, phân cấp, và cách truyền ngữ cảnh.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi