(Klikněte na obrázek výše pro zhlédnutí videa této lekce)
Metakognice u AI agentů
Vítejte v lekci o metakognici u AI agentů! Tato kapitola je určena pro začátečníky, kteří se zajímají o to, jak mohou agenti AI přemýšlet o vlastních procesech myšlení. Na konci této lekce budete rozumět klíčovým konceptům a budete vybaveni praktickými příklady, jak metakognici aplikovat při návrhu AI agentů.
Po dokončení této lekce budete umět:
Metakognice odkazuje na kognitivní procesy vyššího řádu, které zahrnují přemýšlení o vlastním myšlení. Pro AI agenty to znamená schopnost hodnotit a upravovat své akce na základě sebeuvědomění a minulých zkušeností. Metakognice, neboli “přemýšlení o přemýšlení,” je důležitý koncept při vývoji agentních AI systémů. Zahrnuje, že AI systémy si uvědomují své vlastní vnitřní procesy a jsou schopné monitorovat, regulovat a přizpůsobovat své chování odpovídajícím způsobem. Podobně jako když my „čteme“ situaci v místnosti nebo se díváme na problém. Toto sebeuvědomění může AI systémům pomoci učinit lepší rozhodnutí, odhalit chyby a zlepšit svůj výkon v průběhu času – opět se tak spojuje s Turingovým testem a debatou o tom, zda AI převezme kontrolu.
V kontextu agentních AI systémů může metakognice pomoci řešit několik výzev, jako jsou:
Metakognice, neboli „přemýšlení o přemýšlení,“ je kognitivní proces vyššího řádu, který zahrnuje sebeuvědomění a seberegulaci vlastních kognitivních procesů. V oblasti AI umožňuje metakognice agentům hodnotit a přizpůsobovat své strategie a akce, což vede ke zlepšení schopnosti řešit problémy a rozhodovat se. Pochopením metakognice můžete navrhovat AI agenty, kteří jsou nejen chytřejší, ale také více adaptabilní a efektivní. Ve skutečné metakognici by AI explicite uvažovala o svém vlastním uvažování.
Příklad: „Upřednostnil jsem levnější lety, protože… mohl bych tak propásnout přímé lety, takže si to znovu ověřím.“ Sledování toho, jak nebo proč zvolila určitou trasu.
Metakognice hraje zásadní roli v návrhu AI agentů z několika důvodů:

Než se ponoříme do metakognitivních procesů, je důležité pochopit základní komponenty AI agenta. AI agent obvykle obsahuje:
Tyto komponenty spolupracují při vytváření „jednotky odbornosti“, která dokáže vykonávat specifické úkoly.
Příklad: Uvažujte o cestovním agentovi, což jsou služby agenta, které nejen plánují vaši dovolenou, ale také upravují plán na základě dat v reálném čase a minulých zkušeností uživatelů.
Představte si, že navrhujete službu cestovního agenta řízenou AI. Tento agent, „Cestovní agent,“ pomáhá uživatelům plánovat dovolené. Aby mohl inkorporovat metakognici, musí Cestovní agent hodnotit a upravovat své akce na základě sebeuvědomění a minulých zkušeností. Zde je, jak by metakognice mohla hrát roli:
Aktuální úkol je pomoci uživateli naplánovat cestu do Paříže.
Cestovní agent využívá metakognici k hodnocení svého výkonu a učení se z minulých zkušeností. Například:
Zde je zjednodušený příklad, jak by mohl vypadat kód Cestovního agenta, který začleňuje metakognici:
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):
# Vyhledávejte lety, hotely a atrakce na základě preferencí
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)
# Analyzujte zpětnou vazbu a upravte budoucí doporučení
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Příklad použití
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členěním metakognice může Cestovní agent poskytovat personalizovanější a přesnější doporučení na cesty, čímž se zlepší celkový uživatelský zážitek.
Plánování je klíčová součást chování AI agenta. Zahrnuje vymezení kroků potřebných k dosažení cíle s ohledem na aktuální stav, zdroje a možné překážky.
Příklad: Zde jsou kroky, které musí Cestovní agent podniknout, aby účinně pomohl uživateli při plánování jeho cesty:
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)
# Příklad použití v rámci žádosti o hostování
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)
Nejprve si pojďme vysvětlit rozdíl mezi RAG nástrojem a pre-emptivním načítáním kontextu

RAG kombinuje retrieval systém s generativním modelem. Když je zadán dotaz, retrieval systém vyhledá relevantní dokumenty nebo data z externího zdroje a tyto získané informace slouží k obohacení vstupu generativního modelu. To pomáhá modelu generovat přesnější a kontextově relevantní odpovědi.
V RAG systému agent získává relevantní informace z báze znalostí a používá je k vytváření vhodných odpovědí nebo akcí.
Korektivní RAG přístup se zaměřuje na využití RAG technik k opravám chyb a zlepšení přesnosti AI agentů. To zahrnuje:
Představme si vyhledávacího agenta, který získává informace z webu pro odpovědi na uživatelské dotazy. Korektivní RAG přístupy mohou zahrnovat:
Korektivní RAG (Retrieval-Augmented Generation) zvyšuje schopnost AI získávat a generovat informace a zároveň opravovat případné nepřesnosti. Podívejme se, jak může Cestovní agent využít korektivní RAG přístup, aby poskytoval přesnější a relevantnější doporučení na cestování.
To zahrnuje:
Příklad:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Příklad:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Příklad:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Příklad:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Příklad:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Příklad:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Pří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)
Zde je zjednodušený příklad Python kódu začleňujícího korektivní RAG přístup v Cestovním 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
# Příklad použití
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-emptive Context Load zahrnuje načtení relevantního kontextu nebo pozadí do modelu před zpracováním dotazu. To znamená, že model má k této informaci přístup od začátku, což mu může pomoci generovat informovanější odpovědi, aniž by během procesu musel získávat další data.
Zde je zjednodušený příklad, jak by mohlo vypadat pre-emptivní načtení kontextu pro aplikaci cestovní kanceláře v Pythonu:
class TravelAgent:
def __init__(self):
# Přednačíst oblíbené destinace a jejich informace
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ískat informace o destinaci z přednačtené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}."
# Příklad použití
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Inicializace (metoda __init__): Třída TravelAgent přednačítá slovník obsahující informace o populárních destinacích, jako jsou Paříž, Tokio, New York a Sydney. Tento slovník obsahuje detaily jako země, měna, jazyk a hlavní atrakce pro každou destinaci.
Získávání informací (metoda get_destination_info): Když uživatel dotazuje informace o konkrétní destinaci, metoda get_destination_info načte relevantní informace ze přednačteného slovníku kontextu.
Přednačtením kontextu může aplikace cestovní kanceláře rychle reagovat na uživatelské dotazy bez nutnosti získávat tyto informace z externího zdroje v reálném čase. To činí aplikaci efektivnější a responzivnější.
Inicializace plánu s cílem zahrnuje nastartování s jasným cílem nebo požadovaným výsledkem na mysli. Definováním tohoto cíle předem může model používat tento cíl jako vodítko během celého iterativního procesu. To pomáhá zajistit, že každá iterace vede blíže k dosažení požadovaného výsledku, čímž se proces stává efektivnější a zaměřenější.
Zde je příklad, jak můžete inicializovat cestovní plán s cílem před iterací pro cestovní kancelář v Pythonu:
Cestovní agent chce naplánovat na míru šitou dovolenou pro klienta. Cílem je vytvořit itinerář cestování, který maximalizuje spokojenost klienta na základě jeho preferencí 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']
# Příklad použití
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)
Inicializace (metoda __init__): Třída TravelAgent je inicializována s listem potenciálních destinací, z nichž každá má atributy jako název, cena a typ aktivity.
Inicializace plánu (metoda bootstrap_plan): Tato metoda vytvoří počáteční cestovní plán na základě preferencí a rozpočtu klienta. Prochází seznam destinací a přidává je do plánu, pokud odpovídají preferencím klienta a zapadají do rozpočtu.
Kontrola shody preferencí (metoda match_preferences): Tato metoda kontroluje, zda destinace odpovídá preferencím klienta.
Iterace plánu (metoda iterate_plan): Tato metoda upřesňuje počáteční plán tím, že se snaží nahradit každou destinaci v plánu lepší volbou s ohledem na preference klienta a omezení rozpočtu.
Výpočet nákladů (metoda calculate_cost): Tato metoda vypočítá celkové náklady aktuálního plánu včetně potenciálně nové destinace.
Inicializací plánu s jasným cílem (např. maximalizace spokojenosti klienta) a iterací pro jeho upřesnění může cestovní agent vytvořit na míru šitý a optimalizovaný cestovní itinerář pro klienta. Tento přístup zajišťuje, že cestovní plán odpovídá klientovým preferencím a rozpočtu od začátku a s každou iterací se zlepšuje.
Velké jazykové modely (LLM) lze použít pro přeřazování a skórování hodnocením relevance a kvality získaných dokumentů nebo generovaných odpovědí. Funguje to takto:
Získání: Počáteční krok získá sadu kandidátních dokumentů nebo odpovědí na základě dotazu.
Přeřazování: LLM hodnotí tyto kandidáty a přeřadí je podle jejich relevance a kvality. Tento krok zajišťuje, že nejvíce relevantní a kvalitní informace jsou prezentovány první.
Skórování: LLM přiděluje skóre každému kandidátovi, které odráží jejich relevanci a kvalitu. To pomáhá vybrat nejlepší odpověď nebo dokument pro uživatele.
Využitím LLM pro přeřazování a skórování může systém poskytovat přesnější a kontextově relevantnější informace, čímž se zlepšuje celkový uživatelský zážitek.
Zde je příklad, jak může cestovní agent použít velký jazykový model (LLM) k přeřazování a skórování cestovních destinací na základě preferencí uživatele v Pythonu:
Cestovní agent chce doporučit nejlepší cestovní destinace klientovi na základě jeho preferencí. LLM pomůže přeřadit a ohodnotit destinace, aby se zajistilo předložení nejrelevantnějších možností.
Zde je, jak můžete aktualizovat předchozí příklad na využití služeb Azure OpenAI:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Vygenerujte prompt pro Azure OpenAI
prompt = self.generate_prompt(preferences)
# Definujte hlavičky a obsah požadavku
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Zavolejte Azure OpenAI API pro získání přeřazených a ohodnocených destinací
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extrahujte a vraťte doporučení
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
# Příklad použití
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)
Inicializace: Třída TravelAgent je inicializována s listem potenciálních cestovních destinací, z nichž každá má atributy jako název a popis.
Získání doporučení (metoda get_recommendations): Tato metoda generuje prompt pro službu Azure OpenAI na základě uživatelských preferencí a provádí HTTP POST požadavek na Azure OpenAI API, aby získala přeřazené a ohodnocené destinace.
Generování promptu (metoda generate_prompt): Tato metoda sestavuje prompt pro Azure OpenAI, včetně uživatelských preferencí a seznamu destinací. Prompt vede model k přeřazení a skórování destinací na základě poskytnutých preferencí.
Volání API: Knihovna requests je použita k provedení HTTP POST požadavku na koncový bod Azure OpenAI API. Odpověď obsahuje přeřazené a ohodnocené destinace.
Ukázkové použití: Cestovní agent shromažďuje uživatelské preference (např. zájem o památky a rozmanitou kulturu) a používá službu Azure OpenAI k získání přeřazených a ohodnocených doporučení pro cestovní destinace.
Ujistěte se, že nahradíte your_azure_openai_api_key skutečným API klíčem Azure OpenAI a https://your-endpoint.com/... skutečnou URL adresou end-pointu vaší Azure OpenAI služby.
Využitím LLM pro přeřazování a skórování může cestovní agent poskytovat personalizovanější a relevantnější cestovní doporučení klientům, čímž zlepší jejich celkový zážitek.
Retrieval-Augmented Generation (RAG) může být jak technikou promptování, tak nástrojem při vývoji AI agentů. Pochopení rozdílu mezi nimi vám pomůže efektivněji využívat RAG ve vašich projektech.
Co to je?
Jak to funguje:
Příklad v cestovní agentuře:
Co to je?
Jak to funguje:
Příklad v cestovní agentuře:
| Aspekt | Technika promptování | Nástroj |
|---|---|---|
| Manuální vs Automatické | Manuální formulace promptů pro každý dotaz. | Automatizovaný proces získávání a generování. |
| Kontrola | Nabízí větší kontrolu nad procesem získávání. | Zjednodušuje a automatizuje získávání a generování. |
| Flexibilita | Umožňuje přizpůsobené prompty podle specifických potřeb. | Efektivnější pro velké implementace. |
| Složitost | Vyžaduje tvorbu a ladění promptů. | Snazší integrace do architektury AI agenta. |
Příklad techniky promptování:
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)
Příklad nástroje:
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)
Hodnocení relevance je klíčovým aspektem výkonu AI agenta. Zajišťuje, že informace získané a generované agentem jsou vhodné, přesné a užitečné pro uživatele. Pojďme prozkoumat, jak hodnotit relevanci u AI agentů, včetně praktických příkladů a technik.
Pří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
Pří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átit 10 nejrelevantnějších položek
Příklad:
def process_query(query):
# Použijte NLP pro extrakci klíčových informací z dotazu uživatele
processed_query = nlp(query)
return processed_query
Pří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
Zde je praktický příklad, jak může cestovní agent hodnotit relevanci cestovních doporučení:
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átit 10 nejrelevantnějších položek
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
# Příklad použití
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)
Vyhledávání se záměrem zahrnuje pochopení a interpretaci základního účelu nebo cíle uživatelova dotazu k získání a generování co nejrelevantnějších a nejužitečnějších informací. Tento přístup jde nad rámec pouhého porovnávání klíčových slov a zaměřuje se na pochopení skutečných potřeb a kontextu uživatele.
Podívejme se na cestovního agenta jako příklad, jak může být vyhledávání se záměrem implementováno.
Shromáždění uživatelských preferencí
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Pochopení záměru uživatele
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"
Povědomí o kontextu
def analyze_context(query, user_history):
# Kombinujte aktuální dotaz s historií uživatele pro pochopení kontextu
context = {
"current_query": query,
"user_history": user_history
}
return context
Vyhledávání a personalizace výsledků
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):
# Příklad vyhledávací logiky pro informační záměr
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Příklad vyhledávací logiky pro navigační záměr
results = search_web(query)
return results
def search_transaction(query, preferences):
# Příklad vyhledávací logiky pro transakční záměr
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Příklad personalizační logiky
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Vrátit 10 nejlepších personalizovaných výsledků
Příklad použití
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 generující kód používají AI modely k psaní a vykonávání kódu, řeší složité problémy a automatizují úkoly.
Agenti generující kód používají generativní AI modely k psaní a vykonávání kódu. Tito agenti mohou řešit složité problémy, automatizovat úkoly a poskytovat cenné poznatky generováním a spouštěním kódu v různých programovacích jazycích.
Představte si, že navrhujete agenta generujícího kód. Takto by mohl fungovat:
V tomto příkladu navrhneme agenta generujícího kód, Cestovní kancelář, který pomůže uživatelům plánovat jejich cestu generováním a spouštěním kódu. Tento agent může řešit úkoly, jako je vyhledávání cestovních možností, filtrování výsledků a sestavování itineráře pomocí generativní AI.
Sbírání uživatelských preferencí
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generování kódu pro získání dat
def generate_code_to_fetch_data(preferences):
# Příklad: Vygenerujte kód pro hledání letů na základě uživatelských preferencí
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):
# Příklad: Vygenerujte kód pro hledání hotelů
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Spouštění generovaného kódu
def execute_code(code):
# Spusťte vygenerovaný kód pomocí 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)
Generování itineráře
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ákladě zpětné vazby
def adjust_based_on_feedback(feedback, preferences):
# Upravte preference na základě zpětné vazby uživatele
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 spusťte kód s aktualizovanými preferencemi
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žení na schématu tabulky může skutečně zlepšit proces generování dotazů použitím povědomí o prostředí a uvažování.
Zde je příklad, jak lze toto provést:
Zde je aktualizovaný příklad kódu v Pythonu, který tyto koncepty zahrnuje:
def adjust_based_on_feedback(feedback, preferences, schema):
# Upravit předvolby na základě zpětné vazby uživatele
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Odůvodnění založené na schématu pro úpravu dalších souvisejících předvoleb
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 pro úpravu předvoleb na základě schématu a zpětné vazby
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):
# Generovat kód pro získání dat o letech na základě aktualizovaných předvoleb
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generovat kód pro získání dat o hotelech na základě aktualizovaných předvoleb
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulovat spuštění kódu a vrátit ukázková data
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Vygenerovat itinerář na základě letů, hotelů a atrakcí
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Příklad schématu
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Příklad použití
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 vygenerovat a spustit kód s aktualizovanými předvolbami
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, jak by měly být preference upraveny na základě zpětné vazby. Zahrnuje pole jako favorites a avoid s odpovídajícími úpravami.adjust_based_on_feedback metoda): Tato metoda upravuje preference na základě uživatelské zpětné vazby a schématu.adjust_based_on_environment metoda): Tato metoda přizpůsobuje úpravy na základě schématu a zpětné vazby.Tím, že je systém povědomý o prostředí a uvažuje podle schématu, může generovat přesnější a relevantnější dotazy, což vede k lepším doporučením pro cestování a více personalizovanému uživatelskému zážitku.
SQL (Structured Query Language) je výkonný nástroj pro interakci s databázemi. Když je použit jako součást přístupu Retrieval-Augmented Generation (RAG), SQL může načítat relevantní data z databází pro informování a generování odpovědí nebo akcí v AI agentech. Pojďme prozkoumat, jak lze SQL používat jako techniku RAG v kontextu Cestovního agenta.
Příklad: Agent pro analýzu dat:
Sbírání uživatelských preferencí
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generování SQL dotazů
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
Spouštění SQL dotazů
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
Generování doporučení
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 hotel
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Dotaz na atrakce
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Využitím SQL jako části techniky Retrieval-Augmented Generation (RAG) mohou AI agenti jako Cestovní agent dynamicky načítat a využívat relevantní data k poskytování přesných a personalizovaných doporučení.
Pro demonstraci implementace metakognice vytvořme jednoduchého agenta, který reflektuje svůj proces rozhodování při řešení problému. Pro tento příklad sestavíme systém, kde se agent snaží optimalizovat výběr hotelu, ale následně vyhodnotí své vlastní uvažování a upraví strategii, když dělá chyby nebo suboptimální volby.
Tento proces simulujeme na základním příkladu, kde agent vybírá hotely na základě kombinace ceny a kvality, ale “reflektuje” svá rozhodnutí a podle toho se přizpůsobuje.
Zde je příklad:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Ukládá dříve vybrané hotely
self.corrected_choices = [] # Ukládá opravené volby
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Dostupné strategie
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]
# Předpokládejme, že máme zpětnou vazbu od uživatele, která nám říká, zda byla poslední volba dobrá nebo ne
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Upravte strategii, pokud byla předchozí volba 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 seznam hotelů (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}
]
# Vytvořte agenta
agent = HotelRecommendationAgent()
# Krok 1: Agent doporučí hotel pomocí strategie "nejlevnější"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Krok 2: Agent zhodnotí volbu a případně upraví strategii
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Krok 3: Agent opět doporučí, tentokrát pomocí upravené strategie
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Klíčové je zde, že agent:
Toto je jednoduchá forma metakognice, kdy je systém schopen upravovat svůj proces uvažování na základě interní zpětné vazby.
Metakognice je silný nástroj, který může výrazně zlepšit schopnosti AI agentů. Začleněním metakognitivních procesů můžete navrhnout agenty, kteří jsou inteligentnější, adaptabilnější a efektivnější. Využijte další zdroje k dalšímu poznání fascinujícího světa metakognice v AI agentech.
Připojte se k Microsoft Foundry Discord, kde potkáte další studenty, můžete navštívit konzultační hodiny a získat odpovědi na své otázky o AI agentech.
Prohlášení o omezení odpovědnosti: Tento dokument byl přeložen pomocí AI překladatelské služby Co-op Translator. Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.