(Klikkaa yllä olevaa kuvaa nähdäksesi tämän oppitunnin videon)
Tässä oppitunnissa käsitellään
Oppitunnin suoritettuasi ymmärrät:

Useimmat todellisen elämän tehtävät ovat liian monimutkaisia ratkaistavaksi yhdellä askeleella. Tekoälyagentilla tulee olla ytimekäs tavoite, joka ohjaa sen suunnittelua ja toimia. Esimerkiksi tavoite:
"Laadi 3 päivän matkaohjelma."
Vaikka se on yksinkertainen ilmaista, se vaatii silti tarkennusta. Mitä selkeämpi tavoite on, sitä paremmin agentti (ja mahdolliset ihmiskumppanit) voivat keskittyä saavuttamaan oikean lopputuloksen, kuten kattavan reittisuunnitelman lentovaihtoehtoineen, hotellisuosituksineen ja aktiviteettiehdotuksineen.
Suurista tai monimutkaisista tehtävistä tulee hallittavampia, kun ne jaetaan pienempiin, tavoitesuuntautuneisiin alatehtäviin. Matkaohjelman esimerkin tapauksessa tavoite voidaan jakaa seuraaviin osiin:
Jokainen alatehtävä voidaan käsitellä omistautuneiden agenttien tai prosessien toimesta. Yksi agentti voi erikoistua parhaiden lentotarjousten etsimiseen, toinen hotellivarauksiin, ja niin edelleen. Koordinoiva tai “alemman tason” agentti voi sitten koota nämä tulokset yhdeksi johdonmukaiseksi matkasuunnitelmaksi käyttäjälle.
Tämä modulaarinen lähestymistapa myös mahdollistaa asteittaiset parannukset. Esimerkiksi voit lisätä erikoistuneita agentteja ruoka- tai paikallisten aktiviteettien suosituksiin ja hioa reissusuunnitelmaa ajan myötä.
Suuret kielimallit (LLM:t) voivat tuottaa rakenteellista tulostetta (esim. JSON), joka on helpompi käsitellä ja jäsentää alempitasoisissa agenteissa tai palveluissa. Tämä on erityisen hyödyllistä monen agentin tilanteissa, joissa voimme suorittaa tehtävät suunnittelun tuottaman tuloksen jälkeen.
Seuraava Python-koodikatkelma havainnollistaa yksinkertaista suunnitteluagenttia, joka pilkkoo tavoitteen alatehtäviin ja tuottaa 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.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"
# Matkan osatehtävämalli
class TravelSubTask(BaseModel):
task_details: str
assigned_agent: AgentEnum # haluamme antaa tehtävän agentille
class TravelPlan(BaseModel):
main_task: str
subtasks: List[TravelSubTask]
is_greeting: bool
provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())
# Määrittele 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ä Semanttinen Reititin -agentti 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"
# Matkan alitehtä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.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential
# Luo asiakas
provider = AzureAIProjectAgentProvider(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ö ladattuaan se JSON-muodossa
pprint(json.loads(response_content))
Seuraava on edellisen koodin tuotos, ja voit käyttää tätä rakenteellista tulostetta reitittääksesi viestit assigned_agent -kohteeseen ja tiivistääksesi matkasuunnitelman kä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."
}
]
}
Esimerkkimateriaali yllä olevaan koodiin löytyy täältä.
Joissakin tehtävissä tarvitaan edestakaista kommunikaatiota tai uudelleensuunnittelua, jossa yhden alatehtävän tulos vaikuttaa seuraavaan. Esimerkiksi, jos agentti havaitsee odottamattoman tiedostomuodon lentovarauksia tehdessään, se voi joutua mukauttamaan strategiaansa ennen hotellivarauksia.
Lisäksi käyttäjän palaute (esim. ihmisen päätös haluta aikaisempi lento) voi käynnistää osittaisen uudelleensuunnittelun. Tämä dynaaminen, iteratiivinen lähestymistapa varmistaa, että lopullinen ratkaisu vastaa todellisen maailman rajoitteita ja käyttäjän muuttuvia mieltymyksiä.
esim. koodia
from agent_framework.azure import AzureAIProjectAgentProvider
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 uusi suunnitelma ja lähetä tehtävät vastaaville agenteille
Laajempaan suunnitteluun tutustu Magnetic One - blogikirjoitukseen monimutkaisten tehtävien ratkaisemiseksi.
Tässä artikkelissa olemme tarkastelleet esimerkkiä siitä, miten suunnittelija pystyy dynaamisesti valitsemaan määritellyt saatavilla olevat agentit. Suunnittelijan tuotos hajottaa tehtävät ja määrittää agentit, jotta ne voidaan suorittaa. Oletetaan, että agenteilla on pääsy tehtävän suorittamiseen vaadittuihin toimintoihin/työkaluihin. Agenttien lisäksi voit sisällyttää myös muita malleja, kuten reflektoinnin, tiivistäjän ja pyörivän keskustelun mukauttamaan prosessia lisää.
Magentic One - Yleiskäyttöinen monien agenttien järjestelmä monimutkaisten tehtävien ratkaisuun, joka on saavuttanut vaikuttavia tuloksia useissa haastavissa agenttiparametreissa. Lähde: Magentic One. Tässä toteutuksessa orkestroija laatii tehtäväkohtaiset suunnitelmat ja delegoi ne saatavilla oleville agenteille. Suunnittelun lisäksi orkestroija käyttää myös seurantamekanismia tehtävän etenemisen tarkkailuun ja tarvittaessa uudelleensuunnitteluun.
Liity Microsoft Foundry Discord -kanavalle tavata muita oppijoita, osallistua työaikoihin ja saada vastauksia AI-agenttikysymyksiisi.
Luotettavien AI-agenttien rakentaminen
Vastuuvapauslauseke: Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Pyrimme tarkkuuteen, mutta automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäiskielellä tulisi pitää virallisena lähteenä. Tärkeissä asioissa suositellaan ammattilaisen tekemää ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä johtuvista väärinymmärryksistä tai tulkinnoista.