(Kliknite na obrázok vyššie, aby ste si pozreli video k tejto lekcii)
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 svojich vlastných myšlienkových procesoch. Na konci tejto lekcie pochopíte kľúčové koncepty a získate praktické príklady, ako aplikovať metakogníciu pri návrhu AI agentov.
Po absolvovaní tejto lekcie budete schopní:
Metakognícia sa týka vyšších kognitívnych procesov, ktoré zahŕňajú premýšľanie o vlastnom myslení. Pre AI agentov to znamená schopnosť hodnotiť a upravovať svoje činnosti na základe sebauvedomenia a minulých skúseností. Metakognícia, alebo „myslenie o myslení“, je dôležitý koncept pri vývoji agentických AI systémov. Zahŕňa to, že AI systémy si uvedomujú svoje vlastné vnútorné procesy a dokážu monitorovať, regulovať a prispôsobovať svoje správanie. Podobne ako my, keď „čítame miestnosť“ alebo analyzujeme 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 vraciame k Turingovmu testu a debate 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 „myslenie o myslení“, je vyšší kognitívny proces, ktorý zahŕňa sebauvedomenie a sebareguláciu vlastných kognitívnych procesov. V oblasti AI metakognícia umožňuje agentom hodnotiť a prispôsobovať svoje stratégie a činnosti, čo vedie k zlepšeným schopnostiam riešenia problémov a rozhodovania. Pochopením metakognície môžete navrhovať AI agentov, ktorí sú nielen inteligentnejší, ale aj prispôsobivejší a efektívnejší. Pri skutočnej metakognícii by AI explicitne uvažovala o svojom vlastnom uvažovaní.
Príklad: „Uprednostnil som lacnejšie lety, pretože… Možno mi unikajú priame lety, takže to skontrolujem znova.“ Sledovanie toho, ako alebo prečo si vybral určitú trasu.
Metakognícia zohráva kľúčovú úlohu pri návrhu AI agentov z viacerých dôvodov:
Predtým, než sa ponoríme do metakognitívnych procesov, je dôležité pochopiť základné komponenty AI agenta. AI agent sa zvyčajne skladá z:
Tieto komponenty spolupracujú na vytvorení „jednotky odbornosti“, ktorá dokáže vykonávať špecifické úlohy.
Príklad: Predstavte si cestovného agenta, ktorý nielen plánuje vašu dovolenku, ale aj upravuje svoju trasu na základe údajov v reálnom čase a minulých skúseností zákazníkov.
Predstavte si, že navrhujete službu cestovného agenta poháňanú AI. Tento agent, „Cestovný agent“, pomáha používateľom plánovať ich dovolenky. Na začlenenie metakognície musí Cestovný agent hodnotiť a upravovať svoje činnosti na základe sebauvedomenia a minulých skúseností. Tu je, ako by mohla metakognícia zohrávať úlohu:
Aktuálnou úlohou je pomôcť používateľovi naplánovať výlet do Paríža.
Cestovný 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, ako by mohol vyzerať kód Cestovného agenta pri začlenení metakognície:
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):
# Search for flights, hotels, and attractions based on preferences
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)
# Analyze feedback and adjust future recommendations
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Example usage
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 odporúčania na cestovanie, čím zlepší 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, pričom sa zohľadňuje aktuálny stav, zdroje a možné prekážky.
Príklad: Tu sú kroky, ktoré musí Cestovný agent podniknúť, aby efektívne pomohol používateľovi naplá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)
# Example usage within a booing request
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 začnime pochopením rozdielu medzi nástrojom RAG a prediktívnym načítaním kontextu.
RAG kombinuje systém vyhľadávania s generatívnym modelom. Keď sa zadá dopyt, systém vyhľadávania načíta relevantné dokumenty alebo údaje z externého zdroja a tieto získané informácie sa použijú na doplnenie vstupu do generatívneho modelu. To pomáha modelu generovať presnejšie a kontextovo relevantné odpovede.
V systéme RAG agent načíta relevantné informácie z databázy znalostí a použije ich na generovanie vhodných odpovedí alebo činností.
Korekčný prístup RAG sa zameriava na použitie techník RAG na opravu chýb a zlepšenie presnosti AI agentov. To zahŕňa:
Zvážte agenta vyhľadávania, ktorý načítava informácie z webu na zodpovedanie otázok používateľov. Korekčný prístup RAG môže zahŕňať:
Korekčný RAG (Retrieval-Augmented Generation) zlepšuje schopnosť AI načítavať a generovať informácie pri opravovaní akýchkoľvek nepresností. Pozrime sa, ako môže Cestovný agent využiť korekčný prístup RAG na poskytovanie presnejších a relevantnejších odporúčaní na cestovanie.
To zahŕňa:
Predbežné načítanie kontextu zahŕňa načítanie relevantných informácií alebo pozadia do modelu ešte pred spracovaním dotazu. To znamená, že model má od začiatku prístup k týmto informáciám, čo mu umožňuje generovať informovanejšie odpovede bez potreby získavania ďalších údajov počas procesu.
Tu je zjednodušený príklad, ako by mohlo vyzerať predbežné načítanie kontextu pre aplikáciu cestovnej agentúry v Pythone:
class TravelAgent:
def __init__(self):
# Pre-load popular destinations and their information
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):
# Fetch destination information from pre-loaded context
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}."
# Example usage
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Inicializácia (__init__
metóda): Trieda TravelAgent
predbežne načíta 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 pre každú destináciu.
Získavanie informácií (get_destination_info
metóda): Keď sa používateľ pýta na konkrétnu destináciu, metóda get_destination_info
vyhľadá relevantné informácie z predbežne načítaného slovníka.
Predbežným načítaním kontextu môže aplikácia cestovnej agentúry rýchlo reagovať na dotazy používateľov bez potreby získavania týchto informácií z externého zdroja v reálnom čase. To robí aplikáciu efektívnejšou a pohotovejšou.
Bootstrapovanie plánu s cieľom zahŕňa začatie s jasne definovaným cieľom alebo požadovaným výsledkom. Definovaním tohto cieľa na začiatku 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 približuje k dosiahnutiu požadovaného výsledku, čím sa proces stáva efektívnejším a zameranejším.
Tu je príklad, ako by ste mohli bootstrapovať cestovný plán s cieľom pred iteráciou pre cestovnú agentúru v Pythone:
Cestovná agentúra 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']
# Example usage
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á zoznamom potenciálnych destinácií, z ktorých každá má atribúty ako názov, cena a typ aktivity.
Bootstrapovanie 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. Iteruje cez zoznam destinácií a pridáva ich do plánu, ak zodpovedajú preferenciám klienta a zmestia sa do rozpočtu.
Porovnávanie preferencií (match_preferences
metóda): Táto metóda kontroluje, či destinácia zodpovedá preferenciám klienta.
Iterovanie plánu (iterate_plan
metóda): 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 alternatívou, pričom zohľadňuje preferencie klienta a rozpočtové obmedzenia.
Výpočet nákladov (calculate_cost
metóda): Táto metóda vypočíta celkové náklady aktuálneho plánu vrátane potenciálnej novej destinácie.
Bootstrapovaním plánu s jasným cieľom (napr. maximalizácia spokojnosti klienta) a iterovaním na jeho zdokonalenie môže cestovná agentúra 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 zlepšuje sa s každou iteráciou.
Veľké jazykové modely (LLM) môžu byť použité na prehodnocovanie a skórovanie hodnotením relevantnosti a kvality získaných dokumentov alebo generovaných odpovedí. Tu je, ako to funguje:
Získavanie informácií: Počiatočný krok získavania informácií vyhľadá súbor kandidátskych dokumentov alebo odpovedí na základe dotazu.
Prehodnocovanie: LLM hodnotí týchto kandidátov a prehodnocuje ich na základe ich relevantnosti a kvality. Tento krok zabezpečuje, že najrelevantnejšie a najkvalitnejšie informácie sú prezentované ako prvé.
Skórovanie: LLM priraďuje skóre každému kandidátovi, ktoré odráža ich relevantnosť a kvalitu. To pomáha pri výbere najlepšej odpovede alebo dokumentu pre používateľa.
Využitím LLM na prehodnocovanie 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á agentúra mohla použiť veľký jazykový model (LLM) na prehodnocovanie a skórovanie cestovných destinácií na základe preferencií používateľa v Pythone:
Cestovná agentúra chce odporučiť najlepšie cestovné destinácie klientovi na základe jeho preferencií. LLM pomôže prehodnotiť a skórovať destinácie, aby zabezpečil, že najrelevantnejšie možnosti budú prezentované.
Tu je, ako môžete aktualizovať predchádzajúci príklad na použitie Azure OpenAI Services:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Generate a prompt for the Azure OpenAI
prompt = self.generate_prompt(preferences)
# Define headers and payload for the request
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Call the Azure OpenAI API to get the re-ranked and scored destinations
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extract and return the recommendations
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
# Example usage
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á zoznamom potenciálnych cestovných destinácií, z ktorých každá má atribúty 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 preferencií používateľa a vykoná HTTP POST požiadavku na API Azure OpenAI, aby získala prehodnotené a skórované destinácie.
Generovanie promptu (generate_prompt
metóda): Táto metóda konštruuje prompt pre Azure OpenAI, vrátane preferencií používateľa a zoznamu destinácií. Prompt usmerňuje model, aby prehodnotil a skóroval destinácie na základe poskytnutých preferencií.
API volanie: Knižnica requests
sa používa na vykonanie HTTP POST požiadavky na API endpoint Azure OpenAI. Odpoveď obsahuje prehodnotené a skórované destinácie.
Príklad použitia: Cestovná agentúra zhromažďuje preferencie používateľa (napr. záujem o prehliadky a rozmanitú kultúru) a používa službu Azure OpenAI na získanie prehodnotených a skórovaných odporúčaní pre cestovné destinácie.
Uistite sa, že nahradíte your_azure_openai_api_key
svojím skutočným API kľúčom Azure OpenAI a https://your-endpoint.com/...
skutočnou URL endpointu vášho nasadenia Azure OpenAI.
Využitím LLM na prehodnocovanie a skórovanie môže cestovná agentúra poskytovať personalizovanejšie a relevantnejšie cestovné odporúčania klientom, čím zlepšuje ich celkový zážitok.
Pozrime sa na príklad cestovnej agentúry, aby sme videli, ako môže byť implementované vyhľadávanie s úmyslom.
Zhromažďovanie preferencií používateľa
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Porozumenie ú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"
Vedomie kontextu
def analyze_context(query, user_history):
# Combine current query with user history to understand context
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):
# Example search logic for informational intent
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Example search logic for navigational intent
results = search_web(query)
return results
def search_transaction(query, preferences):
# Example search logic for transactional intent
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Example personalization logic
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Return top 10 personalized results
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)
Agenti na generovanie kódu využívajú AI modely na písanie a vykonávanie kódu, riešenie zložitých problémov a automatizáciu úloh.
Agenti na generovanie kódu využívajú generatívne AI modely na písanie a vykonávanie kódu. Títo agenti dokáž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 na generovanie kódu. Takto by to mohlo fungovať:
V tomto príklade navrhneme agenta na generovanie kódu, Travel Agent, ktorý pomáha používateľom plánovať cestovanie generovaním a vykonávaním kódu. Tento agent dokáže zvládnuť úlohy, ako je získavanie cestovných možností, filtrovanie výsledkov a zostavovanie itinerára pomocou generatívnej AI.
Zhromažďovanie 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 získavanie dát
def generate_code_to_fetch_data(preferences):
# Example: Generate code to search for flights based on user preferences
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):
# Example: Generate code to search for hotels
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):
# Execute the generated code using 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)
Úprava na základe spätnej väzby
def adjust_based_on_feedback(feedback, preferences):
# Adjust preferences based on user feedback
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)
# Regenerate and execute code with updated preferences
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 je možné zlepšiť proces generovania dotazov využitím environmentálneho povedomia a uvažovania.
Tu je príklad, ako to môže byť realizované:
Tu je aktualizovaný príklad Python kódu, ktorý zahŕňa tieto koncepty:
def adjust_based_on_feedback(feedback, preferences, schema):
# Adjust preferences based on user feedback
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Reasoning based on schema to adjust other related preferences
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):
# Custom logic to adjust preferences based on schema and feedback
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):
# Generate code to fetch flight data based on updated preferences
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generate code to fetch hotel data based on updated preferences
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulate execution of code and return mock data
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Generate itinerary based on flights, hotels, and attractions
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Example schema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Example usage
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Regenerate and execute code with updated preferences
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. Zahŕňa 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 použí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.Vďaka tomu, že je systém environmentálne uvedomelý a uvažuje na základe schémy, dokáže generovať presnejšie a relevantnejšie dotazy, čo vedie k lepším cestovným odporúčaniam a personalizovanejšiemu zážitku používateľa.
SQL (Structured Query Language) je výkonný 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 akcií v AI agentoch. Pozrime sa, ako môže byť SQL použité ako RAG technika v kontexte cestovnej agentúry.
Príklad: Agent na analýzu dát:
Zhromažďovanie 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
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 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 Retrieval-Augmented Generation (RAG) techniky môžu AI agenti, ako je Travel Agent, dynamicky získavať a využívať relevantné dáta na poskytovanie presných a personalizovaných odporúčaní.
Na demonštráciu implementácie metakognície vytvorme jednoduchého agenta, ktorý reflektuje svoj proces rozhodovania pri riešení problému. V tomto príklade vytvoríme systém, kde agent optimalizuje výber hotela, ale následne hodnotí svoje vlastné rozhodovanie a upravuje svoju stratégiu, keď urobí chyby alebo suboptimálne rozhodnutia.
Tu je príklad:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Stores the hotels chosen previously
self.corrected_choices = [] # Stores the corrected choices
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Available strategies
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]
# Let's assume we have some user feedback that tells us whether the last choice was good or not
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Adjust strategy if the previous choice was unsatisfactory
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"
# Simulate a list of hotels (price and quality)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Create an agent
agent = HotelRecommendationAgent()
# Step 1: The agent recommends a hotel using the "cheapest" strategy
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Step 2: The agent reflects on the choice and adjusts strategy if necessary
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Step 3: The agent recommends again, this time using the adjusted strategy
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Kľúčom je schopnosť agenta:
Toto je jednoduchá forma metakognície, kde je systém schopný upraviť svoj proces uvažovania na základe internej spätnej väzby.
Metakognícia je mocný nástroj, ktorý môže výrazne zlepšiť schopnosti AI agentov. Vďaka začleneniu metakognitívnych procesov môžete navrhnúť agentov, ktorí sú inteligentnejší, prispôsobivejší a efektívnejší. Využite ďalšie zdroje na hlbšie preskúmanie fascinujúceho sveta metakognície v AI agentoch.
Pripojte sa k Azure AI Foundry Discord, kde sa môžete stretnúť s ďalšími študentmi, zúčastniť sa konzultačných hodín a získať odpovede na svoje otázky o AI agentoch.
Upozornenie:
Tento dokument bol preložený pomocou služby AI prekladu Co-op Translator. Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný 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 interpretácie vyplývajúce z použitia tohto prekladu.