(Kattintson a fenti képre az óra videójának megtekintéséhez)
Metakogníció az MI-ügynökökben
Üdvözöljük a metakognícióról szóló órán az MI-ügynökök kapcsán! Ez a fejezet kezdők számára készült, akik kíváncsiak arra, hogyan gondolkodhatnak az MI-ügynökök a saját gondolkodási folyamataikról. Az óra végére megérti a kulcsfontosságú fogalmakat, valamint gyakorlati példákkal lesz felvértezve a metakogníció alkalmazásához az MI-ügynökök tervezésében.
Az óra elvégzése után képes leszel:
A metakogníció a magasabb rendű kognitív folyamatokra utal, amelyek magukban foglalják a saját gondolkodásról való gondolkodást. Az MI-ügynökök számára ez azt jelenti, hogy képesek értékelni és kiigazítani cselekvéseiket önismeretük és múltbéli tapasztalataik alapján. A metakogníció, vagyis a “gondolkodás a gondolkodásról” fontos fogalom az ügynök MI rendszerek fejlesztésében. Ez magában foglalja, hogy az MI rendszerek tisztában vannak saját belső folyamataikkal, és képesek monitorozni, szabályozni és ennek megfelelően alkalmazkodni viselkedésükhöz. Hasonlóan, mint amikor mi olvassuk a helyzetet vagy nézünk egy problémára. Ez az önismeret segítheti az MI rendszereket jobb döntések meghozatalában, hibák felismerésében és teljesítményük idővel történő javításában - megintcsak visszacsatolva a Turing-teszthez és a vitához arról, hogy az MI átveszi-e az irányítást.
Az ügynök MI rendszerek kontextusában a metakogníció több kihívást segíthet kezelni, például:
A metakogníció, vagyis a “gondolkodás a gondolkodásról”, egy magasabb rendű kognitív folyamat, amely az öntudatot és a kognitív folyamatok önszabályozását foglalja magában. Az MI területén a metakogníció képessé teszi az ügynököket, hogy értékeljék és módosítsák stratégiáikat és cselekedeteiket, javítva ezáltal a probléma megoldási és döntéshozatali képességeiket. A metakogníció megértésével olyan MI-ügynököket tervezhetsz, amelyek nemcsak intelligensebbek, hanem alkalmazkodóképesebbek és hatékonyabbak is. Az igazi metakognícióban az MI kifejezetten a saját következtetéseiről gondolkodik.
Példa: „Az olcsóbb járatokat részesítettem előnyben, mert… Lehet, hogy kihagyom a közvetlen járatokat, ezért újra megnézem.” Nyomon követi, hogyan vagy miért választott egy bizonyos útvonalat.
A metakogníciónak több fontos szerepe van az MI-ügynökök tervezésében:

Mielőtt belemerülnénk a metakognitív folyamatokba, alapvető fontosságú megérteni egy MI-ügynök alapvető összetevőit. Egy MI-ügynök általában a következőkből áll:
Ezek az összetevők együtt dolgoznak, hogy létrehozzanak egy „szaktudás egységet”, amely képes specifikus feladatokat ellátni.
Példa: Vegyünk egy utazási ügynököt, egy olyan ügynök szolgáltatást, amely nemcsak megtervezi az üdülésedet, hanem valós idejű adatok és korábbi ügyfélút tapasztalatok alapján módosítja is az útvonalát.
Képzeljük el, hogy egy AI által működtetett utazási ügynök szolgáltatást tervezel. Ez az ügynök, “Travel Agent”, segíti a felhasználókat vakációjuk megtervezésében. A metakogníció beépítéséhez a Travel Agentnek értékelnie és kiigazítania kell cselekvéseit önismerete és múltbéli tapasztalatai alapján. Íme, hogyan játszhat szerepet a metakogníció:
A jelenlegi feladat egy felhasználó segítése Párizsba tervezett utazásában.
A Travel Agent metakogníciót használ teljesítménye értékelésére és múltbéli tapasztalatokból való tanulásra. Például:
Íme egy egyszerűsített példa arra, hogyan nézhet ki a Travel Agent kódja a metakogníció beépítésével:
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):
# Repülőjáratok, szállodák és látnivalók keresése preferenciák alapján
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)
# Vélemények elemzése és a jövőbeni ajánlások módosítása
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Példa használat
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)
A metakogníció beépítésével a Travel Agent személyre szabottabb és pontosabb utazási ajánlásokat tud nyújtani, javítva ezzel a felhasználói élményt.
A tervezés az MI-ügynök viselkedésének kritikus része. Magában foglalja azokat a lépéseket, amelyek a cél eléréséhez szükségesek, figyelembe véve a jelenlegi állapotot, az erőforrásokat és a lehetséges akadályokat.
Példa: Íme, milyen lépéseket kell megtennie a Travel Agentnek ahhoz, hogy hatékonyan segítse a felhasználót utazása megtervezésében:
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élda használat egy foglalási kérelemben
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)
Először is értsük meg a különbséget a RAG eszköz és a pre-emptív kontextusbetöltés között.

A RAG ötvözi a lekérdező rendszert egy generatív modellel. Amikor egy lekérdezés érkezik, a lekérdező rendszer releváns dokumentumokat vagy adatokat keres egy külső forrásból, és ezeket az adatokat használja fel a generatív modell bemenetének kiegészítésére. Ez segíti a modellt abban, hogy pontosabb és kontextusban releváns válaszokat generáljon.
Egy RAG rendszerben az ügynök releváns információkat szerez be egy tudástárból, amelyeket aztán felhasznál megfelelő válaszok vagy cselekvések generálására.
A Javító RAG megközelítés azzal foglalkozik, hogy RAG technikákat használjon az MI ügynökök hibáinak kijavítására és pontosságának javítására. Ez magában foglalja:
Vegyünk egy keresőügynököt, amely webes információkat szerez be a felhasználói kérdések megválaszolására. A Javító RAG megközelítés magában foglalhatja:
A Javító RAG (Retrieval-Augmented Generation) növeli az MI képességét az információ lekérésére és generálására, miközben kijavítja az esetleges pontatlanságokat. Nézzük meg, hogyan használhatja a Travel Agent a Javító RAG megközelítést pontosabb és relevánsabb utazási ajánlások nyújtásához.
Ez magában foglalja:
Példa:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Példa:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Példa:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Példa:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Példa:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Példa:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Példa:
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)
Itt egy egyszerűsített Python kód példa, amely beépíti a Javító RAG megközelítést a Travel Agentbe:
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élda használat
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)
A megelőző kontextusbetöltés azt jelenti, hogy a modellt a lekérdezés feldolgozása előtt betöltjük a releváns kontextussal vagy háttérinformációval. Ez azt jelenti, hogy a modell már az elejétől hozzáfér ezekhez az információkhoz, ami segíthet abban, hogy tájékozottabb válaszokat generáljon anélkül, hogy a folyamat során további adatokat kellene lekérnie.
Íme egy egyszerűsített példa arra, hogyan nézhet ki a megelőző kontextusbetöltés egy utazási ügynök alkalmazás esetén Pythonban:
class TravelAgent:
def __init__(self):
# Népszerű úti célok és azok információinak előbetöltése
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):
# Úti cél információinak lekérése az előbetöltött kontextusból
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élda használat
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Inicializálás (__init__ metódus): A TravelAgent osztály előre betölt egy szótárat, amely népszerű úti célokkal kapcsolatos információkat tartalmaz, mint Párizs, Tokió, New York és Sydney. Ez a szótár tartalmazza az országot, pénznemet, nyelvet és főbb látnivalókat minden célállomásra.
Információk lekérése (get_destination_info metódus): Amikor a felhasználó lekérdez egy adott úti célt, a get_destination_info metódus lekéri a releváns információkat az előre betöltött kontextus szótárból.
Azáltal, hogy előre betölti a kontextust, az utazási ügynök alkalmazás gyorsan tud válaszolni a felhasználói lekérdezésekre anélkül, hogy valós időben kellene ezeket az információkat külső forrásból lekérnie. Ez hatékonyabbá és reszponzívabbá teszi az alkalmazást.
Egy terv kiindítása egy céllal azt jelenti, hogy világos célt vagy kívánt eredményt határozunk meg előre. Ezzel a céllal a modell irányelvként használhatja az ismétlődő folyamat során. Ez segít abban, hogy minden ismétlés a kívánt eredmény elérése felé haladjon, így a folyamat hatékonyabbá és fókuszáltabbá válik.
Íme egy példa arra, hogyan indíthat el egy utazási tervet egy céllal az ismétlés előtt egy utazási ügynök számára Pythonban:
Egy utazási ügynök szeretne személyre szabott nyaralási tervet készíteni egy ügyfél számára. A cél az, hogy egy olyan utazási útvonalat hozzon létre, amely maximalizálja az ügyfél elégedettségét a preferenciáik és a költségvetésük alapján.
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élda használat
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álás (__init__ metódus): A TravelAgent osztályt egy listával inicializáljuk, amely potenciális úti célokat tartalmaz, mindegyikhez név, ár és tevékenységtípus attribútumokkal.
A terv kiindítása (bootstrap_plan metódus): Ez a metódus létrehoz egy kezdeti utazási tervet az ügyfél preferenciái és költségvetése alapján. Végigmegy az úti célokon, és hozzáadja őket a tervhez, ha megfelelnek az ügyfél preferenciáinak és beleférnek a költségvetésbe.
Preferenciák egyeztetése (match_preferences metódus): Ez a metódus ellenőrzi, hogy egy úti cél megfelel-e az ügyfél preferenciáinak.
A terv ismétlése (iterate_plan metódus): Ez a metódus finomítja a kezdeti tervet, megpróbálva egy jobb egyezést találni minden úti cél helyett, figyelembe véve az ügyfél preferenciáit és a költségvetési korlátokat.
Költség számítása (calculate_cost metódus): Ez a metódus kiszámítja az aktuális terv összköltségét, beleértve egy potenciális új úti célt is.
A terv világos céllal történő kiindítása (például az ügyfél elégedettségének maximalizálása) és annak ismétlése révén az utazási ügynök személyre szabott és optimalizált utazási útitervet tud készíteni az ügyfél számára. Ez a megközelítés biztosítja, hogy az utazási terv az elejétől összhangban legyen az ügyfél preferenciáival és költségvetésével, és minden ismétléssel javuljon.
A nagy nyelvi modelleket (LLM-eket) rangsorolásra és pontozásra lehet használni azáltal, hogy értékelik a lekért dokumentumok vagy a generált válaszok relevanciáját és minőségét. Íme, hogyan működik:
Lekérés: Az első lekérési lépés egy jelölt dokumentumkészletet vagy válaszokat hoz létre a lekérdezés alapján.
Újrarrangsorolás: Az LLM értékeli ezeket a jelölteket, és azok relevanciája és minősége szerint újrarangsorolja őket. Ez a lépés biztosítja, hogy a legrelevánsabb és legmagasabb minőségű információ jelenjen meg először.
Pontozás: Az LLM pontokat rendel minden jelölthöz, tükrözve azok relevanciáját és minőségét. Ez segít a legjobb válasz vagy dokumentum kiválasztásában a felhasználónak.
Az LLM-ek rangsorolásra és pontozásra való kihasználásával a rendszer pontosabb és kontextuálisan relevánsabb információt tud nyújtani, javítva a felhasználói élményt.
Íme egy példa arra, hogyan használhat egy utazási ügynök egy nagy nyelvi modellt (LLM-et) az utazási célállomások újrarangsorolására és pontozására a felhasználói preferenciák alapján Pythonban:
Egy utazási ügynök a legjobb utazási célállomásokat szeretné ajánlani egy ügyfél számára a preferenciái alapján. Az LLM segít az úti célok újrarangsorolásában és pontozásában, hogy a legmegfelelőbb lehetőségek kerüljenek bemutatásra.
Íme, hogyan frissítheti a korábbi példát az Azure OpenAI szolgáltatás használatára:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Készíts egy promptot az Azure OpenAI számára
prompt = self.generate_prompt(preferences)
# Határozd meg a fejlécet és a terhelést a kéréshez
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Hívd meg az Azure OpenAI API-t a rangsorolt és értékelt célpontok megszerzéséhez
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Válaszd ki és add vissza a javaslatokat
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élda használat
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álás: A TravelAgent osztályt egy potenciális utazási célállomásokat tartalmazó lista alapján inicializálják, mindegyikhez név és leírás tartozik.
Ajánlások lekérése (get_recommendations metódus): Ez a metódus promptot generál az Azure OpenAI szolgáltatás számára a felhasználó preferenciái alapján, és HTTP POST kérést küld az Azure OpenAI API-nak, hogy újrarangsorolt és pontozott célállomásokat kapjon.
Prompt generálása (generate_prompt metódus): Ez a metódus összeállít egy promptot az Azure OpenAI-hoz, amely tartalmazza a felhasználó preferenciáit és az úti célok listáját. A prompt irányítja a modellt, hogy az adott preferenciák alapján újrarangsorolja és pontozza az úti célokat.
API hívás: A requests könyvtár használatával HTTP POST kérést küldenek az Azure OpenAI API végpontjára. A válasz tartalmazza az újrarangsorolt és pontozott úti célokat.
Példa használat: Az utazási ügynök összegyűjti a felhasználó preferenciáit (például városnézés és változatos kultúra iránti érdeklődés), majd az Azure OpenAI szolgáltatást használva újrarangsorolt és pontozott ajánlásokat kér az utazási célokról.
Ne felejtse el kicserélni a your_azure_openai_api_key részt a tényleges Azure OpenAI API kulcsára, és a https://your-endpoint.com/... részt az Azure OpenAI telepítésének tényleges végpont URL-jére.
Az LLM kihasználásával az újrarangsorolásra és pontozásra az utazási ügynök személyre szabottabb és relevánsabb utazási ajánlatokat tud nyújtani az ügyfeleknek, javítva az általános élményt.
A Retrieval-Augmented Generation (RAG) lehet egyszerre prompting technika és eszköz az AI ügynökök fejlesztésében. A kettő közötti különbség megértése segíthet hatékonyabban kihasználni a RAG-et a projektjeiben.
Mi ez?
Hogyan működik:
Példa utazási ügynöknél:
Mi ez?
Hogyan működik:
Példa utazási ügynöknél:
| Szempont | Prompting Technika | Eszköz |
|---|---|---|
| Kézi vs Automatikus | Kézi promptok megfogalmazása minden lekérdezéshez. | Automatizált folyamat a lekéréshez és generáláshoz. |
| Irányítás | Több kontrollt nyújt a lekérési folyamat felett. | Egyszerűsíti és automatizálja a lekérés és generálás folyamatát. |
| Rugalmasság | Egyedi promptokat tesz lehetővé specifikus igényekhez. | Hatékonyabb nagy volumenű alkalmazásokhoz. |
| Bonyolultság | Promptok kidolgozását és finomhangolását igényli. | Könnyebb integrálni AI ügynök architektúrájába. |
Példa a Prompting Technikára:
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élda Eszközre:
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)
A relevancia értékelése kulcsfontosságú az AI ügynökök teljesítményében. Biztosítja, hogy az ügynök által lekért és generált információk megfelelőek, pontosak és hasznosak legyenek a felhasználó számára. Nézzük meg, hogyan értékelhetjük a relevanciát AI ügynököknél, gyakorlati példákkal és technikákkal.
Példa:
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élda:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Adja vissza a 10 legrelevánsabb elemet
Példa:
def process_query(query):
# Használjon NLP-t a felhasználó lekérdezésének kulcsfontosságú információinak kinyeréséhez
processed_query = nlp(query)
return processed_query
Példa:
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
Íme egy gyakorlati példa arra, hogyan értékelheti a Travel Agent az utazási ajánlások relevanciáját:
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] # Visszaadja a 10 legrelevánsabb elemet
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élda használat
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)
A keresés szándékkal azt jelenti, hogy megérti és értelmezi a felhasználó lekérdezése mögött álló célt vagy szándékot, hogy a legrelevánsabb és leghasznosabb információt nyerje ki és generálja. Ez a megközelítés túlmutat a kulcsszavak egyszerű egyeztetésén, és a felhasználó valós igényeinek és kontextusának megértésére összpontosít.
Nézzük meg a Travel Agent példáját, hogy hogyan valósítható meg a keresés szándékkal.
Felhasználó preferenciáinak összegyűjtése
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Felhasználói szándék megértése
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"
Kontextus tudatosság
def analyze_context(query, user_history):
# Kombinálja a jelenlegi lekérdezést a felhasználó előzményeivel a kontextus megértéséhez
context = {
"current_query": query,
"user_history": user_history
}
return context
Keresés és eredmények személyre szabása
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élda keresési logika információs szándékra
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Példa keresési logika navigációs szándékra
results = search_web(query)
return results
def search_transaction(query, preferences):
# Példa keresési logika tranzakciós szándékra
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Példa személyre szabási logika
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Visszaadja a 10 legjobb személyre szabott eredményt
Használati példa
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)
A kód generáló ügynökök AI modelleket használnak kód írására és végrehajtására, komplex problémák megoldására és feladatok automatizálására.
A kód generáló ügynökök generatív AI modelleket használnak kód írására és futtatására. Ezek az ügynökök képesek összetett problémák megoldására, feladatok automatizálására és értékes betekintések nyújtására különböző programozási nyelveken kód generálásával és futtatásával.
Képzeld el, hogy tervezel egy kód generáló ügynököt. Így működhet:
Ebben a példában egy kód generáló ügynököt, az Utazási Ügynököt tervezünk, hogy segítsen a felhasználóknak utazásuk tervezésében kód generálásával és végrehajtásával. Ez az ügynök képes kezelni olyan feladatokat, mint utazási opciók lekérése, eredmények szűrése és útiterv összeállítása generatív AI segítségével.
Felhasználói preferenciák gyűjtése
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Adatlekéréshez kód generálása
def generate_code_to_fetch_data(preferences):
# Példa: Kód generálása a felhasználói preferenciák alapján történő járatkereséshez
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élda: Kód generálása szállodakereséshez
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Generált kód végrehajtása
def execute_code(code):
# A generált kód futtatása az exec használatával
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)
Útiterv generálása
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)
Visszajelzés alapján történő igazítás
def adjust_based_on_feedback(feedback, preferences):
# Az előnyöket a felhasználói visszajelzések alapján módosítani
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)
# A kódot az új előnyökkel újragenerálni és végrehajtani
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)
Az adattábla sémája valóban javíthatja a lekérdezés generálási folyamatát a környezettudatosság és érvelés alkalmazásával.
Íme egy példa arra, hogyan valósítható ez meg:
Itt egy frissített Python példa, amely ezeket a koncepciókat tartalmazza:
def adjust_based_on_feedback(feedback, preferences, schema):
# Felhasználói visszajelzések alapján igazítsa a beállításokat
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Sémára alapozott érvelés a kapcsolódó beállítások módosításához
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):
# Egyedi logika a beállítások igazításához séma és visszajelzés alapján
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):
# Kód generálása a frissített beállítások alapján történő járatinformáció lekéréséhez
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Kód generálása a frissített beállítások alapján történő szállodainformáció lekéréséhez
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Kód végrehajtásának szimulálása és tesztadatok visszaadása
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Úti terv készítése járatok, szállodák és látnivalók alapján
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Példa séma
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Példa használatra
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Kód újragenerálása és végrehajtása a frissített beállításokkal
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 szótár meghatározza, hogyan kell a visszajelzés alapján a preferenciákat módosítani. Tartalmaz mezőket, mint favorites és avoid, megfelelő beállításokkal.adjust_based_on_feedback metódus): Ez a metódus a felhasználói visszajelzés és a séma alapján módosítja a preferenciákat.adjust_based_on_environment metódus): Ez a metódus a séma és a visszajelzés alapján egyéni igazításokat végez.A rendszer környezettudatossá tétele és a séma alapján történő érvelés révén pontosabb és relevánsabb lekérdezések generálhatók, ami jobb utazási ajánlásokhoz és személyre szabottabb felhasználói élményhez vezet.
Az SQL (Structured Query Language) egy hatékony eszköz az adatbázisok kezelésére. Amikor lekérdezés-alapú generálás (RAG) megközelítés részeként használjuk, az SQL releváns adatokat szerez be az adatbázisokból, hogy információt szolgáltasson és válaszokat vagy műveleteket generáljon AI ügynökök számára. Vizsgáljuk meg, hogyan használható az SQL RAG technikaként az Utazási Ügynök kontextusában.
Példa: Egy adat elemző ügynök:
Felhasználói preferenciák gyűjtése
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
SQL lekérdezések generálása
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
SQL lekérdezések végrehajtása
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
Ajánlások generálása
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)
Repülőjárat lekérdezés
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Szálloda lekérdezés
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Látnivaló lekérdezés
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Az SQL lekérdezés-alapú generálás (RAG) technika alkalmazásával az AI ügynökök, például az Utazási Ügynök dinamikusan lekérhetik és felhasználhatják a releváns adatokat, hogy pontos és személyre szabott ajánlásokat nyújtsanak.
Ahhoz, hogy bemutassunk egy metakogníciós megvalósítást, hozzunk létre egy egyszerű ügynököt, amely visszatekint döntéshozatali folyamatára miközben problémát old meg. Ehhez a példához olyan rendszert készítünk, ahol az ügynök megpróbál optimalizálni egy szálloda választást, de ezután értékeli saját érvelését és stratégiáját módosítja, ha hibákat vagy szuboptimális döntéseket hoz.
Ezt egy alapvető példán keresztül szimuláljuk, ahol az ügynök ár és minőség kombinációja alapján választ szállodákat, majd “visszatekint” döntéseire és ennek megfelelően módosít.
Íme egy példa:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Elmenti a korábban kiválasztott szállodákat
self.corrected_choices = [] # Elmenti a javított választásokat
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Elérhető stratégiák
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]
# Tegyük fel, hogy van felhasználói visszajelzésünk, amely megmutatja, hogy az utolsó választás jó volt-e vagy sem
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# A stratégia módosítása, ha az előző választás nem volt kielégítő
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"
# Szimulál egy szállodalistát (ár és minőség)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Létrehoz egy ügynököt
agent = HotelRecommendationAgent()
# 1. lépés: Az ügynök a "legolcsóbb" stratégia alkalmazásával ajánl egy szállodát
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# 2. lépés: Az ügynök átgondolja a választást és szükség esetén módosítja a stratégiát
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# 3. lépés: Az ügynök újra ajánl, ezúttal a módosított stratégiát használva
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
A kulcs itt az ügynök képessége:
Ez egy egyszerű metakogníció forma, ahol a rendszer képes a belső visszacsatolás alapján módosítani érvelési folyamatát.
A metakogníció egy erőteljes eszköz, amely jelentősen javíthatja az AI ügynökök képességeit. Metakognitív folyamatok beépítésével intelligensebb, alkalmazkodóbb és hatékonyabb ügynököket tervezhetsz. Használd a további forrásokat a metakogníció izgalmas világának mélyebb felfedezéséhez az AI ügynökökben.
Csatlakozz a Microsoft Foundry Discord szerverhez, hogy más tanulókkal találkozhass, részt vehess konzultációkon, és megválaszoltathasd AI ügynökökkel kapcsolatos kérdéseidet.
Jogi nyilatkozat: Ez a dokumentum az AI fordítási szolgáltatás, a Co-op Translator segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.