Agent as Tool và Handoff

Trong OpenAI Agents SDK, "Agent as Tool""Handoff" là hai khái niệm quan trọng giúp xây dựng quy trình cộng tác linh hoạt giữa các agent. Dưới đây là giải thích chi tiết:

1. "Agent as Tool" – Biến Agent thành một công cụ

Mục tiêu:

Biến một agent thành một tool có thể được gọi bởi agent khác, giống như cách ta gọi một hàm hay API.

Cách hoạt động:

2. Handoff – Chuyển nhiệm vụ giữa các agent

Mục tiêu:

Cho phép agent này chuyển giao nhiệm vụ (task) cho agent khác khi cần sự hỗ trợ chuyên sâu.

Cách hoạt động:

So sánh nhanh:

Khía cạnh Agent as Tool Handoff
Cách gọi Gọi như một API Chuyển luôn vai trò trả lời
Tái sử dụng Cao Thấp hơn
Kiểm soát luồng logic Do agent chủ động điều phối Tự động tùy theo nội dung hội thoại
Duy trì hội thoại Không giữ hội thoại Giữ ngữ cảnh và phiên
Dùng khi nào? Khi cần gọi tác vụ cụ thể Khi cần chuyển giao vai trò chuyên gia

Ví dụ đầy đủ về cách thiết lập handoff giữa nhiều agent bằng OpenAI Agent SDK, mô phỏng một quy trình bán hàng nơi agent có thể chuyển tiếp (handoff) nhiệm vụ nếu không thuộc chuyên môn của mình.

Tình huống

Chúng ta có:

Chúng ta sẽ chạy một hội thoại qua autogen.runner và để các agent tự động "handoff" khi nội dung vượt khỏi chuyên môn của họ.

Cài đặt các Agent

from autogen import AssistantAgent, UserProxyAgent, run

# User agent
user_proxy = UserProxyAgent(name="user", human_input_mode="NEVER")

# Sales Agent
agent_sales = AssistantAgent(
    name="sales_agent",
    llm_config={"config_list": config_list},
    system_message="Bạn là nhân viên bán hàng. Hãy tư vấn sản phẩm và viết email chào hàng."
)

# Legal Agent
agent_legal = AssistantAgent(
    name="legal_agent",
    llm_config={"config_list": config_list},
    system_message="Bạn là cố vấn pháp lý. Hãy trả lời các câu hỏi pháp lý hoặc điều khoản hợp đồng."
)

# Support Agent
agent_support = AssistantAgent(
    name="support_agent",
    llm_config={"config_list": config_list},
    system_message="Bạn là nhân viên hỗ trợ kỹ thuật. Hãy giải quyết các thắc mắc về sản phẩm sau bán hàng."
)
Chạy Handoff Tự Động với run()
run(
    [user_proxy, agent_sales, agent_legal, agent_support],
    # user gửi 1 câu hỏi tổng hợp
    messages=[
        {"role": "user", "content": """
        Tôi cần mua phần mềm quản lý doanh nghiệp. Hãy gửi tôi email báo giá.
        Ngoài ra, chính sách bảo hành của công ty là gì? Và hợp đồng có điều khoản hoàn tiền không?
        """}
    ]
)

 

Ghi chú


Phiên bản #1
Được tạo 30 tháng 4 2025 02:43:46 bởi Đỗ Ngọc Tú
Được cập nhật 2 tháng 5 2025 07:45:21 bởi Đỗ Ngọc Tú