(Spustelėkite aukščiau esantį paveikslėlį, kad peržiūrėtumėte šios pamokos vaizdo įrašą)
Metakognicija DI agentuose
Sveiki atvykę į pamoką apie metakogniciją DI agentuose! Šis skyrius skirtas pradedantiesiems, kurie domisi, kaip DI agentai gali mąstyti apie savo pačių mąstymo procesus. Pamokos pabaigoje suprasite pagrindines sąvokas ir būsite aprūpinti praktiniais pavyzdžiais, kaip pritaikyti metakogniciją DI agentų kūrime.
Baigę šią pamoką galėsite:
Metakognicija reiškia aukštesnio rango pažinimo procesus, kurie apima mąstymą apie savo paties mąstymą. DI agentams tai reiškia gebėjimą įvertinti ir koreguoti savo veiksmus remiantis savimonėmis ir praeities patirtimi. Metakognicija, arba „mąstymas apie mąstymą“, yra svarbi sąvoka agentinių DI sistemų kūrime. Tai reiškia, kad DI sistemos sąmoningos apie savo vidinius procesus ir gali stebėti, reguliuoti bei pritaikyti savo elgesį atitinkamai. Kaip mes darome, kai jaučiame aplinką ar nagrinėjame problemą. Ši savimonė gali padėti DI sistemoms priimti geresnius sprendimus, atpažinti klaidas ir gerinti savo veikimą laikui bėgant – tai vėl susiję su Turingo testu ir diskusijomis, ar DI perims kontrolę.
Agentinių DI sistemų kontekste metakognicija gali padėti spręsti kelis iššūkius, pavyzdžiui:
Metakognicija, arba „mąstymas apie mąstymą“, yra aukštesnio rango pažinimo procesas, kuris apima savimonę ir savo pažinimo procesų savireguliaciją. DI srityje metakognicija suteikia agentams galimybę įvertinti ir pritaikyti savo strategijas bei veiksmus, kas lemia pagerintą problemų sprendimą ir sprendimų priėmimo gebėjimus. Suprasdami metakogniciją, galite kurti DI agentus, kurie yra ne tik išmanesni, bet ir labiau prisitaikantys bei efektyvūs. Tikroje metakognicijoje DI aiškiai samprotauja apie savo pačios samprotavimus.
Pavyzdys: „Aš pasirinkau pigesnius skrydžius, nes… galbūt praleidau tiesioginius skrydžius, todėl dar kartą peržiūrėsiu.“. Stebi, kaip ir kodėl pasirinko tam tikrą maršrutą.
Metakognicija atlieka lemiamą vaidmenį DI agentų kūrime dėl kelių priežasčių:

Prieš gilindamiesi į metakognityvinius procesus, svarbu suprasti pagrindinius DI agento komponentus. DI agentas paprastai susideda iš:
Šie komponentai veikia kartu, sukurdami „ekspertizės vienetą“, galintį atlikti specifines užduotis.
Pavyzdys: Įsivaizduokite kelionių agentą, agento paslaugas, kurios ne tik planuoja jūsų atostogas, bet ir koreguoja savo veiksmus pagal realaus laiko duomenis ir praeities klientų kelionių patirtis.
Įsivaizduokite, kad kuriate DI varomą kelionių agento paslaugą. Šis agentas, „Kelionių agentas“, padeda vartotojams planuoti atostogas. Norint įtraukti metakogniciją, „Kelionių agentas“ turi įvertinti ir koreguoti savo veiksmus remdamasis savimonėmis ir praeities patirtimi. Štai kaip metakognicija galėtų pasireikšti:
Dabartinė užduotis – padėti vartotojui suplanuoti kelionę į Paryžių.
„Kelionių agentas“ naudoja metakogniciją, kad įvertintų savo veiklą ir mokytųsi iš patirties. Pavyzdžiui:
Štai supaprastintas pavyzdys, kaip „Kelionių agento“ kodas gali atrodyti įtraukiant metakogniciją:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
# Ieškokite skrydžių, viešbučių ir lankytinų vietų pagal pageidavimus
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
# Analizuokite atsiliepimus ir koreguokite būsimus pasiūlymus
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Pavyzdinis naudojimas
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
Įtraukdami metakogniciją, „Kelionių agentas“ gali suteikti asmeniškesnes ir tikslesnes kelionių rekomendacijas, gerindamas bendrą vartotojo patirtį.
Planavimas yra svarbi DI agentų elgesio sudedamoji dalis. Tai apima žingsnių, reikalingų pasiekti tikslą, apibrėžimą atsižvelgiant į esamą būseną, išteklius ir galimus kliuvinius.
Pavyzdys: Čia pateikti žingsniai, kurių „Kelionių agentas“ turi imtis, kad veiksmingai padėtų vartotojui suplanuoti kelionę:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Pavyzdinis naudojimas užsakymo užklausos metu
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
Pirmiausia pradėkime nuo supratimo, kuo skiriasi RAG įrankis ir pre-emptive konteksto krovimas.

RAG derina informacijos gavimo sistemą su generatyviniu modeliu. Užklausai pateikus, gavimo sistema išorinėje šaltinyje surenka susijusius dokumentus ar duomenis, kurie tada pridedami prie įėjimo generatyviniam modeliui. Tai padeda modeliui sugeneruoti tikslesnius ir kontekstualiai svarbesnius atsakymus.
RAG sistemoje agentas gauna susijusią informaciją iš žinių bazės ir naudoja ją tinkamiems atsakymams ar veiksmams generuoti.
Korekcinis RAG požiūris orientuojasi į RAG technikų naudojimą klaidoms taisyti ir DI agentų tikslumo gerinimui. Tai apima:
Įsivaizduokite paieškos agentą, kuris surenka informaciją iš interneto atsakant į vartotojo užklausas. Korekcinis RAG požiūris gali apimti:
Korekcinis RAG (Retrieval-Augmented Generation) pagerina DI gebėjimą gauti ir generuoti informaciją, taisant bet kokius netikslumus. Pažiūrėkime, kaip „Kelionių agentas“ gali naudoti korekcinį RAG požiūrį, kad suteiktų tikslesnes ir aktualias kelionių rekomendacijas.
Tai apima:
Pavyzdys:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Pavyzdys:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Pavyzdys:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Pavyzdys:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Pavyzdys:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Pavyzdys:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Pavyzdys:
def adjust_preferences(preferences, feedback):
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
return preferences
preferences = adjust_preferences(preferences, feedback)
Štai supaprastintas Python kodo pavyzdys, įtraukiantis korekcinį RAG požiūrį „Kelionių agento“ sistemoje:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
new_itinerary = self.generate_recommendations()
return new_itinerary
# Pavyzdinis naudojimas
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
new_itinerary = travel_agent.adjust_based_on_feedback(feedback)
print("Updated Itinerary:", new_itinerary)
Išankstinis konteksto įkėlimas reiškia, kad modelis prieš apdorojant užklausą gauna atitinkamą kontekstą ar fono informaciją. Tai leidžia modeliui turėti šią informaciją nuo pat pradžios, kas padeda sugeneruoti labiau pagrįstus atsakymus be poreikio rinkti papildomus duomenis proceso metu.
Štai supaprastintas pavyzdys, kaip išankstinis konteksto įkėlimas galėtų atrodyti kelionių agento programoje Python kalba:
class TravelAgent:
def __init__(self):
# Iš anksto įkelti populiarias kelionės vietas ir jų informaciją
self.context = {
"Paris": {"country": "France", "currency": "Euro", "language": "French", "attractions": ["Eiffel Tower", "Louvre Museum"]},
"Tokyo": {"country": "Japan", "currency": "Yen", "language": "Japanese", "attractions": ["Tokyo Tower", "Shibuya Crossing"]},
"New York": {"country": "USA", "currency": "Dollar", "language": "English", "attractions": ["Statue of Liberty", "Times Square"]},
"Sydney": {"country": "Australia", "currency": "Dollar", "language": "English", "attractions": ["Sydney Opera House", "Bondi Beach"]}
}
def get_destination_info(self, destination):
# Gauti kelionės vietos informaciją iš iš anksto įkelto konteksto
info = self.context.get(destination)
if info:
return f"{destination}:\nCountry: {info['country']}\nCurrency: {info['currency']}\nLanguage: {info['language']}\nAttractions: {', '.join(info['attractions'])}"
else:
return f"Sorry, we don't have information on {destination}."
# Naudojimo pavyzdys
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Inicializacija (__init__ metodas): TravelAgent klasė iš anksto įkelia žodyną, kuriame yra informacija apie populiarias kelionės vietas, tokias kaip Paryžius, Tokijas, Niujorkas ir Sidnėjus. Šiame žodyne yra tokia informacija kaip šalis, valiuta, kalba ir pagrindinės lankytinos vietos kiekvienai vietai.
Informacijos gavimas (get_destination_info metodas): Kai vartotojas užduoda klausimą apie tam tikrą kelionės vietą, get_destination_info metodas paima reikiamą informaciją iš išankstinio konteksto žodyno.
Iš anksto įkėlus kontekstą, kelionių agento programa gali greitai atsakyti į vartotojo užklausas nereikalaujant rinkti šios informacijos iš išorinio šaltinio realiu laiku. Tai daro programą efektyvesnę ir jautresnę.
Plano inicijavimas su tikslu reiškia aiškaus tikslo ar norimo rezultato apibrėžimą iš karto. Apibrėždama šį tikslą iš anksto, modelis gali jį naudoti kaip vadovaujančią principą per visą iteracinį procesą. Tai padeda užtikrinti, kad kiekviena iteracija priartina prie norimo rezultato, todėl procesas tampa efektyvesnis ir labiau susitelkęs.
Štai pavyzdys, kaip galėtumėte inicijuoti kelionės planą su tikslu prieš iteruojant kelionių agento programoje Python kalba:
Kelionių agentas nori suplanuoti klientui individualizuotas atostogas. Tikslas – sukurti kelionės maršrutą, kuris maksimaliai atitiktų kliento pageidavimus ir biudžetą.
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def bootstrap_plan(self, preferences, budget):
plan = []
total_cost = 0
for destination in self.destinations:
if total_cost + destination['cost'] <= budget and self.match_preferences(destination, preferences):
plan.append(destination)
total_cost += destination['cost']
return plan
def match_preferences(self, destination, preferences):
for key, value in preferences.items():
if destination.get(key) != value:
return False
return True
def iterate_plan(self, plan, preferences, budget):
for i in range(len(plan)):
for destination in self.destinations:
if destination not in plan and self.match_preferences(destination, preferences) and self.calculate_cost(plan, destination) <= budget:
plan[i] = destination
break
return plan
def calculate_cost(self, plan, new_destination):
return sum(destination['cost'] for destination in plan) + new_destination['cost']
# Pavyzdinis naudojimas
destinations = [
{"name": "Paris", "cost": 1000, "activity": "sightseeing"},
{"name": "Tokyo", "cost": 1200, "activity": "shopping"},
{"name": "New York", "cost": 900, "activity": "sightseeing"},
{"name": "Sydney", "cost": 1100, "activity": "beach"},
]
preferences = {"activity": "sightseeing"}
budget = 2000
travel_agent = TravelAgent(destinations)
initial_plan = travel_agent.bootstrap_plan(preferences, budget)
print("Initial Plan:", initial_plan)
refined_plan = travel_agent.iterate_plan(initial_plan, preferences, budget)
print("Refined Plan:", refined_plan)
Inicializacija (__init__ metodas): TravelAgent klasė yra inicializuojama su sąrašu potencialių kelionės vietų, kurių kiekviena turi atributus kaip pavadinimas, kaina ir veiklos tipas.
Plano inicijavimas (bootstrap_plan metodas): Šis metodas sukuria pradinis kelionės planą remiantis kliento pageidavimais ir biudžetu. Jis iteruoja per vietų sąrašą ir prideda jas prie plano, jei jos atitinka kliento pageidavimus ir atitinka biudžetą.
Pageidavimų atitikimas (match_preferences metodas): Šis metodas tikrina, ar vieta atitinka kliento pageidavimus.
Plano iteracija (iterate_plan metodas): Šis metodas tobulina pirminį planą, bandydamas pakeisti kiekvieną vietą plane geresniu variantu, atsižvelgiant į kliento pageidavimus ir biudžeto apribojimus.
Sąnaudų skaičiavimas (calculate_cost metodas): Šis metodas apskaičiuoja bendrą dabartinio plano kainą, įskaitant galimą naują vietą.
Inicijuodamas planą su aiškiu tikslu (pvz., maksimalizuoti kliento pasitenkinimą) ir iteruodamas, kad tobulintų planą, kelionių agentas gali sukurti individualizuotą ir optimizuotą kelionės maršrutą klientui. Šis metodas užtikrina, kad kelionės planas nuo pat pradžių atitiks kliento pageidavimus ir biudžetą bei gerės su kiekviena iteracija.
Didieji kalbos modeliai (LLM) gali būti naudojami perskirstymui ir vertinimui, įvertinant gautų dokumentų ar sugeneruotų atsakymų aktualumą ir kokybę. Štai kaip tai veikia:
Gavimas: Pradinis gavimo etapas paima kandidatų dokumentų arba atsakymų rinkinį, remiantis užklausa.
Perskirstymas: LLM įvertina šiuos kandidatus ir perskirsto juos pagal aktualumą ir kokybę. Šis žingsnis užtikrina, kad pirmiausia būtų pateikta pati aktualiausia ir aukščiausios kokybės informacija.
Vertinimas: LLM priskiria balus kiekvienam kandidatui, atspindinčius jų aktualumą ir kokybę. Tai padeda pasirinkti geriausią atsakymą ar dokumentą vartotojui.
Naudodami LLM perskirstymui ir vertinimui, sistema gali pateikti tikslesnę ir kontekstualiai svarbesnę informaciją, gerindama bendrą vartotojo patirtį.
Štai pavyzdys, kaip kelionių agentas gali naudoti Didįjį kalbos modelį (LLM) perskirstymui ir vertinimui pagal vartotojo pageidavimus Python kalba:
Kelionių agentas nori rekomenduoti geriausias kelionės vietas klientui pagal jo pageidavimus. LLM padės perskirstyti ir įvertinti vietas, kad būtų pateikta pati aktualiausia pasirinktis.
Štai kaip galite atnaujinti ankstesnį pavyzdį, naudodami Azure OpenAI paslaugas:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Sugeneruoti užklausą Azure OpenAI
prompt = self.generate_prompt(preferences)
# Apibrėžti antraštes ir užklausos duomenis
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Iškvieti Azure OpenAI API, kad gauti perrikiuotas ir įvertintas paskirties vietas
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Išskirti ir grąžinti rekomendacijas
recommendations = response_data['choices'][0]['text'].strip().split('\n')
return recommendations
def generate_prompt(self, preferences):
prompt = "Here are the travel destinations ranked and scored based on the following user preferences:\n"
for key, value in preferences.items():
prompt += f"{key}: {value}\n"
prompt += "\nDestinations:\n"
for destination in self.destinations:
prompt += f"- {destination['name']}: {destination['description']}\n"
return prompt
# Naudojimo pavyzdys
destinations = [
{"name": "Paris", "description": "City of lights, known for its art, fashion, and culture."},
{"name": "Tokyo", "description": "Vibrant city, famous for its modernity and traditional temples."},
{"name": "New York", "description": "The city that never sleeps, with iconic landmarks and diverse culture."},
{"name": "Sydney", "description": "Beautiful harbour city, known for its opera house and stunning beaches."},
]
preferences = {"activity": "sightseeing", "culture": "diverse"}
api_key = 'your_azure_openai_api_key'
endpoint = 'https://your-endpoint.com/openai/deployments/your-deployment-name/completions?api-version=2022-12-01'
travel_agent = TravelAgent(destinations)
recommendations = travel_agent.get_recommendations(preferences, api_key, endpoint)
print("Recommended Destinations:")
for rec in recommendations:
print(rec)
Inicializacija: TravelAgent klasė yra inicializuojama su potencialių kelionės vietų sąrašu, kurių kiekviena turi atributus, tokius kaip pavadinimas ir aprašymas.
Rekomendacijų gavimas (get_recommendations metodas): Šis metodas generuoja užklausą Azure OpenAI paslaugai pagal vartotojo pageidavimus ir siunčia HTTP POST užklausą Azure OpenAI API, kad gautų perskirstytas ir įvertintas vietas.
Užklausos generavimas (generate_prompt metodas): Šis metodas sudaro užklausą Azure OpenAI, įtraukiant vartotojo pageidavimus ir vietų sąrašą. Užklausa nukreipia modelį perskirstyti ir įvertinti vietas pagal pateiktus pageidavimus.
API kvietimas: requests biblioteka naudojama siųsti HTTP POST užklausą į Azure OpenAI API galutinį tašką. Atsakymas turi perskirstytas ir įvertintas vietas.
Pavyzdinis naudojimas: Kelionių agentas surenka vartotojo pageidavimus (pvz., susidomėjimą lankytinomis vietomis ir įvairią kultūrą) ir naudoja Azure OpenAI paslaugą, kad gautų perskirstytas ir įvertintas kelionės vietų rekomendacijas.
Būtinai pakeiskite your_azure_openai_api_key į savo tikrąjį Azure OpenAI API raktą ir https://your-endpoint.com/... į tikrąjį Azure OpenAI diegimo galutinį URL.
Naudodamasis LLM perskirstymui ir vertinimui, kelionių agentas gali pateikti labiau suasmenintas ir aktualias kelionės rekomendacijas klientams, pagerindamas jų bendrą patirtį.
Retrieval-Augmented Generation (RAG) gali būti tiek užklausos metodas, tiek įrankis AI agentų kūrime. Supratimas apie skirtumus gali padėti jums efektyviau naudoti RAG savo projektuose.
Kas tai yra?
Kaip tai veikia:
Pavyzdys kelionių agentui:
Kas tai yra?
Kaip tai veikia:
Pavyzdys kelionių agentui:
| Aspektas | Užklausos metodas | Įrankis |
|---|---|---|
| Rankinis vs Automatinis | Rankiniu būdu formuluojamos užklausos kiekvienai užklausai. | Automatizuotas gavimo ir generavimo procesas. |
| Kontrolė | Teikia didesnę kontrolę gavimo procesui. | Supaprastina ir automatizuoja gavimo ir generavimo procesą. |
| Lankstumas | Leidžia suasmenintas užklausas pagal specifinius poreikius. | Efektyvesnis didelio masto įgyvendinimams. |
| Sudėtingumas | Reikalauja užklausų kūrimo ir tobulinimo. | Lengviau integruoti AI agento architektūroje. |
Užklausos metodo pavyzdys:
def search_museums_in_paris():
prompt = "Find top museums in Paris"
search_results = search_web(prompt)
return search_results
museums = search_museums_in_paris()
print("Top Museums in Paris:", museums)
Įrankio pavyzdys:
class Travel_Agent:
def __init__(self):
self.rag_tool = RAGTool()
def get_museums_in_paris(self):
user_input = "I want to visit museums in Paris."
response = self.rag_tool.retrieve_and_generate(user_input)
return response
travel_agent = Travel_Agent()
museums = travel_agent.get_museums_in_paris()
print("Top Museums in Paris:", museums)
Aktualumo vertinimas yra svarbus AI agento veiklos aspektas. Tai užtikrina, kad agento surinkta ir sugeneruota informacija būtų tinkama, tiksli ir naudinga vartotojui. Pažvelkime, kaip vertinti aktualumą AI agentuose, pateikiant praktinius pavyzdžius ir metodikas.
Pavyzdys:
def relevance_score(item, query):
score = 0
if item['category'] in query['interests']:
score += 1
if item['price'] <= query['budget']:
score += 1
if item['location'] == query['destination']:
score += 1
return score
Pavyzdys:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Grąžina 10 svarbiausių elementų
Pavyzdys:
def process_query(query):
# Naudokite NLP, kad išgautumėte pagrindinę informaciją iš vartotojo užklausos
processed_query = nlp(query)
return processed_query
Pavyzdys:
def adjust_based_on_feedback(feedback, items):
for item in items:
if item['name'] in feedback['liked']:
item['relevance'] += 1
if item['name'] in feedback['disliked']:
item['relevance'] -= 1
return items
Štai praktinis pavyzdys, kaip Kelionių agentas gali vertinti kelionės rekomendacijų aktualumą:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
ranked_hotels = self.filter_and_rank(hotels, self.user_preferences)
itinerary = create_itinerary(flights, ranked_hotels, attractions)
return itinerary
def filter_and_rank(self, items, query):
ranked_items = sorted(items, key=lambda item: self.relevance_score(item, query), reverse=True)
return ranked_items[:10] # Grąžinti 10 svarbiausių elementų
def relevance_score(self, item, query):
score = 0
if item['category'] in query['interests']:
score += 1
if item['price'] <= query['budget']:
score += 1
if item['location'] == query['destination']:
score += 1
return score
def adjust_based_on_feedback(self, feedback, items):
for item in items:
if item['name'] in feedback['liked']:
item['relevance'] += 1
if item['name'] in feedback['disliked']:
item['relevance'] -= 1
return items
# Naudojimo pavyzdys
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_items = travel_agent.adjust_based_on_feedback(feedback, itinerary['hotels'])
print("Updated Itinerary with Feedback:", updated_items)
Paieška pagal ketinimą reiškia vartotojo užklausos pagrindinio tikslo ar poreikio supratimą ir interpretavimą, kad būtų surinkta ir sugeneruota pati aktualiausia ir naudingiausia informacija. Šis požiūris eina toliau nei tik raktinių žodžių atitikimas ir orientuojasi į vartotojo tikrąsias reikmes bei kontekstą.
Pažvelkime į Travel Agent kaip pavyzdį, kaip galėtų būti įgyvendinta paieška pagal ketinimą.
Vartotojo pageidavimų rinkimas
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Vartotojo ketinimo supratimas
def identify_intent(query):
if "book" in query or "purchase" in query:
return "transactional"
elif "website" in query or "official" in query:
return "navigational"
else:
return "informational"
Konteksto suvokimas
def analyze_context(query, user_history):
# Sujunkite esamą užklausą su vartotojo istorija, kad suprastumėte kontekstą
context = {
"current_query": query,
"user_history": user_history
}
return context
Ieškoti ir personalizuoti rezultatus
def search_with_intent(query, preferences, user_history):
intent = identify_intent(query)
context = analyze_context(query, user_history)
if intent == "informational":
search_results = search_information(query, preferences)
elif intent == "navigational":
search_results = search_navigation(query)
elif intent == "transactional":
search_results = search_transaction(query, preferences)
personalized_results = personalize_results(search_results, user_history)
return personalized_results
def search_information(query, preferences):
# Pavyzdinė paieškos logika informaciniam tikslui
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Pavyzdinė paieškos logika navigaciniam tikslui
results = search_web(query)
return results
def search_transaction(query, preferences):
# Pavyzdinė paieškos logika transakciniam tikslui
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Pavyzdinė personalizavimo logika
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Grąžinti 10 geriausių suasmenintų rezultatų
Naudojimo pavyzdys
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
user_history = ["Louvre Museum website", "Book flight to Paris"]
query = "best museums in Paris"
results = search_with_intent(query, preferences, user_history)
print("Search Results:", results)
Kodo generavimo agentai naudoja DI modelius kodui rašyti ir vykdyti, sprendžiant sudėtingas problemas ir automatizuojant užduotis.
Kodo generavimo agentai naudoja generatyvius DI modelius kodo rašymui ir vykdymui. Šie agentai gali spręsti sudėtingas problemas, automatizuoti užduotis ir suteikti vertingos informacijos generuodami ir vykdydami kodą įvairiomis programavimo kalbomis.
Įsivaizduokite, kad kuriate kodo generavimo agentą. Štai kaip jis galėtų veikti:
Šiame pavyzdyje sukursime kodo generavimo agentą, Pavyzdžiui, Kelionių agentą, kuris padėtų vartotojams planuoti keliones generuodamas ir vykdydamas kodą. Šis agentas galės atlikti užduotis, tokias kaip kelionių parinkčių paieška, rezultatų filtravimas ir maršruto sudarymas, naudodamas generatyvią DI.
Vartotojo pageidavimų rinkimas
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Kodo generavimas duomenims gauti
def generate_code_to_fetch_data(preferences):
# Pavyzdys: Generuoti kodą skrydžių paieškai pagal naudotojo pageidavimus
code = f"""
def search_flights():
import requests
response = requests.get('https://api.example.com/flights', params={preferences})
return response.json()
"""
return code
def generate_code_to_fetch_hotels(preferences):
# Pavyzdys: Generuoti kodą viešbučių paieškai
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Generuoto kodo vykdymas
def execute_code(code):
# Vykdykite sugeneruotą kodą naudodami exec
exec(code)
result = locals()
return result
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
flight_code = generate_code_to_fetch_data(preferences)
hotel_code = generate_code_to_fetch_hotels(preferences)
flights = execute_code(flight_code)
hotels = execute_code(hotel_code)
print("Flight Options:", flights)
print("Hotel Options:", hotels)
Maršruto sudarymas
def generate_itinerary(flights, hotels, attractions):
itinerary = {
"flights": flights,
"hotels": hotels,
"attractions": attractions
}
return itinerary
attractions = search_attractions(preferences)
itinerary = generate_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Rezultatų patikslinimas pagal atsiliepimus
def adjust_based_on_feedback(feedback, preferences):
# Koreguoti nustatymus pagal vartotojo atsiliepimus
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
return preferences
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences)
# Atkurti ir vykdyti kodą su atnaujintais nustatymais
updated_flight_code = generate_code_to_fetch_data(updated_preferences)
updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)
updated_flights = execute_code(updated_flight_code)
updated_hotels = execute_code(updated_hotel_code)
updated_itinerary = generate_itinerary(updated_flights, updated_hotels, attractions)
print("Updated Itinerary:", updated_itinerary)
Atsižvelgiant į lentelės schemą, tikrai galima pagerinti užklausų generavimo procesą, pasitelkiant aplinkos suvokimą ir samprotavimą.
Štai pavyzdys, kaip tai galima atlikti:
Žemiau pateiktas atnaujinto Python kodo pavyzdys, kuris taiko šias koncepcijas:
def adjust_based_on_feedback(feedback, preferences, schema):
# Koreguoti nuostatas pagal vartotojo atsiliepimus
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Logika pagrįsta schema, skirta koreguoti kitas susijusias nuostatas
for field in schema:
if field in preferences:
preferences[field] = adjust_based_on_environment(feedback, field, schema)
return preferences
def adjust_based_on_environment(feedback, field, schema):
# Vietinė logika nuostatų koregavimui pagal schemą ir atsiliepimus
if field in feedback["liked"]:
return schema[field]["positive_adjustment"]
elif field in feedback["disliked"]:
return schema[field]["negative_adjustment"]
return schema[field]["default"]
def generate_code_to_fetch_data(preferences):
# Generuoti kodą skrydžių duomenims gauti pagal atnaujintas nuostatas
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generuoti kodą viešbučių duomenims gauti pagal atnaujintas nuostatas
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simuliuoti kodo vykdymą ir grąžinti pavyzdinius duomenis
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Sugeneruoti maršrutą pagal skrydžius, viešbučius ir lankytinas vietas
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Pavyzdinė schema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Pavyzdinis naudojimas
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Perkurti ir vykdyti kodą su atnaujintomis nuostatomis
updated_flight_code = generate_code_to_fetch_data(updated_preferences)
updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)
updated_flights = execute_code(updated_flight_code)
updated_hotels = execute_code(updated_hotel_code)
updated_itinerary = generate_itinerary(updated_flights, updated_hotels, feedback["liked"])
print("Updated Itinerary:", updated_itinerary)
schema žodynas apibrėžia, kaip pageidavimai turėtų būti koreguojami pagal atsiliepimus. Jame yra laukai, tokie kaip favorites ir avoid, su atitinkamomis korekcijomis.adjust_based_on_feedback metodas): Šis metodas keičia pageidavimus pagal vartotojo atsiliepimus ir schemą.adjust_based_on_environment metodas): Šis metodas koreguoja pakeitimus pagal schemą ir atsiliepimus.Sistemai suteikus galimybę suvokti aplinką ir samprotauti pagal schemą, ji gali generuoti tikslesnes ir svarbesnes užklausas, kas veda prie geresnių kelionių rekomendacijų ir labiau suasmenintos vartotojo patirties.
SQL (struktūruotų užklausų kalba) yra galingas įrankis darbui su duomenų bazėmis. Naudojant ją kaip dalį papildymo duomenų gavimų generavimo (RAG) požiūrio, SQL gali gauti svarbią informaciją iš duomenų bazių, kuri leistų DI agentams kurti ir vykdyti atsakymus ar veiksmus. Pažiūrėkime, kaip SQL gali būti panaudotas kaip RAG metodas kelionių agento kontekste.
Pavyzdys: Duomenų analizės agentas:
Vartotojo pageidavimų rinkimas
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
SQL užklausų generavimas
def generate_sql_query(table, preferences):
query = f"SELECT * FROM {table} WHERE "
conditions = []
for key, value in preferences.items():
conditions.append(f"{key}='{value}'")
query += " AND ".join(conditions)
return query
SQL užklausų vykdymas
import sqlite3
def execute_sql_query(query, database="travel.db"):
connection = sqlite3.connect(database)
cursor = connection.cursor()
cursor.execute(query)
results = cursor.fetchall()
connection.close()
return results
Rekomendacijų generavimas
def generate_recommendations(preferences):
flight_query = generate_sql_query("flights", preferences)
hotel_query = generate_sql_query("hotels", preferences)
attraction_query = generate_sql_query("attractions", preferences)
flights = execute_sql_query(flight_query)
hotels = execute_sql_query(hotel_query)
attractions = execute_sql_query(attraction_query)
itinerary = {
"flights": flights,
"hotels": hotels,
"attractions": attractions
}
return itinerary
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = generate_recommendations(preferences)
print("Suggested Itinerary:", itinerary)
Skrydžių užklausa
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Viešbučių užklausa
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Lankytinų vietų užklausa
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Naudodamiesi SQL kaip dalimi papildymo duomenų gavimų generavimo (RAG) metodo, DI agentai, tokie kaip Kelionių agentas, gali dinamiškai gauti ir naudoti aktualius duomenis, kad suteiktų tikslias ir suasmenintas rekomendacijas.
Norėdami parodyti metakognicijos įgyvendinimą, sukursime paprastą agentą, kuris atsispindi savo sprendimų priėmimo procese spręsdamas problemą. Šiame pavyzdyje sukursime sistemą, kur agentas bando optimizuoti viešbučio pasirinkimą, bet vėliau įvertina savo samprotavimą ir koreguoja strategiją, kai padaro klaidų ar neoptimalų sprendimą.
Tai simuliuosime paprastu pavyzdžiu, kuriame agentas renkasi viešbučius pagal kainos ir kokybės derinį, tačiau jis „atsispindi“ savo sprendimuose ir atitinkamai koreguoja savo elgesį.
Štai pavyzdys:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Saugo anksčiau pasirinktus viešbučius
self.corrected_choices = [] # Saugo pataisytus pasirinkimus
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Galimos strategijos
def recommend_hotel(self, hotels, strategy):
"""
Recommend a hotel based on the chosen strategy.
The strategy can either be 'cheapest' or 'highest_quality'.
"""
if strategy == 'cheapest':
recommended = min(hotels, key=lambda x: x['price'])
elif strategy == 'highest_quality':
recommended = max(hotels, key=lambda x: x['quality'])
else:
recommended = None
self.previous_choices.append((strategy, recommended))
return recommended
def reflect_on_choice(self):
"""
Reflect on the last choice made and decide if the agent should adjust its strategy.
The agent considers if the previous choice led to a poor outcome.
"""
if not self.previous_choices:
return "No choices made yet."
last_choice_strategy, last_choice = self.previous_choices[-1]
# Tarkime, turime vartotojo atsiliepimą, kuris mums sako, ar paskutinis pasirinkimas buvo geras ar ne
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Koreguoja strategiją, jei ankstesnis pasirinkimas buvo nepasitenkinimą keliantis
new_strategy = 'highest_quality' if last_choice_strategy == 'cheapest' else 'cheapest'
self.corrected_choices.append((new_strategy, last_choice))
return f"Reflecting on choice. Adjusting strategy to {new_strategy}."
else:
return "The choice was good. No need to adjust."
def get_user_feedback(self, hotel):
"""
Simulate user feedback based on hotel attributes.
For simplicity, assume if the hotel is too cheap, the feedback is "bad".
If the hotel has quality less than 7, feedback is "bad".
"""
if hotel['price'] < 100 or hotel['quality'] < 7:
return "bad"
return "good"
# Simuliuoja viešbučių sąrašą (kaina ir kokybė)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Sukuria agentą
agent = HotelRecommendationAgent()
# 1 žingsnis: agentas rekomenduoja viešbutį, naudodamas „pigesnės“ strategiją
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# 2 žingsnis: agentas apmąsto pasirinkimą ir prireikus koreguoja strategiją
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# 3 žingsnis: agentas vėl rekomenduoja, šį kartą naudodamas pakoreguotą strategiją
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Svarbiausia šiame pavyzdyje yra agente gebėjimas:
Tai paprasta metakognicijos forma, kai sistema gali koreguoti savo samprotavimų procesą gavus vidinį atsiliepimą.
Metakognicija yra galingas įrankis, kuris gali žymiai pagerinti DI agentų galimybes. Įtraukdami metakognicinius procesus, galite kurti protingesnius, prisitaikančius ir efektyvesnius agentus. Naudokitės papildomais ištekliais, kad toliau tyrinėtumėte įdomų metakognicijos pasaulį DI agentuose.
Prisijunkite prie Microsoft Foundry Discord, susitikite su kitais besimokančiais, dalyvaukite konsultacijose ir gaukite atsakymus į savo klausimus apie DI agentus.
Daugiagentinis dizaino modelis
Atsakomybės apribojimas: Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.