(Nhấp vào hình trên để xem video bài học này)
Bài học này sẽ bao gồm
Sau khi hoàn thành bài học này, bạn sẽ hiểu về:

Hầu hết các nhiệm vụ trong thế giới thực đều quá phức tạp để xử lý trong một bước duy nhất. Một tác nhân AI cần một mục tiêu súc tích để hướng dẫn việc lập kế hoạch và hành động của nó. Ví dụ, hãy xem xét mục tiêu:
"Tạo một lịch trình du lịch 3 ngày."
Mặc dù nó đơn giản để phát biểu, nhưng vẫn cần được tinh chỉnh. Mục tiêu càng rõ ràng, tác nhân (và bất kỳ cộng tác viên con người nào) càng có thể tập trung đạt được kết quả đúng đắn, chẳng hạn như tạo một lịch trình đầy đủ với các lựa chọn chuyến bay, đề xuất khách sạn và các hoạt động gợi ý.
Các nhiệm vụ lớn hoặc phức tạp trở nên dễ quản lý hơn khi được chia thành các nhiệm vụ nhỏ hơn, có mục tiêu rõ ràng. Đối với ví dụ về lịch trình du lịch, bạn có thể phân chia mục tiêu thành:
Mỗi nhiệm vụ phụ sau đó có thể được xử lý bởi các tác nhân hoặc quy trình chuyên biệt. Một tác nhân có thể chuyên về tìm kiếm các ưu đãi chuyến bay tốt nhất, một tác nhân khác tập trung vào đặt khách sạn, v.v. Một tác nhân điều phối hoặc “tác nhân hạ nguồn” có thể tổng hợp các kết quả này thành một lịch trình liền mạch cho người dùng cuối.
Cách tiếp cận mô-đun này cũng cho phép nâng cấp dần dần. Ví dụ, bạn có thể thêm các tác nhân chuyên biệt cho Đề xuất Ẩm thực hoặc Gợi ý Hoạt động Địa phương và tinh chỉnh lịch trình theo thời gian.
Các Mô Hình Ngôn Ngữ Lớn (LLM) có thể tạo ra đầu ra có cấu trúc (ví dụ: JSON) mà các tác nhân hoặc dịch vụ hạ nguồn có thể dễ dàng phân tích và xử lý. Điều này đặc biệt hữu ích trong bối cảnh đa tác nhân, nơi chúng ta có thể thực thi các nhiệm vụ này sau khi nhận được kết quả lập kế hoạch.
Đoạn mã Python dưới đây minh họa một tác nhân lập kế hoạch đơn giản phân tách mục tiêu thành các nhiệm vụ phụ và tạo ra một kế hoạch có cấu trúc:
from pydantic import BaseModel
from enum import Enum
from typing import List, Optional, Union
import json
import os
from typing import Optional
from pprint import pprint
from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential
class AgentEnum(str, Enum):
FlightBooking = "flight_booking"
HotelBooking = "hotel_booking"
CarRental = "car_rental"
ActivitiesBooking = "activities_booking"
DestinationInfo = "destination_info"
DefaultAgent = "default_agent"
GroupChatManager = "group_chat_manager"
# Mô hình nhiệm vụ phụ du lịch
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # chúng tôi muốn phân công nhiệm vụ cho đại lý
class TravelPlan(BaseModel):
main_task: str
subtasks: List[TravelSubTask]
is_greeting: bool
provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())
# Định nghĩa tin nhắn người dùng
system_prompt = """You are a planner agent.
Your job is to decide which agents to run based on the user's request.
Provide your response in JSON format with the following structure:
{'main_task': 'Plan a family trip from Singapore to Melbourne.',
'subtasks': [{'assigned_agent': 'flight_booking',
'task_details': 'Book round-trip flights from Singapore to '
'Melbourne.'}
Below are the available agents specialised in different tasks:
- FlightBooking: For booking flights and providing flight information
- HotelBooking: For booking hotels and providing hotel information
- CarRental: For booking cars and providing car rental information
- ActivitiesBooking: For booking activities and providing activity information
- DestinationInfo: For providing information about destinations
- DefaultAgent: For handling general requests"""
user_message = "Create a travel plan for a family of 2 kids from Singapore to Melbourne"
response = client.create_response(input=user_message, instructions=system_prompt)
response_content = response.output_text
pprint(json.loads(response_content))
Trong ví dụ này, một Tác nhân Bộ Điều Hướng Ngữ nghĩa nhận một yêu cầu từ người dùng (ví dụ, “Tôi cần một kế hoạch khách sạn cho chuyến đi của tôi.”).
Người lập kế hoạch sau đó sẽ:
from pydantic import BaseModel
from enum import Enum
from typing import List, Optional, Union
class AgentEnum(str, Enum):
FlightBooking = "flight_booking"
HotelBooking = "hotel_booking"
CarRental = "car_rental"
ActivitiesBooking = "activities_booking"
DestinationInfo = "destination_info"
DefaultAgent = "default_agent"
GroupChatManager = "group_chat_manager"
# Mô hình Công việc phụ Du lịch
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # chúng tôi muốn giao công việc cho đại lý
class TravelPlan(BaseModel):
main_task: str
subtasks: List[TravelSubTask]
is_greeting: bool
import json
import os
from typing import Optional
from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential
# Tạo khách hàng
provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())
from pprint import pprint
# Định nghĩa tin nhắn người dùng
system_prompt = """You are a planner agent.
Your job is to decide which agents to run based on the user's request.
Below are the available agents specialized in different tasks:
- FlightBooking: For booking flights and providing flight information
- HotelBooking: For booking hotels and providing hotel information
- CarRental: For booking cars and providing car rental information
- ActivitiesBooking: For booking activities and providing activity information
- DestinationInfo: For providing information about destinations
- DefaultAgent: For handling general requests"""
user_message = "Create a travel plan for a family of 2 kids from Singapore to Melbourne"
response = client.create_response(input=user_message, instructions=system_prompt)
response_content = response.output_text
# In nội dung phản hồi sau khi tải nó dưới dạng JSON
pprint(json.loads(response_content))
Phần tiếp theo là đầu ra từ đoạn mã trước đó và bạn có thể sử dụng đầu ra có cấu trúc này để điều phối đến assigned_agent và tóm tắt kế hoạch du lịch cho người dùng cuối.
{
"is_greeting": "False",
"main_task": "Plan a family trip from Singapore to Melbourne.",
"subtasks": [
{
"assigned_agent": "flight_booking",
"task_details": "Book round-trip flights from Singapore to Melbourne."
},
{
"assigned_agent": "hotel_booking",
"task_details": "Find family-friendly hotels in Melbourne."
},
{
"assigned_agent": "car_rental",
"task_details": "Arrange a car rental suitable for a family of four in Melbourne."
},
{
"assigned_agent": "activities_booking",
"task_details": "List family-friendly activities in Melbourne."
},
{
"assigned_agent": "destination_info",
"task_details": "Provide information about Melbourne as a travel destination."
}
]
}
Một notebook ví dụ với đoạn mã trên có sẵn tại đây.
Một số nhiệm vụ đòi hỏi trao đổi qua lại hoặc lập kế hoạch lại, nơi kết quả của một nhiệm vụ phụ ảnh hưởng đến nhiệm vụ tiếp theo. Ví dụ, nếu tác nhân phát hiện định dạng dữ liệu không mong đợi khi đặt chuyến bay, nó có thể cần điều chỉnh chiến lược trước khi tiếp tục đặt khách sạn.
Ngoài ra, phản hồi của người dùng (ví dụ: một người dùng quyết định muốn chuyến bay sớm hơn) có thể kích hoạt việc lập kế hoạch lại một phần. Cách tiếp cận động, lặp lại này đảm bảo rằng giải pháp cuối cùng phù hợp với các giới hạn thực tế và sở thích người dùng thay đổi theo thời gian.
ví dụ mã
from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential
#.. giống như mã trước và chuyển tiếp lịch sử người dùng, kế hoạch hiện tại
system_prompt = """You are a planner agent to optimize the
Your job is to decide which agents to run based on the user's request.
Below are the available agents specialized in different tasks:
- FlightBooking: For booking flights and providing flight information
- HotelBooking: For booking hotels and providing hotel information
- CarRental: For booking cars and providing car rental information
- ActivitiesBooking: For booking activities and providing activity information
- DestinationInfo: For providing information about destinations
- DefaultAgent: For handling general requests"""
user_message = "Create a travel plan for a family of 2 kids from Singapore to Melbourne"
response = client.create_response(
input=user_message,
instructions=system_prompt,
context=f"Previous travel plan - {TravelPlan}",
)
# .. lập lại kế hoạch và gửi các nhiệm vụ đến các đại lý tương ứng
Để lập kế hoạch toàn diện hơn, hãy xem bài Blogpost Magnetic One về giải quyết các nhiệm vụ phức tạp.
Trong bài viết này, chúng ta đã xem xét ví dụ về cách tạo một bộ lập kế hoạch có thể chọn động các tác nhân có sẵn được định nghĩa. Đầu ra của Bộ lập kế hoạch phân tách các nhiệm vụ và phân công các tác nhân để có thể thực hiện. Giả định rằng các tác nhân có quyền truy cập vào các chức năng/công cụ cần thiết để thực hiện nhiệm vụ. Bên cạnh các tác nhân, bạn có thể bao gồm các mẫu thiết kế khác như phản chiếu, tóm tắt và quản lý trò chuyện theo vòng để tùy biến thêm.
Magentic One - Hệ thống đa tác nhân tổng quát để giải quyết các nhiệm vụ phức tạp và đã đạt được kết quả ấn tượng trên nhiều tiêu chuẩn đánh giá tác nhân thử thách. Tham khảo: Magentic One. Trong triển khai này, bộ điều phối tạo kế hoạch chi tiết từng nhiệm vụ và giao những nhiệm vụ này cho các tác nhân có sẵn. Bên cạnh việc lập kế hoạch, bộ điều phối cũng sử dụng cơ chế theo dõi tiến độ nhiệm vụ và lập kế hoạch lại khi cần.
Tham gia Microsoft Foundry Discord để gặp gỡ những người học khác, tham dự giờ văn phòng và được giải đáp các câu hỏi về Tác nhân AI.
Xây dựng Tác nhân AI Đáng Tin Cậy
Tuyên bố từ chối trách nhiệm:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI Co-op Translator. Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn thông tin chính xác nhất. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm đối với bất kỳ sự hiểu lầm hay diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.