(Kliknite na obrázok vyššie pre zobrazenie videa tejto lekcie)
Metakognícia v AI agentoch
Vitajte v lekcii o metakognícii v AI agentoch! 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 porozumiete kľúčovým konceptom a budete vybavení praktickými príkladmi na aplikáciu metakognície v dizajne AI agentov.
Po absolvovaní tejto lekcie budete schopní:
Metakognícia sa vzťahuje na vyššie poradie kognitívnych procesov, ktoré zahŕňajú premýšľanie o vlastnom myslení. Pre AI agentov to znamená schopnosť vyhodnotiť a upraviť svoje konanie na základe seba-vedomia a minulých skúseností. Metakognícia, alebo „premýšľanie o myslení“, je dôležitý koncept vo vývoji agentných AI systémov. Zahŕňa AI systémy, ktoré si uvedomujú svoje vlastné vnútorné procesy a sú schopné monitorovať, regulovať a prispôsobovať svoje správanie podľa toho. Podobne ako keď my vyhodnocujeme situáciu alebo riešime problém. Toto sebauvedomenie môže pomôcť AI systémom robiť lepšie rozhodnutia, identifikovať chyby a zlepšovať svoj výkon v priebehu času – opäť sa odkazujúce na Turingov test a diskusiu o tom, či AI prevezme kontrolu.
V kontexte agentných AI systémov môže metakognícia pomôcť riešiť niekoľko výziev, ako sú:
Metakognícia, alebo „premýšľanie o myslení“, je vyšší kognitívny proces, ktorý zahŕňa sebauvedomenie a samoreguláciu vlastných kognitívnych procesov. V oblasti AI umožňuje metakognícia agentom vyhodnocovať a prispôsobovať svoje stratégie a činnosti, čo vedie k lepším schopnostiam riešenia problémov a rozhodovania. Pochopením metakognície môžete navrhovať AI agentov, ktorí nie sú len inteligentnejší, ale aj adaptabilnejší a efektívnejší. Pri skutočnej metakognícii by ste videli, ako AI explicitne uvažuje o svojom vlastnom uvažovaní.
Príklad: „Uprednostnil som lacnejšie lety, pretože… Môžem prehliadať priame lety, takže si to znova skontrolujem.“. Sledovanie, ako alebo prečo si vybral určitú trasu.
Metakognícia zohráva kľúčovú úlohu v dizajne 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 obvykle pozostáva z:
Tieto komponenty spolupracujú na vytvorenie „jednotky odbornosti“, ktorá môže vykonávať konkrétne úlohy.
Príklad: Predstavte si cestovného agenta, ktorý nielen plánuje vašu dovolenku, ale aj prispôsobuje trasu na základe údajov v reálnom čase a skúseností z predchádzajúcich zákazníckych ciest.
Predstavte si, že navrhujete službu cestovného agenta poháňanú AI. Tento agent, „Cestovný agent“, pomáha používateľom plánovať dovolenky. Aby ste začlenili metakogníciu, Cestovný agent potrebuje vyhodnocovať a upravovať svoje akcie na základe sebauvedomenia a minulých skúseností. Tu je, ako by metakognícia mohla hrať úlohu:
Aktuálnou úlohou je pomôcť používateľovi naplánovať cestu do Paríža.
Cestovný agent používa metakogníciu na vyhodnocovanie svojho výkonu a učenie sa z minulých skúseností. Napríklad:
Tu je zjednodušený príklad kódu Cestovného agenta, ktorý zahŕňa 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ľadávanie letov, hotelov a atrakcií na základe 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)
Začlenením metakognície môže Cestovný agent poskytovať personalizovanejšie a presnejšie cestovné odporúčania, čím zlepšuje celkový používateľský zážitok.
Plánovanie je kľúčovou súčasťou správania AI agenta. Zahŕňa načrtnutie krokov potrebných na dosiahnutie cieľa, zohľadňujúc aktuálny stav, zdroje a možné prekážky.
Príklad: Tu sú kroky, ktoré musí Cestovný agent vykonať, aby účinne pomohol používateľovi plánovať jeho cestu:
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 bookovanie
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)
Najskôr si poďme vysvetliť rozdiel medzi RAG nástrojom a preemptívnym načítaním kontextu.

RAG kombinuje systém vyhľadávania s generatívnym modelom. Keď je zadaný dopyt, vyhľadávací systém získava relevantné dokumenty alebo dáta z externého zdroja a tieto získané informácie sa používajú na rozšírenie vstupu generatívneho modelu. To pomáha modelu vytvárať presnejšie a kontextovo relevantnejšie 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í.
Korektívny RAG prístup sa zameriava na použitie RAG techník na opravu chýb a zlepšenie presnosti AI agentov. To zahŕňa:
Predstavte si agenta na vyhľadávanie, ktorý získava informácie z webu na odpovedanie na otázky používateľov. Korektívny RAG prístup by mohol zahŕňať:
Korektívny RAG (Retrieval-Augmented Generation) zvyšuje schopnosť AI získavať a generovať informácie, pričom opravuje akékoľvek nepresnosti. Pozrime sa, ako môže Cestovný agent využiť korektívny 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 kódu v Pythone, ktorý zahrňuje korektívny RAG prístup v Cestovnom 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 zahŕňa 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 môže pomôcť generovať lepšie informované 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 cestovnej kancelárie v Pythone:
class TravelAgent:
def __init__(self):
# Prednačítanie obľúbených 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ískanie 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 (metóda __init__): Trieda TravelAgent prednačítava slovník obsahujúci informácie o populárnych destináciách, ako sú Paríž, Tokio, New York a Sydney. Tento slovník zahŕňa detaily ako krajina, mena, jazyk a hlavné atrakcie každej destinácie.
Získavanie informácií (metóda get_destination_info): Keď používateľ položí otázku o konkrétnej destinácii, metóda get_destination_info načíta relevantné informácie zo prednačítaného slovníka kontextu.
Prednačítavaním kontextu môže aplikácia cestovnej kancelárie rýchlo odpovedať na používateľské otázky bez nutnosti v reálnom čase získavať tieto informácie z externého zdroja. Toto robí aplikáciu efektívnejšou a responzívnejšou.
Inicializácia plánu s cieľom znamená začať s jasným cieľom alebo želaným výsledkom na mysli. Definovaním tohto cieľa od začiatku môže model používať tento cieľ ako vodítko počas celého iteratívneho procesu. Pomáha to zabezpečiť, že každá iterácia sa približuje k dosiahnutiu požadovaného výsledku, čím sa proces stáva efektívnejším a zameraným.
Tu je príklad, ako môžete inicializovať cestovný plán s cieľom pred iteráciou pre cestovnú kanceláriu v Pythone:
Cestovná kancelária chce naplánovať zákaznícku dovolenku na mieru. 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 (metóda __init__): Trieda TravelAgent je inicializovaná s zoznamom potenciálnych destinácií, z ktorých každá má atribúty ako názov, cena a typ aktivity.
Inicializácia plánu (metóda bootstrap_plan): Táto metóda vytvorí počiatočný cestovný plán na základe preferencií a rozpočtu klienta. Prechádza zoznam destinácií a pridáva ich do plánu, ak zodpovedajú preferenciám klienta a zmestia sa do rozpočtu.
Zhodnotenie preferencií (metóda match_preferences): Táto metóda kontroluje, či destinácia zodpovedá preferenciám klienta.
Iterácia plánu (metóda iterate_plan): Táto metóda zdokonaľuje počiatočný plán tým, že sa snaží nahradiť každú destináciu v pláne lepšou voľbou, zohľadňujúc preferencie klienta a rozpočtové obmedzenia.
Výpočet ceny (metóda calculate_cost): Táto metóda vypočíta celkové náklady aktuálneho plánu vrátane potenciálnej novej destinácie.
Inicializáciou plánu s jasným cieľom (napr. maximalizovať spokojnosť klienta) a iteráciou na jeho zdokonalenie môže cestovná kancelária vytvoriť prispôsobený a optimalizovaný cestovný itinerár pre klienta. Tento prístup zabezpečuje, že cestovný plán od začiatku zodpovedá preferenciám a rozpočtu klienta a postupne sa zlepšuje.
Veľké jazykové modely (LLM) je možné použiť na pretriedenie a skórovanie vyhľadaných dokumentov alebo generovaných odpovedí hodnotením ich relevantnosti a kvality. Funguje to takto:
Vyhľadávanie: Počiatočný krok vyhľadávania získa sadu kandidátskych dokumentov alebo odpovedí na základe dotazu.
Pretriedenie: LLM vyhodnotí týchto kandidátov a usporiada ich podľa relevantnosti a kvality. Tento krok zabezpečuje, že na začiatku sú prezentované najrelevantnejšie a najkvalitnejšie informácie.
Skórovanie: LLM pridá každému kandidátovi skóre, ktoré odráža jeho relevantnosť a kvalitu. To pomáha vybrať najlepšiu odpoveď alebo dokument pre používateľa.
Využitím LLM na pretriedenie a skórovanie môže systém poskytovať presnejšie a kontextovo relevantné informácie, čím zlepšuje celkový používateľský zážitok.
Tu je príklad, ako by cestovná kancelária mohla použiť veľký jazykový model (LLM) na pretriedenie a skórovanie cestovných destinácií na základe preferencií používateľa v Pythone:
Cestovná kancelária chce klientovi odporučiť najlepšie cestovné destinácie na základe jeho preferencií. LLM pomôže pretriediť a skórovať destinácie tak, aby sa prezentovali tie najrelevantnejšie možnosti.
Tu je návod, ako môžete aktualizovať predošlý príklad na použitie Azure OpenAI služieb:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Vygenerujte prompt pre Azure OpenAI
prompt = self.generate_prompt(preferences)
# Definujte 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
}
# Zavolajte Azure OpenAI API, aby ste získali opätovne zoradené a ohodnotené destinácie
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extrahujte a vráťte 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í, z ktorých každá má atribúty ako názov a popis.
Získavanie odporúčaní (metóda get_recommendations): Táto metóda generuje prompt pre službu Azure OpenAI na základe preferencií používateľa a vykonáva HTTP POST požiadavku na API Azure OpenAI, aby získala pretriedené a skórované destinácie.
Generovanie promptu (metóda generate_prompt): Táto metóda vytvára prompt pre Azure OpenAI, vrátane používateľských preferencií a zoznamu destinácií. Prompt vedie model k pretriedeniu a skórovaniu destinácií na základe poskytnutých preferencií.
Volanie API: Na vykonanie HTTP POST požiadavky na endpoint Azure OpenAI API sa používa knižnica requests. Odpoveď obsahuje pretriedené a skórované destinácie.
Príklad použitia: Cestovná kancelária zhromažďuje používateľské preferencie (napr. záujem o poznávanie pamiatok a rôznorodú kultúru) a používa službu Azure OpenAI, aby získala pretriedené a skórované odporúčania cestovných destinácií.
Nezabudnite nahradiť your_azure_openai_api_key vaším skutočným API kľúčom Azure OpenAI a https://your-endpoint.com/... skutočnou URL adresou endpointu vašej Azure OpenAI implementácie.
Využitím LLM na pretriedenie a skórovanie môže cestovná kancelária poskytnúť osobnejšie a relevantnejšie cestovné odporúčania klientom, čím zlepší ich celkový zážitok.
Retrieval-Augmented Generation (RAG) môže byť zároveň technikou promptovania aj nástrojom pri vývoji AI agentov. Pochopenie rozdielu medzi nimi vám pomôže efektívnejšie využiť RAG vo vašich projektoch.
Čo to je?
Ako to funguje:
Príklad v cestovnej kancelárii:
Čo to je?
Ako to funguje:
Príklad v cestovnej kancelárii:
| Aspekt | Technika promptovania | Nástroj |
|---|---|---|
| Manuálne vs Automatické | Manuálna tvorba promptov pre každý dotaz. | Automatizovaný proces vyhľadávania a generovania. |
| Kontrola | Ponúka väčšiu kontrolu nad procesom vyhľadávania. | Zjednodušuje a automatizuje vyhľadávanie a generovanie. |
| Flexibilita | Umožňuje prispôsobené prompty podľa špecifických potrieb. | Efektívnejšie pre veľkoskalové implementácie. |
| Komplexnosť | Vyžaduje tvorbu a ladenie promptov. | Jednoduchšie na integráciu v rámci 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ý aspekt 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 cestovná kancelária 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)
Hľadanie s úmyslom znamená pochopenie a interpretáciu skrytého cieľa alebo zámeru za používateľovým dotazom s cieľom získať a generovať tie najrelevantnejšie a najpraktickejšie informácie. Tento prístup ide ďalej než len jednoduché vyhľadávanie kľúčových slov a zameriava sa na pochopenie skutočných potrieb a kontextu používateľa.
Pozrime sa na príklad cestovnej kancelárie, ako môže byť hľadanie s úmyslom implementované.
Zhromažďovanie 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"
Povedomie o kontexte
def analyze_context(query, user_history):
# Skombinujte aktuálny dopyt s históriou používateľa, aby ste porozumeli 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 informačný 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)
Agentmi generátora kódu sú modely AI, ktoré píšu a vykonávajú kód na riešenie zložitých problémov a automatizáciu úloh.
Agentmi generátora kódu 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ť hodnotné poznatky generovaním a spúšťaním kódu v rôznych programovacích jazykoch.
Predstavte si, že navrhujete agenta generátora kódu. Tu je, ako by mohol fungovať:
V tomto príklade navrhneme agenta generátora kódu, Cestovnú kanceláriu, ktorý pomáha užívateľom plánovať ich cestovanie generovaním a vykonávaním kódu. Tento agent dokáže riešiť úlohy, ako je získavanie možností cestovania, filtrovanie výsledkov a zostavovanie itinerára pomocou generatívnej AI.
Zbieranie preferencií užívateľa
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generovanie kódu na získavanie dát
def generate_code_to_fetch_data(preferences):
# Príklad: Vygenerujte kód na vyhľadávanie letov podľa používateľských preferencií
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
Vykonávanie generovaného kódu
def execute_code(code):
# Spustite 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 preferencie na základe spätnej väzby od 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 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, attractions)
print("Updated Itinerary:", updated_itinerary)
Založenie na schéme tabuľky môže skutočne zlepšiť proces generovania dotazov využitím environmentálneho povedomia a uvažovania.
Tu je príklad, ako sa to dá urobiť:
Tu je aktualizovaný príklad kódu v Pythone, ktorý tieto koncepty začleňuje:
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 založené na schéme 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):
# Vygenerujte 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):
# Vygenerujte 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 skúšobné ú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 preferencie upravovať na základe spätnej väzby. Obsahuje polia ako favorites a avoid s príslušnými úpravami.adjust_based_on_feedback): Táto metóda upravuje preferencie na základe spätnej väzby užívateľa a schémy.adjust_based_on_environment): Táto metóda prispôsobuje úpravy na základe schémy a spätnej väzby.Tým, že je systém vedomý prostredia a uvažuje na základe schémy, môže generovať presnejšie a relevantnejšie dotazy, čo vedie k lepším odporúčaniam pre cestovanie a personalizovanejšiemu užívateľskému zážitku.
SQL (Structurovaný dotazovací jazyk) je mocný nástroj na interakciu s databázami. Keď sa používa ako súčasť prístupu Retrieval-Augmented Generation (RAG), SQL dokáže získať relevantné dáta z databáz na informovanie a generovanie odpovedí alebo činností v AI agentoch. Preskúmajme, ako môže byť SQL použité ako technika RAG v kontexte Cestovnej kancelárie.
Príklad: Agent na analýzu dát:
Zbieranie preferencií uží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
Vykonávanie 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 let
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Dotaz na hotel
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Dotaz na atrakciu
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á kancelária dynamicky získavať a využívať relevantné dáta na poskytovanie presných a personalizovaných odporúčaní.
Aby sme demonštrovali implementáciu metakognície, vytvorme jednoduchého agenta, ktorý reflektuje svoj proces rozhodovania počas riešenia problému. V tomto príklade postavíme systém, kde agent sa snaží optimalizovať výber hotela, no následne vyhodnocuje svoje odôvodnenie a upravuje stratégiu, keď robí chyby alebo neoptimálne výbery.
Tento proces nasimulujeme na jednoduchom príklade, kde agent vyberá hotely na základe kombinácie ceny a kvality, no bude „reflektovať“ svoje rozhodnutia a podľa toho sa upraví.
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 povedz, či posledný výber bol dobrý alebo nie
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Upravte stratégiu, ak bol predchádzajúci výber 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"
# Simulujte 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}
]
# Vytvorte agenta
agent = HotelRecommendationAgent()
# Krok 1: Agent odporúča hotel pomocou stratégie „najlacnejší“
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Krok 2: Agent reflektuje na výber a podľa potreby upraví stratégiu
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Krok 3: Agent opäť odporúča, tentoraz s 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, že agent dokáže:
Toto je jednoduchá forma metakognície, kde systém vie upravovať svoj uvažovací proces na základe vnútorných spätných väzieb.
Metakognícia je mocný nástroj, ktorý môže výrazne zlepšiť schopnosti AI agentov. Začlenením metakognitívnych procesov môžete navrhnúť agentov, ktorí sú inteligentnejší, prispôsobivejší a efektívnejší. Použite ďalšie zdroje na hlbšie preskúmanie fascinujúceho sveta metakognície v AI agentoch.
Pridajte sa do Microsoft Foundry Discord a stretnite sa s ďalšími študentmi, zúčastnite sa konzultačných hodín a získajte odpovede na vaše otázky týkajúce sa AI agentov.
Vyhlásenie o zodpovednosti: Tento dokument bol preložený pomocou AI prekladateľskej služby Co-op Translator. Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom 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 žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.