(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 AI agenti uvažovat o svých vlastních myšlenkových procesech. Na konci této lekce porozumíte klíčovým konceptům a budete vybaveni praktickými příklady, jak metakognici využít při návrhu AI agentů.
Po dokončení této lekce budete schopni:
Metakognice označuje kognitivní procesy vyššího řádu, které zahrnují uvažování o vlastním myšlení. Pro AI agenty to znamená schopnost hodnotit a upravovat své činy na základě sebeuvědomění a minulých zkušeností. Metakognice, tedy „uvažování o uvažování“, je důležitý koncept ve vývoji agenních AI systémů. Znamená, že AI systémy jsou si vědomy svých vlastních vnitřních procesů a jsou schopny monitorovat, regulovat a přizpůsobovat své chování. 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 dělat lepší rozhodnutí, identifikovat chyby a dlouhodobě zlepšovat jejich výkon – znovu se vracíme k Turingovu testu a debatě o tom, zda AI převezme kontrolu.
V kontextu agenních AI systémů může metakognice pomoci řešit několik výzev, jako jsou:
Metakognice, tedy „uvažování o uvažování“, 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 činnosti, což vede ke zlepšenému řešení problémů a rozhodovacím schopnostem. Pochopením metakognice můžete navrhovat AI agenty, kteří nejsou jen inteligentnější, ale také adaptabilnější a efektivnější. Ve skutečné metakognici by AI výslovně uvažovala o svém vlastním uvažování.
Příklad: „Upřednostnil(a) jsem levnější lety, protože… Mohl(a) bych však přijít o přímé lety, tak se znovu podívám.“
Sledování, jak a proč si vybral(a) určitou trasu.
Metakognice hraje klíčovou roli při návrhu AI agentů z několika důvodů:

Než se pustíme do metakognitivních procesů, je nutné pochopit základní složky AI agenta. AI agent obvykle obsahuje:
Tyto složky společně tvoří „expertní jednotku“, která může vykonávat specifické úkoly.
Příklad:
Představte si cestovního agenta, agentní služby, která nejen plánuje vaši dovolenou, ale také upravuje trasu na základě dat v reálném čase a zkušeností z cest minulých zákazníků.
Představte si, že navrhujete cestovní agenturu poháněnou AI. Tento agent „Travel Agent“ pomáhá uživatelům plánovat dovolené. Aby byla metakognice začleněna, musí Travel Agent hodnotit a upravovat své činy na základě sebeuvědomění a minulých zkušeností. Zde je, jak může metakognice hrát roli:
Aktuálním úkolem je pomoci uživateli naplánovat výlet do Paříže.
Travel Agent použí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 kódu Travel Agent začleňujícího 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):
# Hledejte lety, hotely a atrakce podle 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 Travel Agent poskytovat personalizovanější a přesnější cestovní doporučení, což zlepšuje celkový uživatelský zážitek.
Plánování je klíčovou složkou chování AI agenta. Zahrnuje rozvržení kroků nezbytných k dosažení cíle s ohledem na současný stav, zdroje a možné překážky.
Příklad:
Zde jsou kroky, které Travel Agent musí podniknout, aby efektivně asistoval uživateli při plánování 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)
# Ukázka použití uvnitř žádosti o booing
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
Nejprve si pojďme objasnit rozdíl mezi RAG nástrojem a předběžným načítáním kontextu.

RAG kombinuje systém vyhledávání s generativním modelem. Když je položena otázka, vyhledávací systém získá relevantní dokumenty nebo data z externího zdroje a tyto získané informace se použijí k doplnění vstupu pro generativní model. To pomáhá modelu generovat přesnější a kontextuálně relevantní odpovědi.
V RAG systému agent vyhledává relevantní informace v databázi znalostí a používá je k vytváření vhodných odpovědí nebo akcí.
Korektivní RAG přístup se zaměřuje na použití RAG technik k opravě chyb a zlepšení přesnosti AI agentů. Zahrnuje:
Představte si vyhledávacího agenta, který získává informace z webu pro odpovědi na uživatelské dotazy. Korektivní RAG přístup může zahrnovat:
Korektivní RAG (Retrieval-Augmented Generation) zlepšuje schopnost AI vyhledávat a generovat informace a zároveň korigovat chyby. Podívejme se, jak Travel Agent může použít korektivní RAG přístup k poskytování přesnějších a relevantnějších cestovních doporučení.
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 Travel Agentovi:
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
self.experience_data = []
def gather_preferences(self, preferences):
self.user_preferences = preferences
def retrieve_information(self):
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
new_itinerary = self.generate_recommendations()
return new_itinerary
# 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)
Předběžné načtení kontextu zahrnuje nahrání relevantního kontextu nebo základních informací do modelu před zpracováním dotazu. To znamená, že model má k těmto informacím přístup od začátku, což mu může pomoci generovat informovanější odpovědi, aniž by musel během procesu načítat další data.
Zde je zjednodušený příklad, jak by mohlo vypadat předběžné načtení kontextu pro aplikaci cestovního agenta v Pythonu:
class TravelAgent:
def __init__(self):
# Přednačíst populární 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čte slovník obsahující informace o populárních destinacích, jako jsou Paříž, Tokio, New York a Sydney. Tento slovník zahrnuje detaily jako země, měna, jazyk a hlavní atrakce pro každou destinaci.
Získání informací (metoda get_destination_info): Když uživatel položí dotaz ohledně konkrétní destinace, metoda get_destination_info načte relevantní informace ze slovníku přednačteného kontextu.
Předběžným načtením kontextu může aplikace cestovního agenta rychle reagovat na dotazy uživatelů, aniž by musela v reálném čase získávat informace z externího zdroje. To činí aplikaci efektivnější a rychlejší.
Inicializace plánu s cílem znamená začít s jasným záměrem nebo požadovaným výsledkem. Definováním tohoto cíle na začátku 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 se blíží k dosažení požadovaného výsledku, čímž je proces efektivnější a cílenější.
Zde je příklad, jak můžete inicializovat cestovní plán s cílem před iterací pro cestovního agenta v Pythonu:
Cestovní agent chce naplánovat přizpůsobenou dovolenou pro klienta. Cílem je vytvořit cestovní itinerář, 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 seznamem možných destinací, z nichž každá má atributy jako jméno, cena a typ aktivity.
Inicializace plánu (metoda bootstrap_plan): Tato metoda vytváří počáteční cestovní plán na základě klientových preferencí a rozpočtu. Prochází seznam destinací a přidává je do plánu, pokud odpovídají preferencím klienta a vejdou se do rozpočtu.
Kontrola shody preferencí (metoda match_preferences): Tato metoda kontroluje, zda destinace odpovídá klientovým preferencím.
Iterace plánu (metoda iterate_plan): Tato metoda zdokonaluje počáteční plán tím, že se snaží nahradit každou destinaci v plánu lepší shodou, s ohledem na preference klienta a omezení rozpočtu.
Výpočet nákladů (metoda calculate_cost): Tato metoda vypočítává celkové náklady aktuálního plánu včetně potenciální nové destinace.
Inicializací plánu s jasným cílem (například maximalizací spokojenosti klienta) a iterací pro zdokonalení plánu může cestovní agent vytvořit přizpůsobený a optimalizovaný cestovní itinerář pro klienta. Tento přístup zajistí, že cestovní plán odpovídá klientovým preferencím a rozpočtu od začátku a vylepšuje se s každou iterací.
Velké jazykové modely (LLM) lze použít pro přeřazování a hodnocení tím, že vyhodnocují relevantnost a kvalitu získaných dokumentů nebo generovaných odpovědí. Zde je, jak to funguje:
Získávání: Počáteční krok získává sadu kandidátních dokumentů nebo odpovědí na základě dotazu.
Přeřazování: LLM tyto kandidáty vyhodnotí a přeřadí je podle jejich relevance a kvality. Tento krok zajišťuje, že nejrelevantnější a nejkvalitnější informace jsou zobrazeny jako první.
Hodnocení: LLM každému kandidátovi přidělí skóre, které odráží jejich relevanci a kvalitu. To pomáhá při výběru nejlepší odpovědi nebo dokumentu pro uživatele.
Využitím LLM pro přeřazování a hodnocení může systém poskytovat přesnější a kontextuálně relevantní informace, což zlepšuje celkovou uživatelskou zkušenost.
Zde je příklad, jak by cestovní agent mohl použít Velký jazykový model (LLM) pro přeřazování a hodnocení cestovních destinací na základě uživatelských preferencí 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 byly prezentovány nejrelevantnější možnosti.
Zde je způsob, jak můžete aktualizovat předchozí příklad pro použití Azure OpenAI služeb:
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 se seznamem potenciálních cestovních destinací, z nichž každá má atributy jako jméno 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 odesílá HTTP POST požadavek na Azure OpenAI API pro získání přeřazených a ohodnocených destinací.
Generování promptu (metoda generate_prompt): Tato metoda sestavuje prompt pro Azure OpenAI, který obsahuje uživatelské preference a seznam destinací. Prompt vede model k přeřazení a ohodnocení destinací podle zadaných preferencí.
Volání API: Knihovna requests se používá pro odeslání HTTP POST požadavku na koncový bod Azure OpenAI API. Odpověď obsahuje přeřazené a ohodnocené destinace.
Příklad použití: Cestovní agent sbírá uživatelské preference (například zájem o prohlídky památek a různorodou kulturu) a využívá službu Azure OpenAI k získání přeřazených a ohodnocených doporučení na cestovní destinace.
Nezapomeňte nahradit your_azure_openai_api_key skutečným Azure OpenAI API klíčem a https://your-endpoint.com/... skutečnou URL adresou koncového bodu nasazení Azure OpenAI.
Využitím LLM pro přeřazování a hodnocení může cestovní agent klientům poskytnout personalizovanější a relevantnější cestovní doporučení, čímž zlepšuje jejich celkovou zkušenost.
Retrieval-Augmented Generation (RAG) může být jak technika promptování, tak nástroj při vývoji AI agentů. Porozumění rozdílu mezi nimi vám pomůže efektivněji využít RAG ve vašich projektech.
Co to je?
Jak to funguje:
Příklad v cestovním agentu:
Co to je?
Jak to funguje:
Příklad v cestovním agentu:
| Aspekt | Technika promptování | Nástroj |
|---|---|---|
| Ruční vs Automatické | Ruční tvorba 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 konkrétních potřeb | Efektivnější pro rozsáhlé implementace |
| Složitost | Vyžaduje vytváření 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 zásadní aspekt výkonu AI agenta. Zajišťuje, že informace získané a generované agentem jsou vhodné, přesné a užitečné pro uživatele. Podívejme se, 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 top 10 relevantních položek
Příklad:
def process_query(query):
# Použijte NLP k 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 Travel 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)
Hledání s úmyslem zahrnuje pochopení a interpretaci základního účelu nebo cíle uživatelova dotazu, aby se získaly a generovaly co nejrelevantnější a nejužitečnější informace. Tento přístup jde nad rámec pouhého hledání klíčových slov a zaměřuje se na skutečné potřeby a kontext uživatele.
Pojďme si ukázat Travel Agent jako příklad, jak může být implementováno hledání s úmyslem.
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
Porozumění úmyslu 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"
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 informativní úmysl
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Příklad vyhledávací logiky pro navigační úmysl
results = search_web(query)
return results
def search_transaction(query, preferences):
# Příklad vyhledávací logiky pro transakční úmysl
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šení složitých problémů a automatizaci úkolů.
Agenti generující kód využí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, Travel Agent, který pomáhá uživatelům plánovat cestování generováním a vykonáváním kódu. Tento agent dokáže řešit úkoly jako získávání možností cestování, filtrování výsledků a sestavování itineráře pomocí generativní AI.
Sbírání preferencí uživatele
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ává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
Vykonává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 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"]
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 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, attractions)
print("Updated Itinerary:", updated_itinerary)
Na základě schématu tabulky lze skutečně vylepšit proces generování dotazů využitím povědomí o prostředí a schopnosti uvažování.
Zde je příklad, jak lze toto provést:
Zde je aktualizovaný příklad kódu v Pythonu, který tyto koncepce obsahuje:
def adjust_based_on_feedback(feedback, preferences, schema):
# 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"]
# Odůvodnění založené na schématu pro úpravu dalších souvisejících preferencí
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 preferencí 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 preferencí
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 preferencí
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulovat provedení 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}
# Ukázkové schéma
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Ukázkové 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 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, feedback["liked"])
print("Updated Itinerary:", updated_itinerary)
schema definuje, jak by měly být preference upraveny podle 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ě zpětné vazby uživatele a schématu.adjust_based_on_environment metoda): Tato metoda přizpůsobuje úpravy podle schématu a zpětné vazby.Díky tomu, že je systém povědomý o prostředí a uvažuje podle schématu, dokáže generovat přesnější a relevantnější dotazy, což vede k lepším cestovním doporučením a personalizovanému uživatelskému zážitku.
SQL (Structured Query Language) je mocný nástroj pro práci s databázemi. Použitý jako součást přístupu Retrieval-Augmented Generation (RAG) může SQL načítat relevantní data z databází a pomáhat tak generovat odpovědi nebo akce v AI agentech. Prozkoumejme, jak lze SQL použít jako RAG techniku v kontextu Travel Agenta.
Příklad: agent pro analýzu dat:
Sbírání preferencí uživatele
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
Vykonává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 hotely
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 součást techniky Retrieval-Augmented Generation (RAG) mohou AI agenti jako Travel Agent dynamicky získávat 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. V tomto příkladu postavíme systém, kde agent zkouší optimalizovat výběr hotelu, ale poté zhodnotí své vlastní uvažování a přizpůsobí svou strategii, když dělá chyby nebo suboptimální volby.
Simulujeme to na jednoduché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 = [] # Uchovává dříve vybrané hotely
self.corrected_choices = [] # Uchovává 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":
# Upraví 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řit 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í výběr a v případě potřeby upraví strategii
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Krok 3: Agent znovu doporučí, tentokrát s upravenou strategií
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Klíčové je zde, že agent umí:
Toto je jednoduchá forma metakognice, kde systém dokáže upravit své uvažování na základě interní zpětné vazby.
Metakognice je mocný nástroj, který může významně zvýšit schopnosti AI agentů. Začleněním metakognitivních procesů lze navrhnout agenty, kteří jsou inteligentnější, přizpůsobivější a efektivnější. Využijte další zdroje k podrobnějšímu prozkoumání fascinujícího světa metakognice v AI agentech.
Připojte se k Microsoft Foundry Discord, kde se můžete setkat s dalšími studenty, zúčastnit se konzultací a získat odpovědi na své dotazy ohledně AI agentů.
Prohlášení:
Tento dokument byl přeložen pomocí AI překladatelské služby Co-op Translator. Přestože usilujeme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nejsme odpovědni za jakékoli nedorozumění nebo chybné výklady vzniklé použitím tohoto překladu.