(Кликнете върху горното изображение, за да гледате видеото на този урок)
Този урок ще покрие
След завършване на този урок, ще имате разбиране за:

Повечето реални задачи са твърде сложни, за да се решат с един единствен ход. AI агентът се нуждае от сбита цел, която да насочва планирането и действията му. Например, разгледайте целта:
"Създай 3-дневен пътешественически план."
Въпреки че е лесно да се заяви, тя все още се нуждае от доуточняване. Колкото по-ясна е целта, толкова по-добре агентът (и всички човешки колеги) могат да се фокусират върху постигането на правилния резултат, като създаване на подробен план с опции за полети, препоръки за хотели и предложения за дейности.
Големите или сложни задачи стават по-управляеми, когато се разделят на по-малки, целево насочени подзадачи. За примера с план за пътуване, можете да декомпозирате целта на:
Всяка подзадача може да бъде решена от отделни агенти или процеси. Един агент може да се специализира в търсене на най-добрите оферти за полети, друг да се фокусира върху резервации на хотели и т.н. Координиращият или „последващ“ агент може да комбинира тези резултати в един цялостен маршрут за крайния потребител.
Този модулен подход позволява също инкрементални подобрения. Например, може да добавите специализирани агенти за препоръки на храна или предложения за местни дейности и да усъвършенствате маршрута с времето.
Големите езикови модели (LLMs) могат да генерират структуриран изход (напр. JSON), който е по-лесен за обработка и парсване от последващи агенти или услуги. Това е особено полезно в многoагентен контекст, където можем да изпълняваме задачи след получаването на плана от планирания модул.
Следният пример на Python демонстрира прост планиращ агент, който декомпозира целта на подзадачи и създава структуриран план:
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"
# Модел за подзадача за пътуване
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # искаме да възложим задачата на агента
class TravelPlan(BaseModel):
main_task: str
subtasks: List[TravelSubTask]
is_greeting: bool
provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())
# Дефинирайте съобщението на потребителя
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))
В този пример, Семантичен Роутер Агент получава потребителска заявка (например, “Имам нужда от план за хотел за пътуването си.”).
Планиращият модул след това:
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"
# Модел за подвъзлаза на пътуване
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # искаме да възложим задачата на агента
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
# Създайте клиента
provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())
from pprint import pprint
# Определете потребителското съобщение
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
# Отпечатайте съдържанието на отговора след зареждането му като JSON
pprint(json.loads(response_content))
По-долу е изходът от предходния код и можете след това да използвате този структуриран резултат, за да насочите към assigned_agent и да обобщите плана за пътуване за крайния потребител.
{
"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."
}
]
}
Примерен тетрадка с предходния примерен код е налична тук.
Някои задачи изискват двупосочна комуникация или повторно планиране, където резултатът от една подзадача влияе на следващата. Например, ако агентът открие неочакван формат на данни при резервацията на полети, може да се наложи да адаптира своята стратегия, преди да премине към резервации на хотели.
Освен това, обратната връзка от потребителя (например ако човек прецени, че предпочита по-ранен полет) може да задейства частично ново планиране. Този динамичен, итеративен подход гарантира, че крайното решение съответства на реалните ограничения и променящите се предпочитания на потребителите.
примерен код
from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential
#.. същото като предишния код и предавайте историята на потребителя, текущия план
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}",
)
# .. пренасрочете и изпратете задачите до съответните агенти
За по-пълноценно планиране, разгледайте Magnetic One Блогпост за решаване на сложни задачи.
В тази статия разгледахме пример за това как можем да създадем планировчик, който динамично избира наличните агенти, които са дефинирани. Изходът на Планировчика декомпозира задачите и назначава агентите, за да могат те да бъдат изпълнени. Предполага се, че агентите имат достъп до функциите/инструментите, необходими за изпълнение на задачата. Освен агенти можете да включите и други модели като рефлексия, обобщител и round robin чат за допълнително персонализиране.
Magentic One - Общ многоагентен система за решаване на сложни задачи и е постигнала впечатляващи резултати по множество предизвикателни агенционни показатели. Референция: Magentic One. В тази имплементация оркестраторът създава планове, специфични за задачи, и делегира тези задачи на наличните агенти. Освен планирането, оркестраторът използва и механизъм за проследяване на напредъка на задачата и пре-планира при необходимост.
Присъединете се към Microsoft Foundry Discord, за да се срещнете с други обучаващи се, да посещавате часове за консултации и да получите отговори на въпросите си за AI агенти.
Изграждане на надеждни AI агенти
Отказ от отговорност: Този документ е преведен с помощта на AI преводаческа услуга Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия първоначален език трябва да се счита за авторитетен източник. За важна информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да било недоразумения или погрешни тълкувания, произтичащи от използването на този превод.