(Napsauta yllä olevaa kuvaa katsellaksesi tämän oppitunnin videon)
Tässä oppitunnissa käsitellään
Oppitunnin suorittamisen jälkeen ymmärrät:

Useimmat todelliset tehtävät ovat liian monimutkaisia ratkaistavaksi yhdellä vaiheella. Tekoälyagentilla täytyy olla ytimekäs päämäärä ohjaamaan suunnittelua ja toimia. Esimerkiksi tavoite:
"Laadi 3 päivän matkaohjelma."
Vaikka tavoite on helppo ilmaista, se tarvitsee täsmentämistä. Mitä selkeämpi tavoite on, sitä paremmin agentti (ja myös ihmiset yhteistyökumppaneina) voivat keskittyä oikean lopputuloksen saavuttamiseen, kuten kattavan matkasuunnitelman laatimiseen lentovaihtoehtoineen, hotellisuosituksineen ja aktiviteettiehdotuksineen.
Suuret tai monimutkaiset tehtävät muuttuvat hallittavammiksi, kun ne jaetaan pienempiin, tavoitekeskeisiin osatehtäviin. Matkaohjelmaesimerkissä voit pilkkoa tavoitteen seuraaviin osiin:
Jokainen osatehtävä voidaan toteuttaa omistautuneiden agenttien tai prosessien toimesta. Yksi agentti voi erikoistua parhaiden lentotarjousten etsimiseen, toinen hotellivarausten hoitamiseen ja niin edelleen. Koordinoiva tai “jatkotoimintoja tekevä” agentti kokoaa nämä tulokset yhdeksi yhtenäiseksi matkasuunnitelmaksi loppukäyttäjälle.
Tämä modulaarinen lähestymistapa mahdollistaa myös asteittaiset parannukset. Voit esimerkiksi lisätä erikoistuneita agentteja ruoka- tai paikallisia aktiviteetteja koskeville suosituksille ja hioa matkasuunnitelmaa ajan mittaan.
Suuret kielimallit (LLM) voivat tuottaa rakenteellista sisältöä (esim. JSON), jota on helpompi käsitellä ja tulkita seuraavissa agenttien tai palveluiden vaiheissa. Tämä on erityisen hyödyllistä monianturaympäristössä, jossa nämä tehtävät voidaan toteuttaa sen jälkeen, kun suunnitelma on saatu.
Seuraava Python-esimerkki osoittaa yksinkertaisen suunnitteluagentin, joka pilkkoo tavoitteen osatehtäviin ja luo rakenteellisen suunnitelman:
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"
# Matkasuorite-malli
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # haluamme määrätä tehtävän agentille
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(),
)
# Määritä käyttäjän viesti
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))
Tässä esimerkissä Semantic Router Agent vastaanottaa käyttäjän pyynnön (esim. “Tarvitsen hotellisuunnitelman matkalleni.”).
Suunnittelija sitten:
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"
# Matkailualitehtävän malli
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # Haluamme osoittaa tehtävän agentille
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
# Luo asiakas
provider = FoundryChatClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=AzureCliCredential(),
)
from pprint import pprint
# Määritä käyttäjän viesti
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
# Tulosta vastaussisältö sen lataamisen jälkeen JSON-muodossa
pprint(json.loads(response_content))
Alla on edellisen koodin tuloste, ja tätä rakenteellista tuotosta voidaan käyttää reitittämään assigned_agent -agentille ja tiivistämään matkasuunnitelma loppukäyttäjälle.
{
"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."
}
]
}
Esimerkkimuistio edelliseen koodiesimerkkiin löytyy tästä.
Joissain tehtävissä tarvitaan edestakaista vuorovaikutusta tai uudelleensuunnittelua, jossa yhden osatehtävän tulos vaikuttaa seuraavaan. Esimerkiksi jos agentti kohtaa odottamattoman tietomuodon lentojen varauksessa, sen voi olla tarpeen muuttaa strategiaansa ennen hotellivarausten aloittamista.
Lisäksi käyttäjän palaute (esim. ihminen päättää suosia aikaisempaa lentoa) voi laukaista osittaisen uudelleensuunnittelun. Tämä dynaaminen ja iteratiivinen lähestymistapa varmistaa, että lopullinen ratkaisu vastaa todellisia rajoituksia ja muuttuvia käyttäjän mieltymyksiä.
esim. esimerkkikoodi
import os
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
#.. sama kuin edellisessä koodissa ja siirrä käyttäjän historia, nykyinen suunnitelma
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}",
)
# .. tee uudelleen suunnitelma ja lähetä tehtävät kyseisille agenteille
Laajemman suunnittelun osalta kannattaa tutustua Magnetic One Blogikirjoitus, joka käsittelee monimutkaisten tehtävien ratkaisua.
Tässä artikkelissa olemme tarkastelleet esimerkkiä siitä, kuinka voimme luoda suunnittelijan, joka voi dynaamisesti valita määritellyt käytettävissä olevat agentit. Suunnittelijan tuotos pilkkoo tehtävät ja nimeää agentit niiden suorittamista varten. Oletuksena on, että agenteilla on käytettävissään tehtävän suorittamiseen tarvittavat toiminnot/työkalut. Agenttien lisäksi mukaan voi liittää muita malleja kuten reflektio, tiivistäjä ja pyörivä keskustelu lisämuokkausta varten.
Magnetic One - Yleistarkoituksen monianturijärjestelmä monimutkaisten tehtävien ratkaisuun ja on saavuttanut vaikuttavia tuloksia useilla haastavilla agenttitehtävävertailuilla. Viite: Magnetic One. Tässä toteutuksessa orkestroija luo tehtäväkohtaiset suunnitelmat ja delegoi ne käytettävissä oleville agenteille. Suunnittelun lisäksi orkestroija käyttää myös seurantamekanismia seuratakseen tehtävän etenemistä ja tarvittaessa uudelleensuunnittelee.
Liity Microsoft Foundry Discordiin tavata oppijoita, osallistua aukioloaikoihin ja saada vastauksia AI-agentteihin liittyviin kysymyksiisi.
Rakentamalla luotettavia AI-agentteja
Vastuuvapauslauseke: Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.