(Nhấp vào hình ảnh phía 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 công việc trong thực tế quá phức tạp để giải quyết trong một bước duy nhất. Một tác nhân AI cần một mục tiêu ngắn gọn để 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ù mục tiêu đơn giản để phát biểu, nhưng vẫn cần được làm rõ hơn. 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 vào việc đạt được kết quả đúng, chẳng hạn như tạo lịch trình chi tiết với các lựa chọn bay, đề xuất khách sạn và gợi ý hoạt động.
Các công việc lớn hoặc phức tạp trở nên dễ quản lý hơn khi được chia nhỏ thành các nhiệm vụ nhỏ hướng tới mục tiêu. Với ví dụ lịch trình du lịch, bạn có thể phân tách mục tiêu thành:
Mỗi nhiệm vụ nhỏ 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 vé máy bay tốt nhấ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 “xuống dòng” có thể tổng hợp các kết quả này thành một lịch trình thống nhất cho người dùng cuối.
Cách tiếp cận mô-đun này cũng cho phép cải tiến từng bước. Ví dụ, bạn có thể thêm các tác nhân chuyên biệt cho Gợi ý ẩm thực hoặc 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 (LLMs) có thể tạo đầu ra có cấu trúc (ví dụ JSON) giúp các tác nhân hoặc dịch vụ xuống dòng dễ dàng phân tích và xử lý hơn. Đ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 hiện các công việc này sau khi nhận được đầu ra từ 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ụ nhỏ và tạo 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.foundry import FoundryChatClient
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 Công việc Phụ Du lịch
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # chúng tôi muốn giao nhiệm vụ cho đại lý
class TravelPlan(BaseModel):
main_task: str
subtasks: List[TravelSubTask]
is_greeting: bool
provider = FoundryChatClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
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 Định tuyến Ngữ nghĩa nhận được yêu cầu của người dùng (ví dụ: “Tôi cần một kế hoạch khách sạn cho chuyến đi.”).
Người lập kế hoạch sau đó:
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 Nhiệm vụ Phụ Du lịch
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # chúng tôi muốn giao nhiệm vụ 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.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
# Tạo khách hàng
provider = FoundryChatClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=AzureCliCredential(),
)
from pprint import pprint
# Định nghĩa tin nhắn của 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 để định tuyến tới 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 ví dụ notebook với đoạn mã trước có sẵn tại đây.
Một số công việc đòi hỏi sự trao đổi qua lại hoặc tổ chức lại kế hoạch, nơi kết quả của một nhiệm vụ nhỏ ảnh hưởng đến nhiệm vụ tiếp theo. Ví dụ, nếu tác nhân phát hiện một định dạng dữ liệu bất ngờ khi đặt vé máy bay, nó có thể cần điều chỉnh chiến lược trước khi chuyển sang đặt khách sạn.
Ngoài ra, phản hồi của người dùng (ví dụ, một người quyết định họ muốn chuyến bay sớm hơn) có thể kích hoạt việc lập lại kế hoạch một phần. Cách tiếp cận động và lặp lại này bảo đảm rằng giải pháp cuối cùng phù hợp với các ràng buộc thực tế và sở thích người dùng thay đổi.
ví dụ mã mẫu
import os
from agent_framework.foundry import FoundryChatClient
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
Để có kế hoạch toàn diện hơn, hãy xem bài Blogpost Magnetic One về giải quyết các công việc phức tạp.
Trong bài viết này, chúng ta đã xem ví dụ về cách tạo một tác nhân lập kế hoạch có thể lựa chọn năng độ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à giao tác nhân để thực thi. Giả định 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 khác như phản chiếu, tóm tắt, và vòng quay trò chuyện để tùy chỉnh thêm.
Magnetic One - Hệ thống đa tác nhân tổng quát cho việc 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 bài kiểm tra agentic khó khăn. Tham khảo: Magnetic One. Trong triển khai này, bộ điều phối tạo các kế hoạch cụ thể nhiệm vụ và phân công các tác vụ này cho các tác nhân có sẵn. Ngoài việc lập kế hoạch, bộ điều phối còn sử dụng cơ chế theo dõi để giám sát tiến độ công việc và lập lại kế hoạch khi cần thiết.
Tham gia Microsoft Foundry Discord để gặp gỡ những người học khác, tham dự giờ làm việc và nhận giải đáp thắc mắc về Tác nhân AI của bạn.
Xây dựng Tác nhân AI Đáng tin cậy
Tuyên bố miễn trừ 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 bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn tin chính thức. Đối với thông tin quan trọng, nên 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 về bất kỳ hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này.