(Kliknite na obrázok vyššie pre zobrazenie videa tejto lekcie)
Metakognícia u AI agentov
Vitajte v lekcii o metakognícii u AI agentov! Táto kapitola je určená pre začiatočníkov, ktorí sa zaujímajú o to, ako môžu AI agenti premýšľať o vlastných procesoch myslenia. Na konci tejto lekcie budete rozumieť kľúčovým pojmom a budete vybavení praktickými príkladmi na aplikovanie metakognície pri návrhu AI agentov.
Po dokončení tejto lekcie budete schopní:
Metakognícia označuje kognitívne procesy vyššieho rádu, ktoré zahŕňajú premýšľanie o vlastnom myslení. Pre AI agentov to znamená schopnosť hodnotiť a upravovať svoje akcie na základe sebauvedomenia a minulých skúseností. Metakognícia, alebo „premýšľanie o premýšľaní“, je dôležitý koncept pri vývoji agentických AI systémov. Zahŕňa vedomie AI systémov o ich vlastných vnútorných procesoch a schopnosť monitorovať, regulovať a prispôsobovať svoje správanie podľa toho. Rovnako ako keď my čítame náladu miestnosti alebo sa pozeráme na problém. Toto sebauvedomenie môže AI systémom pomôcť robiť lepšie rozhodnutia, identifikovať chyby a zlepšovať ich výkon v čase – opäť odkazujúc na Turingov test a debatu o tom, či AI prevezme kontrolu.
V kontexte agentických AI systémov môže metakognícia pomôcť riešiť niekoľko výziev, ako napríklad:
Metakognícia, alebo „premýšľanie o premýšľaní“, je kognitívny proces vyššieho rádu, ktorý zahŕňa sebauvedomenie a sebareguláciu vlastných kognitívnych procesov. V oblasti AI metakognícia zmocňuje agentov, aby hodnotili a prispôsobovali svoje stratégie a akcie, čo vedie k lepším schopnostiam riešiť problémy a robiť rozhodnutia. Pochopením metakognície môžete navrhnúť AI agentov, ktorí nie sú len inteligentnejší, ale aj prispôsobivejší a efektívnejší. V pravdivej metakognícii by ste videli AI explicitne uvažujúce o svojom vlastnom uvažovaní.
Príklad: „Uprednostnil som lacnejšie lety, pretože… možno prichádzam o priame lety, tak si to skontrolujem znova.“ Sledovanie toho, ako alebo prečo zvolil určitú trasu.
Metakognícia zohráva kľúčovú úlohu pri návrhu AI agentov z niekoľkých dôvodov:

Predtým, než sa pustíme do metakognitívnych procesov, je nevyhnutné pochopiť základné komponenty AI agenta. AI agent zvyčajne pozostáva z:
Tieto komponenty spolupracujú na vytvorení „jednotky odbornosti“, ktorá vie vykonávať konkrétne úlohy.
Príklad: Predstavte si cestovného agenta, ktorý nielen plánuje vašu dovolenku, ale tiež upravuje svoju trasu na základe dát v reálnom čase a minulých skúseností zákazníkov.
Predstavte si, že navrhujete cestovnú agentúru poháňanú AI. Tento agent „Travel Agent“ pomáha používateľom plánovať dovolenky. Na začlenenie metakognície potrebuje Travel Agent hodnotiť a upravovať svoje akcie na základe sebauvedomenia a minulých skúseností. Tu je, ako by mohla metakognícia hrať rolu:
Aktuálnou úlohou je pomôcť používateľovi naplánovať výlet do Paríža.
Travel Agent využíva metakogníciu na hodnotenie svojho výkonu a učenie sa z minulých skúseností. Napríklad:
Tu je zjednodušený príklad kódu Travel Agent, ktorý integruje metakogníciu:
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):
# Vyhľadať lety, hotely a atrakcie podľa preferencií
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)
# Analyzovať spätnú väzbu a upraviť budúce odporúčania
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Príklad použitia
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)
Vďaka integrácii metakognície môže Travel Agent poskytovať personalizovanejšie a presnejšie cestovné odporúčania, čím zlepšuje celkový používateľský zážitok.
Plánovanie je kľúčovou zložkou správania AI agenta. Zahŕňa načrtnutie krokov potrebných na dosiahnutie cieľa, pričom zohľadňuje aktuálny stav, zdroje a možné prekážky.
Príklad: Tu sú kroky, ktoré musí Travel Agent urobiť, aby efektívne pomohol používateľovi s plánovaním výletu:
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)
# Príklad použitia v rámci požiadavky na booing
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)
Najprv si poďme vysvetliť rozdiel medzi RAG nástrojom a prednostným načítaním kontextu.

RAG kombinuje vyhľadávací systém s generatívnym modelom. Keď je zadaný dotaz, vyhľadávací systém získava relevantné dokumenty alebo údaje z vonkajšieho zdroja a tieto získané informácie slúžia na doplnenie vstupu do generatívneho modelu. To pomáha modelu generovať presnejšie a kontextovo relevantné odpovede.
V RAG systéme agent získava relevantné informácie z databázy znalostí a používa ich na generovanie vhodných odpovedí alebo akcií.
Korekčný RAG prístup sa zameriava na využitie techník RAG na korekciu chýb a zlepšenie presnosti AI agentov. Zahŕňa to:
Predstavte si agenta na vyhľadávanie, ktorý získava informácie z internetu, aby odpovedal na používateľské dotazy. Korekčný RAG prístup môže zahŕňať:
Korekčný RAG (Retrieval-Augmented Generation) zvyšuje schopnosť AI získavať a generovať informácie pri súčasnej korekcii akýchkoľvek nepresností. Pozrime sa, ako môže Travel Agent použiť korekčný RAG prístup na poskytovanie presnejších a relevantnejších cestovných odporúčaní.
To zahŕňa:
Príklad:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Príklad:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Príklad:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Príklad:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Príklad:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Príklad:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Príklad:
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)
Tu je zjednodušený príklad Python kódu začleňujúceho korekčný RAG prístup v Travel Agentovi:
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
# Príklad použitia
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)
Pre-emptívne načítanie kontextu znamená načítanie relevantného kontextu alebo základných informácií do modelu pred spracovaním dotazu. To znamená, že model má prístup k týmto informáciám od začiatku, čo mu umožňuje vytvárať informovanejšie odpovede bez potreby získavania ďalších údajov počas procesu.
Tu je zjednodušený príklad, ako by mohlo vyzerať pre-emptívne načítanie kontextu pre aplikáciu cestovného agenta v Pythone:
class TravelAgent:
def __init__(self):
# Prednačítanie populárnych destinácií a ich informácií
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):
# Získavanie informácií o destinácii z prednačítaného kontextu
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}."
# Príklad použitia
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Inicializácia (__init__ metóda): Trieda TravelAgent prednačíta slovník obsahujúci informácie o populárnych destináciách ako Paríž, Tokio, New York a Sydney. Tento slovník zahŕňa podrobnosti ako krajina, mena, jazyk a hlavné atrakcie pre každú destináciu.
Získavanie informácií (get_destination_info metóda): Keď používateľ položí otázku o určitej destinácii, metóda get_destination_info vyhľadá relevantné informácie zo slovníka prednačítaného kontextu.
Vďaka prednačítanému kontextu môže aplikácia cestovného agenta rýchlo odpovedať na používateľské otázky bez nutnosti získavania informácií z externých zdrojov v reálnom čase. To robí aplikáciu efektívnejšou a responzívnejšou.
Bootstrapping plánu s cieľom znamená začať s jasným cieľom alebo požadovaným výsledkom na mysli. Definovaním tohto cieľa vopred môže model použiť tento cieľ ako vodítko počas celého iteratívneho procesu. To pomáha zabezpečiť, že každá iterácia sa priblíži k dosiahnutiu požadovaného výsledku, čím sa proces stáva efektívnejším a sústredenejším.
Tu je príklad, ako by ste mohli pripraviť cestovný plán s cieľom pred iteráciou pre cestovného agenta v Pythone:
Cestovný agent chce naplánovať prispôsobenú dovolenku pre klienta. Cieľom je vytvoriť cestovný itinerár, ktorý maximalizuje spokojnosť klienta na základe jeho preferencií a rozpočtu.
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']
# Príklad použitia
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)
Inicializácia (__init__ metóda): Trieda TravelAgent je inicializovaná so zoznamom potenciálnych destinácií, každá so svojimi atribútmi ako názov, cena a typ aktivity.
Bootstrapping plánu (bootstrap_plan metóda): Táto metóda vytvára počiatočný cestovný plán na základe preferencií klienta a rozpočtu. Prechádza zoznam destinácií a pridáva ich do plánu, ak zodpovedajú preferenciám klienta a sú v rámci rozpočtu.
Zladenie preferencií (match_preferences metóda): Táto metóda overuje, či destinácia zodpovedá preferenciám klienta.
Iterovanie plánu (iterate_plan metóda): Metóda vylepšuje počiatočný plán tým, že sa snaží nahradiť každú destináciu v pláne lepšou alternatívou, berúc do úvahy preferencie klienta a rozpočtové obmedzenia.
Výpočet nákladov (calculate_cost metóda): Metóda vypočíta celkové náklady aktuálneho plánu vrátane potenciálnej novej destinácie.
Vďaka bootstrappingu plánu s jasným cieľom (napr. maximalizácia spokojnosti klienta) a iteratívnemu doladeniu môže cestovný agent vytvoriť prispôsobený a optimalizovaný cestovný itinerár pre klienta. Tento prístup zabezpečuje, že plán zodpovedá klientovým preferenciám a rozpočtu od začiatku a s každou iteráciou sa zlepšuje.
Veľké jazykové modely (LLM) môžu byť použité na re-poradie a hodnotenie tým, že vyhodnocujú relevantnosť a kvalitu získaných dokumentov alebo generovaných odpovedí. Takto to funguje:
Získavanie: Počiatočný krok načíta sadu kandidátskych dokumentov alebo odpovedí na základe dotazu.
Re-poradie: LLM vyhodnotí tieto kandidátov a re-zoradí ich podľa relevantnosti a kvality. Tento krok zabezpečuje, že na prvom mieste sa zobrazia najvhodnejšie a najkvalitnejšie informácie.
Hodnotenie: LLM priraďuje skóre každému kandidátovi, ktoré odráža ich relevantnosť a kvalitu. To pomáha vybrať najlepšiu odpoveď alebo dokument pre používateľa.
Využitím LLM na re-poradie a hodnotenie môže systém poskytovať presnejšie a kontextovo relevantnejšie informácie, čím sa zlepší celková používateľská skúsenosť.
Tu je príklad, ako by cestovný agent mohol použiť veľký jazykový model (LLM) na re-poradie a hodnotenie destinácií na základe preferencií používateľa v Pythone:
Cestovný agent chce odporučiť najlepšie cestovné destinácie klientovi na základe jeho preferencií. LLM pomôže re-zoradiť a ohodnotiť destinácie tak, aby boli prezentované tie najrelevantnejšie možnosti.
Tu je ukážka, ako môžete aktualizovať predchádzajúci príklad pre použitie služieb Azure OpenAI:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Vygenerovať prompt pre Azure OpenAI
prompt = self.generate_prompt(preferences)
# Definovať hlavičky a obsah požiadavky
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Zavolať Azure OpenAI API na získanie pretriedených a ohodnotených destinácií
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extrahovať a vrátiť odporúčania
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
# Príklad použitia
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)
Inicializácia: Trieda TravelAgent je inicializovaná so zoznamom potenciálnych cestovných destinácií, každá s atribútmi ako názov a popis.
Získavanie odporúčaní (get_recommendations metóda): Táto metóda generuje prompt pre službu Azure OpenAI na základe používateľských preferencií a vykoná HTTP POST požiadavku na Azure OpenAI API, aby získala re-zoradené a ohodnotené destinácie.
Generovanie promptu (generate_prompt metóda): Metóda konštruuje prompt pre Azure OpenAI, ktorý obsahuje používateľove preferencie a zoznam destinácií. Prompt navádza model, aby re-zoradil a ohodnotil destinácie podľa zadaných preferencií.
API volanie: Knižnica requests sa používa na vykonanie HTTP POST požiadavky na endpoint Azure OpenAI API. Odpoveď obsahuje re-zoradené a ohodnotené destinácie.
Príklad použitia: Cestovný agent získa používateľské preferencie (napr. záujem o turistiku a rozmanitú kultúru) a použije službu Azure OpenAI na získanie re-zoradených a ohodnotených odporúčaní pre cestovné destinácie.
Nezabudnite nahradiť your_azure_openai_api_key vaším skutočným Azure OpenAI API kľúčom a https://your-endpoint.com/... skutočnou URL adresou vášho Azure OpenAI nasadenia.
Vďaka využitiu LLM na re-poradie a hodnotenie môže cestovný agent poskytnúť prispôsobenejšie a relevantnejšie cestovné odporúčania klientom, čím sa zlepší ich celková skúsenosť.
Retrieval-Augmented Generation (RAG) môže byť použitý ako technika promptovania aj ako nástroj vo vývoji AI agentov. Pochopenie rozdielu medzi týmito dvoma prístupmi vám môže pomôcť efektívnejšie využiť RAG vo vašich projektoch.
Čo to je?
Ako to funguje:
Príklad v cestovnom agentovi:
Čo to je?
Ako to funguje:
Príklad v cestovnom agentovi:
| Aspekt | Technika promptovania | Nástroj |
|---|---|---|
| Manuálne vs Automatické | Manuálne formulovanie promptov pre každý dotaz | Automatizovaný proces získavania a generovania |
| Kontrola | Väčšia kontrola nad procesom získavania | Zjednodušuje a automatizuje získavanie a generovanie |
| Flexibilita | Umožňuje prispôsobené prompty podľa konkrétnych potrieb | Efektívnejšie pre veľkosériové implementácie |
| Zložitosť | Vyžaduje tvorbu a ladnenie promptov | Ľahšie sa integruje do architektúry AI agenta |
Príklad techniky promptovania:
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)
Príklad nástroja:
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)
Hodnotenie relevantnosti je kľúčovým aspektom výkonnosti AI agenta. Zabezpečuje, že informácie získané a generované agentom sú vhodné, presné a užitočné pre používateľa. Pozrime sa, ako hodnotiť relevantnosť v AI agentoch vrátane praktických príkladov a techník.
Príklad:
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
Príklad:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Vrátiť top 10 relevantných položiek
Príklad:
def process_query(query):
# Použite NLP na extrahovanie kľúčových informácií z dotazu používateľa
processed_query = nlp(query)
return processed_query
Príklad:
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
Tu je praktický príklad, ako môže Travel Agent hodnotiť relevantnosť cestovných odporúčaní:
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] # Vrátiť top 10 relevantných položiek
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
# Príklad použitia
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)
Vyhľadávanie s úmyslom zahŕňa pochopenie a interpretáciu skrytého účelu alebo cieľa za používateľovým dotazom, aby sa získali a generovali čo najrelevantnejšie a najužitočnejšie informácie. Tento prístup prekračuje jednoduché zhodovanie kľúčových slov a sústreďuje sa na pochopenie skutočných potrieb a kontextu používateľa.
Pozrime sa na Travel Agent ako príklad realizácie vyhľadávania s úmyslom.
Zber používateľských preferencií
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Pochopenie úmyslu používateľa
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"
def analyze_context(query, user_history):
# Skombinujte aktuálny dotaz s históriou používateľa na pochopenie kontextu
context = {
"current_query": query,
"user_history": user_history
}
return context
Vyhľadávanie a personalizácia výsledkov
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):
# Príklad vyhľadávacej logiky pre informatívny zámer
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Príklad vyhľadávacej logiky pre navigačný zámer
results = search_web(query)
return results
def search_transaction(query, preferences):
# Príklad vyhľadávacej logiky pre transakčný zámer
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Príklad personalizačnej logiky
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Vrátiť top 10 personalizovaných výsledkov
Príklad použitia
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)
Agent generujúci kód používa modely AI na písanie a vykonávanie kódu, rieši zložité problémy a automatizuje úlohy.
Agenti generujúci kód používajú generatívne AI modely na písanie a vykonávanie kódu. Títo agenti môžu riešiť zložité problémy, automatizovať úlohy a poskytovať cenné poznatky generovaním a spúšťaním kódu v rôznych programovacích jazykoch.
Predstavte si, že navrhujete agenta generujúceho kód. Takto by mohol fungovať:
V tomto príklade navrhneme agenta generujúceho kód, Cestovný agent, ktorý pomáha používateľom plánovať svoje cesty generovaním a vykonávaním kódu. Tento agent zvládne úlohy ako získavanie možností cestovania, filtrovanie výsledkov a zostavenie itinerára pomocou generatívnej AI.
Zber preferencií používateľa
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generovanie kódu na zber dát
def generate_code_to_fetch_data(preferences):
# Príklad: Vygenerujte kód na vyhľadávanie letov na základe preferencií používateľa
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):
# Príklad: Vygenerujte kód na vyhľadávanie hotelov
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Vykonanie vygenerovaného kódu
def execute_code(code):
# Spustiť vygenerovaný kód pomocou 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)
Generovanie itinerára
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)
Úpravy na základe spätnej väzby
def adjust_based_on_feedback(feedback, preferences):
# Upravte nastavenia na základe spätnej väzby používateľa
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)
# Znovu vygenerujte a spustite kód s aktualizovanými nastaveniami
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)
Na základe schémy tabuľky možno skutočne vylepšiť proces generovania dopytov využitím povedomia o prostredí a uvažovania.
Tu je príklad, ako sa to dá realizovať:
Tu je aktualizovaný príklad Python kódu, ktorý zahŕňa tieto koncepty:
def adjust_based_on_feedback(feedback, preferences, schema):
# Upravte preferencie na základe spätnej väzby používateľa
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Odôvodnenie na základe schémy na úpravu ďalších súvisiacich preferencií
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):
# Vlastná logika na úpravu preferencií na základe schémy a spätnej väzby
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):
# Vytvorte kód na získanie údajov o letoch na základe aktualizovaných preferencií
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Vytvorte kód na získanie údajov o hoteloch na základe aktualizovaných preferencií
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulujte vykonanie kódu a vráťte simulované údaje
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Vygenerujte itinerár na základe letov, hotelov a atrakcií
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Príklad schémy
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Príklad použitia
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Znovu vygenerujte a vykonajte kód s aktualizovanými preferenciami
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 definuje, ako by sa mali upraviť preferencie na základe spätnej väzby. Zahrňuje polia ako favorites a avoid s príslušnými úpravami.adjust_based_on_feedback): Táto metóda upravuje preferencie podľa spätnej väzby používateľa a schémy.adjust_based_on_environment): Táto metóda prispôsobuje úpravy podľa schémy a spätnej väzby.Vďaka environmentálnemu povedomiu a uvažovaniu založenému na schéme vie systém generovať presnejšie a relevantnejšie dopyty, čo vedie k lepším odporúčaniam na cestovanie a personalizovanejšiemu užívateľskému zážitku.
SQL (Structured Query Language) je silný nástroj na interakciu s databázami. Keď sa používa ako súčasť prístupu Retrieval-Augmented Generation (RAG), SQL môže získavať relevantné dáta z databáz na informovanie a generovanie odpovedí alebo akcií v AI agentoch. Pozrime sa, ako môže byť SQL použité ako RAG technika v kontexte Cestovného agenta.
Príklad: Agent na analýzu dát:
Zber preferencií používateľa
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generovanie SQL dotazov
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
Vykonanie SQL dotazov
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
Generovanie odporúčaní
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)
Dotaz na lety
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Dotaz na hotely
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Dotaz na atrakcie
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Využitím SQL ako súčasti techniky Retrieval-Augmented Generation (RAG) môžu AI agenti ako Cestovný agent dynamicky získavať a využívať relevantné dáta na poskytovanie presných a personalizovaných odporúčaní.
Ak chceme demonštrovať implementáciu metakognície, vytvorme jednoduchého agenta, ktorý reflektuje nad svojim rozhodovacím procesom pri riešení problému. V tomto príklade postavíme systém, kde agent optimalizuje výber hotela, ale potom hodnotí svoje uvažovanie a upravuje stratégiu, keď urobí chyby alebo suboptimálne rozhodnutia.
Simulujeme to na jednoduchom príklade, kde agent vyberá hotely na základe kombinácie ceny a kvality, no „reflektuje“ svoje rozhodnutia a podľa toho sa prispôsobuje.
Tu je príklad:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Ukladá predtým vybrané hotely
self.corrected_choices = [] # Ukladá opravené výbery
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Dostupné stratégie
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]
# Predpokladajme, že máme spätnú väzbu od používateľa, ktorá nám hovorí, či bola posledná voľba dobrá alebo nie
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Uprav stratégiu, ak bola predchádzajúca voľba neuspokojivá
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"
# Simuluj zoznam hotelov (cena a kvalita)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Vytvor agenta
agent = HotelRecommendationAgent()
# Krok 1: Agent odporučí hotel pomocou stratégie "najlacnejší"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Krok 2: Agent zváži voľbu a podľa potreby upraví stratégiu
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Krok 3: Agent opäť odporučí, tentokrát použitím upravenej stratégie
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Kľúčové je schopnosť agenta:
Ide o jednoduchú formu metakognície, kde systém dokáže upraviť svoj uvažovací proces podľa internej spätnej väzby.
Metakognícia je silný nástroj, ktorý môže významne zvýšiť schopnosti AI agentov. Včlenením metakognitívnych procesov môžete navrhovať agentov, ktorí sú inteligentnejší, prispôsobivejší a efektívnejší. Využite doplnkové zdroje na ďalšie skúmanie fascinujúceho sveta metakognície v AI agentoch.
Pridajte sa k Microsoft Foundry Discord, aby ste sa stretli s ďalšími študentmi, zúčastnili sa konzultačných hodín a získali odpovede na svoje otázky týkajúce sa AI agentov.
Multi-agentný vzor navrhovania
Vyhlásenie o zodpovednosti:
Tento dokument bol preložený pomocou AI prekladateľskej služby Co-op Translator. Aj keď sa snažíme o presnosť, vezmite prosím na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Originálny dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne výklady vyplývajúce z používania tohto prekladu.