(Kliknite na sliko zgoraj za ogled videa tega učnega gradiva)
Metakognicija pri AI agentih
Dobrodošli na lekciji o metakogniciji pri AI agentih! Ta poglavje je namenjeno začetnikom, ki jih zanima, kako lahko AI agenti razmišljajo o lastnih miselnih procesih. Ob koncu te lekcije boste razumeli ključne pojme in imeli praktične primere za uporabo metakognicije pri oblikovanju AI agentov.
Po končani lekciji boste lahko:
Metakognicija se nanaša na kognitivne procese višjega reda, ki vključujejo razmišljanje o lastnem razmišljanju. Za AI agente to pomeni, da lahko ocenjujejo in prilagajajo svoja dejanja na podlagi samospoznanja in preteklih izkušenj. Metakognicija ali “razmišljanje o razmišljanju” je pomemben koncept pri razvoju agentnih AI sistemov. Gre za to, da so AI sistemi zavestni svojih notranjih procesov in lahko spremljajo, regulirajo ter prilagajajo svoje vedenje. Tako kot mi, ko preberemo sobo ali pogledamo problem. Ta samospoznanja lahko pomagajo AI sistemom sprejemati boljše odločitve, odkrivati napake in izboljševati svojo zmogljivost skozi čas - ponovno povezuje z Turingovim testom in razpravo o tem, ali bo AI prevzel nadzor.
V okviru agentnih AI sistemov lahko metakognicija pomaga rešiti več izzivov, kot so:
Metakognicija ali “razmišljanje o razmišljanju” je kognitivni proces višjega reda, ki vključuje samospoznanje in samoregulacijo kognitivnih procesov. Na področju AI metakognicija omogoča agentom, da ocenjujejo in prilagajajo svoje strategije in dejanja, kar vodi do izboljšanih sposobnosti reševanja problemov in sprejemanja odločitev. Z razumevanjem metakognicije lahko oblikujete AI agente, ki so ne le pametnejši, ampak tudi bolj prilagodljivi in učinkoviti. V pravi metakogniciji bi AI jasno razmišljal o svojem lastnem sklepanju.
Primer: “Prednostno sem izbral cenejše lete, ker … morda zamujam neposredne lete, zato bom ponovno preveril.”. Sledenje temu, kako in zakaj je izbral določeno pot.
Metakognicija igra ključno vlogo pri oblikovanju AI agentov iz več razlogov:

Preden se poglobite v metakognitivne procese, je pomembno razumeti osnovne sestavne dele AI agenta. AI agent običajno sestavljajo:
Te sestavine delujejo skupaj in ustvarjajo “enoto strokovnosti”, ki lahko izvaja specifične naloge.
Primer: Razmislite o potovalnem agentu, storitvah agentov, ki ne le načrtujejo vaš dopust, ampak prilagajajo svojo pot na podlagi podatkov v realnem času in preteklih izkušenj uporabnikov.
Predstavljajte si, da razvijate potovalno agencijo, poganjano z AI. Ta agent, “Potovalni agent,” pomaga uporabnikom načrtovati počitnice. Za vključitev metakognicije mora Potovalni agent ocenjevati in prilagajati svoja dejanja na podlagi samospoznanja in preteklih izkušenj. Tako bi metakognicija lahko delovala:
Trenutna naloga je pomagati uporabniku načrtovati potovanje v Pariz.
Potovalni agent uporablja metakognicijo za ocenjevanje svoje uspešnosti in učenje iz preteklih izkušenj. Na primer:
Tukaj je poenostavljen primer kode Travel Agent, ki vključuje metakognicijo:
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):
# Iskanje letov, hotelov in znamenitosti glede na preference
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)
# Analiza povratnih informacij in prilagajanje prihodnjih priporočil
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Primer uporabe
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)
Z vključevanjem metakognicije lahko Potovalni agent ponudi bolj personalizirana in natančna potovalna priporočila, kar izboljša celotno uporabniško izkušnjo.
Načrtovanje je ključna sestavina vedenja AI agenta. Vključuje določanje korakov, potrebnih za dosego cilja, pri čemer upošteva trenutno stanje, vire in možne ovire.
Primer: Tu so koraki, ki jih Potovalni agent mora izvesti, da učinkovito pomaga uporabniku pri načrtovanju potovanja:
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)
# Primer uporabe v zahtevi za rezervacijo
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)
Najprej začnimo z razumevanjem razlike med RAG orodjem in predhodnim nalaganjem konteksta

RAG združuje sistem iskanja z generativnim modelom. Ko je podan poizvedba, sistem iskanja priskrbi ustrezne dokumente ali podatke iz zunanjega vira, pridobljene informacije pa se uporabijo za dopolnitev vhodnih podatkov v generativnem modelu. To pomaga modelu generirati bolj natančne in kontekstualno relevantne odgovore.
V RAG sistemu agent pridobi relevantne informacije iz baze znanja in jih uporabi za generiranje primernih odgovorov ali dejanj.
Korektivni pristop RAG je osredotočen na uporabo RAG tehnik za popravljanje napak in izboljšanje natančnosti AI agentov. To vključuje:
Razmislite o iskalnem agentu, ki pridobiva informacije z interneta za odgovarjanje na uporabniške poizvedbe. Korektivni pristop RAG lahko vključuje:
Korektivni RAG (Retrieval-Augmented Generation) izboljšuje AI sposobnost pridobivanja in generiranja informacij ob hkratnem popravljanju netočnosti. Poglejmo, kako lahko Potovalni agent uporabi korektivni pristop RAG za zagotavljanje bolj natančnih in relevantnih potovalnih priporočil.
To vključuje:
Primer:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Primer:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Primer:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Primer:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Primer:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Primer:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Primer:
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)
Tukaj je poenostavljen primer kode v Pythonu, ki vključuje korektivni pristop RAG v Potovalnem agentu:
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
# Primer uporabe
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)
Predpriprava konteksta vključuje nalaganje ustreznega konteksta ali ozadja v model pred obdelavo poizvedbe. To pomeni, da ima model dostop do teh informacij že od začetka, kar mu lahko pomaga ustvariti bolj informirane odgovore, ne da bi med procesom moral pridobivati dodatne podatke.
Tukaj je poenostavljen primer, kako bi lahko izgledala predpriprava konteksta za aplikacijo turističnega agenta v Pythonu:
class TravelAgent:
def __init__(self):
# Prednaloži priljubljene destinacije in njihove informacije
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):
# Pridobi informacije o destinaciji iz prednaloženega konteksta
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}."
# Primer uporabe
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Inicializacija (metoda __init__): Razred TravelAgent predhodno naloži slovar z informacijami o priljubljenih destinacijah, kot so Pariz, Tokio, New York in Sydney. Ta slovar vključuje podrobnosti, kot so država, valuta, jezik in glavni turistični objekti za vsako destinacijo.
Pridobivanje informacij (metoda get_destination_info): Ko uporabnik povpraša o določeni destinaciji, metoda get_destination_info pridobi ustrezne informacije iz predhodno naloženega slovarja konteksta.
S predhodnim nalaganjem konteksta lahko aplikacija turističnega agenta hitro odgovori na uporabnikove poizvedbe, ne da bi morala te informacije v realnem času pridobivati iz zunanjega vira. To naredi aplikacijo bolj učinkovito in odzivno.
Zagon načrta z določenim ciljem pomeni, da začnemo z jasnim namenom ali željenim rezultatom. Z definiranjem tega cilja vnaprej lahko model ta cilj uporablja kot vodilo skozi celoten iterativni proces. To pomaga zagotoviti, da se vsaka iteracija premika bližje doseganju želenega rezultata, s čimer je proces bolj učinkovit in osredotočen.
Tukaj je primer, kako bi lahko zagnali potovalni načrt z določenim ciljem pred iteracijo za turističnega agenta v Pythonu:
Turistični agent želi načrtovati prilagojen dopust za stranko. Cilj je ustvariti potovalni načrt, ki maksimira zadovoljstvo stranke glede na njihove želje in proračun.
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']
# Primer uporabe
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)
Inicializacija (metoda __init__): Razred TravelAgent se inicializira s seznamom potencialnih destinacij, od katerih ima vsaka atributa, kot sta ime, strošek in vrsta aktivnosti.
Zagon načrta (bootstrap_plan): Ta metoda ustvari začetni potovalni načrt glede na želje in proračun stranke. Prebere seznam destinacij in jih doda v načrt, če ustrezajo strankinim željam in ustrezajo proračunu.
Ujemanje preferenc (match_preferences): Ta metoda preveri, ali destinacija ustreza željam stranke.
Iteracija načrta (iterate_plan): Ta metoda izboljša začetni načrt tako, da poskuša vsako destinacijo zamenjati z boljšo izbiro glede na želje in omejitve proračuna stranke.
Izračun stroškov (calculate_cost): Ta metoda izračuna skupne stroške trenutnega načrta, vključno s potencialno novo destinacijo.
Z zagonom načrta z jasnim ciljem (npr. maksimiranje zadovoljstva stranke) in iteracijo za izboljšavo načrta lahko turistični agent ustvari prilagojen in optimiziran potovalni načrt za stranko. Ta pristop zagotavlja, da se potovalni načrt že od začetka uskladi z željami in proračunom stranke ter se izboljšuje z vsako iteracijo.
Veliki jezikovni modeli (LLM) se lahko uporabijo za ponovno razvrščanje in ocenjevanje tako, da ocenjujejo relevantnost in kakovost pridobljenih dokumentov ali generiranih odgovorov. Tako deluje:
Pridobivanje: Začetni korak pridobivanja dobi nabor kandidatnih dokumentov ali odgovorov na podlagi poizvedbe.
Ponovno razvrščanje: LLM oceni te kandidate in jih ponovno razvrsti glede na njihovo relevantnost in kakovost. Ta korak zagotavlja, da se najprej predstavi najbolj relevantne in kakovostne informacije.
Ocenjevanje: LLM dodeli ocene za vsakega kandidata, ki odražajo njihovo relevantnost in kakovost. To pomaga izbrati najboljši odgovor ali dokument za uporabnika.
Z uporabo LLM za ponovno razvrščanje in ocenjevanje lahko sistem zagotovi natančnejše in kontekstualno relevantne informacije, izboljšuje celotno uporabniško izkušnjo.
Tukaj je primer, kako lahko turistični agent uporabi velik jezikovni model (LLM) za ponovno razvrščanje in ocenjevanje potovalnih destinacij na podlagi uporabnikovih želja v Pythonu:
Turistični agent želi priporočiti najboljše potovalne destinacije stranki glede na njihove želje. LLM bo pomagal ponovno razvrstiti in oceniti destinacije, da se zagotovi predstavitev najbolj relevantnih možnosti.
Tukaj je, kako lahko posodobite prejšnji primer za uporabo Azure OpenAI storitev:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Ustvari poziv za Azure OpenAI
prompt = self.generate_prompt(preferences)
# Določi glave in vsebino za zahtevo
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Pokliči Azure OpenAI API za pridobitev ponovno razvrščenih in ocenjenih destinacij
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Izvleci in vrni priporočila
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
# Primer uporabe
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)
Inicializacija: Razred TravelAgent je inicializiran s seznamom potencialnih potovalnih destinacij, od katerih ima vsaka atributa, kot sta ime in opis.
Pridobivanje priporočil (metoda get_recommendations): Ta metoda generira poziv za Azure OpenAI storitev na podlagi uporabnikovih želja in pošlje HTTP POST zahtevek na Azure OpenAI API za ponovno razvrščanje in ocenjevanje destinacij.
Generiranje poziva (metoda generate_prompt): Ta metoda sestavi poziv za Azure OpenAI, ki vključuje želje uporabnika in seznam destinacij. Poziv usmerja model, da ponovno razvrsti in oceni destinacije na podlagi podanih želja.
Klic API: Knjižnica requests se uporablja za pošiljanje HTTP POST zahtevka na Azure OpenAI API. Odziv vsebuje ponovno razvrščene in ocenjene destinacije.
Primer uporabe: Turistični agent zbere želje uporabnika (npr. zanimanje za ogled znamenitosti in raznoliko kulturo) in uporabi Azure OpenAI storitev za pridobitev ponovno razvrščenih in ocenjenih priporočil za potovalne destinacije.
Preverite, da zamenjate your_azure_openai_api_key z vašim dejanskim Azure OpenAI API ključem in https://your-endpoint.com/... z dejansko URL končne točke vaše Azure OpenAI namestitve.
Z izrabo LLM za ponovno razvrščanje in ocenjevanje lahko turistični agent strankam zagotovi bolj personalizirana in relevantna potovalna priporočila, s čimer izboljša njihovo splošno izkušnjo.
Retrieval-Augmented Generation (RAG) je lahko tako tehnika pozivanja kot orodje pri razvoju AI agentov. Razumevanje razlike med njima vam lahko pomaga učinkoviteje izkoristiti RAG v vaših projektih.
Kaj je to?
Kako deluje:
Primer v turističnem agentu:
Kaj je to?
Kako deluje:
Primer v turističnem agentu:
| Vidik | Tehnika pozivanja | Orodje |
|---|---|---|
| Ročno vs avtomatsko | Ročno oblikovanje pozivov za vsako poizvedbo. | Avtomatiziran proces pridobivanja in generiranja. |
| Nadzor | Ponuja več nadzora nad procesom pridobivanja. | Poenostavlja in avtomatizira pridobivanje in generiranje. |
| Fleksibilnost | Omogoča prilagojene pozive glede na specifične potrebe. | Bolj učinkovito za obsežne implementacije. |
| Zapletenost | Zahteva oblikovanje in prilagajanje pozivov. | Lažje za integracijo v arhitekturo AI agenta. |
Primer tehnike pozivanja:
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)
Primer orodja:
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)
Ovrednotenje relevantnosti je ključen vidik delovanja AI agenta. Zagotavlja, da so informacije, pridobljene in generirane s strani agenta, primerne, točne in koristne za uporabnika. Oglejmo si, kako ovrednotiti relevantnost v AI agentih, vključno s praktičnimi primeri in tehnikami.
Primer:
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
Primer:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Vrni prvih 10 relevantnih elementov
Primer:
def process_query(query):
# Uporabite NPL za izločanje ključnih informacij iz uporabnikovega poizvedovanja
processed_query = nlp(query)
return processed_query
Primer:
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
Tukaj je praktičen primer, kako lahko turistični agent ovrednoti relevantnost potovalnih priporočil:
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] # Vrni prvih 10 ustreznih elementov
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
# Primer uporabe
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)
Iskanje z namenom vključuje razumevanje in interpretacijo osnovnega namena ali cilja uporabnikove poizvedbe za pridobitev in generiranje najbolj relevantnih in koristnih informacij. Ta pristop presega zgolj ujemanje ključnih besed in se osredotoča na razumevanje dejanskih potreb in konteksta uporabnika.
Poglejmo si primer turističnega agenta, da vidimo, kako se lahko implementira iskanje z namenom.
Zbiranje želja uporabnika
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Razumevanje uporabnikovega namena
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"
Zavedanje konteksta
def analyze_context(query, user_history):
# Združite trenutni poizvedbo z uporabnikovo zgodovino za razumevanje konteksta
context = {
"current_query": query,
"user_history": user_history
}
return context
Iskanje in personalizacija rezultatov
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):
# Primer iskalne logike za informacijsko namero
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Primer iskalne logike za navigacijsko namero
results = search_web(query)
return results
def search_transaction(query, preferences):
# Primer iskalne logike za transakcijsko namero
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Primer logike personalizacije
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Vrni top 10 personaliziranih rezultatov
Primer uporabe
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)
Agentje za generiranje kode uporabljajo AI modele za pisanje in izvajanje kode, reševanje kompleksnih problemov in avtomatizacijo nalog.
Agentje za generiranje kode uporabljajo generativne AI modele za pisanje in izvajanje kode. Ti agentje lahko rešujejo kompleksne probleme, avtomatizirajo naloge in ponujajo dragocene vpoglede z ustvarjanjem in izvajanjem kode v različnih programskih jezikih.
Predstavljajte si, da načrtujete agenta za generiranje kode. Tako bi lahko deloval:
V tem primeru bomo oblikovali agenta za generiranje kode, Potovalna agencija, ki uporabnikom pomaga pri načrtovanju potovanja z ustvarjanjem in izvajanjem kode. Ta agent lahko obvladuje naloge, kot so pridobivanje potovalnih možnosti, filtriranje rezultatov in sestavljanje itinerarja z uporabo generativne AI.
Zbiranje uporabniških preferenc
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generiranje kode za pridobivanje podatkov
def generate_code_to_fetch_data(preferences):
# Primer: Ustvari kodo za iskanje letov glede na uporabniške preference
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):
# Primer: Ustvari kodo za iskanje hotelov
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Izvajanje ustvarjene kode
def execute_code(code):
# Zaženi generirano kodo z uporabo 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)
Generiranje itinerarja
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)
Prilagajanje na podlagi povratnih informacij
def adjust_based_on_feedback(feedback, preferences):
# Prilagodite nastavitve glede na povratne informacije uporabnika
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)
# Ponovno ustvarite in izvedite kodo z posodobljenimi nastavitvami
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 podlagi sheme tabele lahko res izboljšamo postopek generiranja poizvedb z izkoriščanjem okoljske ozaveščenosti in sklepanja.
Tukaj je primer, kako to lahko storimo:
Tukaj je posodobljen primer kode v Pythonu, ki vključuje te koncepte:
def adjust_based_on_feedback(feedback, preferences, schema):
# Prilagodite nastavitve na podlagi povratnih informacij uporabnikov
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Razmišljanje na podlagi sheme za prilagoditev drugih povezanih nastavitev
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):
# Po meri izdelana logika za prilagoditev nastavitev na podlagi sheme in povratnih informacij
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):
# Ustvarite kodo za pridobivanje podatkov o letih na podlagi posodobljenih nastavitev
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Ustvarite kodo za pridobivanje podatkov o hotelih na podlagi posodobljenih nastavitev
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulirajte izvajanje kode in vrnite lažne podatke
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Ustvarite načrt poti na podlagi letov, hotelov in znamenitosti
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Primer sheme
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Primer uporabe
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Ponovno ustvarite in izvedite kodo s posodobljenimi nastavitvami
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 določa, kako je treba prilagoditi preference glede na povratne informacije. Vsebuje polja, kot so favorites in avoid s pripadajočimi prilagoditvami.adjust_based_on_feedback metoda): Ta metoda prilagaja preference glede na povratne informacije uporabnika in shemo.adjust_based_on_environment metoda): Ta metoda prilagaja prilagoditve na podlagi sheme in povratnih informacij.S tem, ko sistem naredimo okoljsko ozaveščen in sklepamo na podlagi sheme, lahko generira natančnejše in bolj relevantne poizvedbe, kar vodi do boljših potovalnih priporočil in bolj personalizirane uporabniške izkušnje.
SQL (Structured Query Language) je močno orodje za interakcijo s podatkovnimi bazami. Ko se uporablja kot del pristopa Retrieval-Augmented Generation (RAG), lahko SQL pridobi relevantne podatke iz podatkovnih baz za informiranje in generiranje odzivov ali dejanj v AI agentih. Raziskujmo, kako se lahko SQL uporablja kot RAG tehnika v kontekstu Potovalne agencije.
Primer: Agent za analizo podatkov:
Zbiranje uporabniških preferenc
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generiranje SQL poizvedb
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
Izvajanje SQL poizvedb
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
Generiranje priporočil
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)
Poizvedba za let
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Poizvedba za hotel
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Poizvedba za znamenitost
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Z uporabo SQL kot dela tehnike Retrieval-Augmented Generation (RAG), AI agenti kot je Potovalna agencija lahko dinamično pridobivajo in uporabljajo relevantne podatke za zagotavljanje natančnih in personaliziranih priporočil.
Za demonstracijo implementacije metakognicije ustvarimo preprostega agenta, ki razmišlja o svojem procesu odločanja med reševanjem problema. V tem primeru bomo zgradili sistem, kjer agent poskuša optimizirati izbiro hotela, nato pa oceni svoje sklepanje in prilagodi strategijo, ko naredi napake ali podoptimalne izbire.
To bomo simulirali z osnovnim primerom, kjer agent izbira hotele na podlagi kombinacije cene in kakovosti, vendar “razmišlja” o svojih odločitvah in se temu primerno prilagodi.
Tukaj je primer:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Shrani prej izbrane hotele
self.corrected_choices = [] # Shrani popravljene izbire
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Na voljo strategije
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]
# Predpostavimo, da imamo povratne informacije uporabnika, ki nam povedo, ali je bila zadnja izbira dobra ali ne
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Prilagodi strategijo, če je bila prejšnja izbira nezadovoljiva
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"
# Simulira seznam hotelov (cena in kakovost)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Ustvari agenta
agent = HotelRecommendationAgent()
# Korak 1: Agent priporoči hotel z uporabo strategije "najcenejši"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Korak 2: Agent premisli o izbiri in po potrebi prilagodi strategijo
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Korak 3: Agent ponovno priporoči, tokrat z uporabljeno prilagojeno strategijo
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Ključno tukaj je sposobnost agenta, da:
To je preprosta oblika metakognicije, kjer sistem lahko prilagodi svoj proces sklepanja na podlagi notranjih povratnih informacij.
Metakognicija je močno orodje, ki lahko bistveno izboljša sposobnosti AI agentov. Z vključitvijo metakognitivnih procesov lahko oblikujemo agentje, ki so bolj inteligentni, prilagodljivi in učinkoviti. Uporabite dodatne vire, da dalje raziščete fascinanten svet metakognicije v AI agentih.
Pridružite se Microsoft Foundry Discord in se povežite z drugimi učenci, udeležite se ur ure in dobite odgovore na vprašanja o AI agentih.
Vzorec večagentnega oblikovanja
Omejitev odgovornosti: Ta dokument je bil preveden z uporabo AI prevajalske storitve Co-op Translator. Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda.