(Faceți clic pe imaginea de mai sus pentru a vizualiza videoclipul acestei lecții)
Metacogniție în agenții AI
Bine ați venit la lecția despre metacogniție în agenții AI! Acest capitol este conceput pentru începători care sunt curioși despre cum agenții AI își pot reflecta propriile procese de gândire. La sfârșitul acestei lecții, veți înțelege conceptele cheie și veți fi echipați cu exemple practice pentru a aplica metacogniția în proiectarea agenților AI.
După finalizarea acestei lecții, veți putea:
Metacogniția se referă la procesele cognitive de ordin superior care implică gândirea despre propria gândire. Pentru agenții AI, asta înseamnă a putea evalua și ajusta acțiunile pe baza autocunoașterii și a experiențelor trecute. Metacogniția, sau „gândirea despre gândire”, este un concept important în dezvoltarea sistemelor agentice AI. Implică ca sistemele AI să fie conștiente de propriile procese interne și să poată monitoriza, regla și adapta comportamentul în consecință. La fel cum facem și noi atunci când citim atmosfera sau privim o problemă. Această autocunoaștere poate ajuta sistemele AI să ia decizii mai bune, să identifice erori și să își îmbunătățească performanța în timp — reîntorcându-ne din nou la testul Turing și la dezbaterea dacă AI va prelua controlul.
În contextul sistemelor agentice AI, metacogniția poate ajuta la abordarea mai multor provocări, cum ar fi:
Metacogniția, sau „gândirea despre gândire”, este un proces cognitiv de ordin superior care implică conștientizarea de sine și autoreglarea proceselor cognitive proprii. În domeniul AI, metacogniția îi permite agenților să își evalueze și să își adapteze strategiile și acțiunile, conducând la îmbunătățirea capacităților de rezolvare a problemelor și de luare a deciziilor. Prin înțelegerea metacogniției, puteți proiecta agenți AI care nu sunt doar mai inteligenți, dar și mai adaptabili și eficienți. În metacogniția autentică, ați vedea AI-ul raționând în mod explicit despre propriul său raționament.
Exemplu: „Am prioritizat zboruri mai ieftine pentru că… s-ar putea să ratez zboruri directe, așa că voi verifica din nou.”
Urmărirea modului sau motivului pentru care a ales o anumită rută.
Metacogniția joacă un rol crucial în proiectarea agenților AI din mai multe motive:

Înainte de a aprofunda procesele metacognitive, este esențial să înțelegem componentele de bază ale unui agent AI. Un agent AI constă de obicei din:
Aceste componente lucrează împreună pentru a crea o „unitate de expertiză” care poate îndeplini sarcini specifice.
Exemplu: Luați în considerare un agent de călătorii, servicii de agenție care nu doar îți planifică vacanța, dar își ajustează și traseul pe baza datelor în timp real și a experiențelor anterioare ale clienților.
Imaginați-vă că proiectați un serviciu de agenție de călătorii bazat pe AI. Acest agent, „Agent de călătorii”, îi asistă pe utilizatori în planificarea vacanțelor. Pentru a încorpora metacogniția, Agentul de călătorii trebuie să evalueze și să își ajusteze acțiunile pe baza autocunoașterii și a experiențelor trecute. Iată cum ar putea juca un rol metacogniția:
Sarcina curentă este să ajute un utilizator să planifice o călătorie la Paris.
Agentul de călătorii folosește metacogniția pentru a-și evalua performanța și a învăța din experiențele trecute. De exemplu:
Iată un exemplu simplificat despre cum ar putea arăta codul Agentului de călătorii atunci când încorporează metacogniția:
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):
# Caută zboruri, hoteluri și atracții în funcție de preferințe
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)
# Analizează feedback-ul și ajustează recomandările viitoare
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Exemplu de utilizare
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)
Prin încorporarea metacogniției, Agentul de călătorii poate oferi recomandări de călătorie mai personalizate și mai precise, îmbunătățind experiența generală a utilizatorului.
Planificarea este o componentă critică a comportamentului unui agent AI. Aceasta implică conturarea pașilor necesari pentru a atinge un scop, luând în considerare starea curentă, resursele și posibilele obstacole.
Exemplu: Iată pașii pe care Agentul de călătorii trebuie să îi urmeze pentru a ajuta un utilizator să își planifice călătoria în mod eficient:
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)
# Exemplu de utilizare într-o cerere de huiduire
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)
În primul rând, să începem prin a înțelege diferența dintre RAG Tool și Încărcarea preemptivă a contextului

RAG combină un sistem de recuperare cu un model generativ. Când se face o interogare, sistemul de recuperare aduce documente sau date relevante dintr-o sursă externă, iar aceste informații recuperate sunt folosite pentru a augmenta inputul către modelul generativ. Acest lucru ajută modelul să genereze răspunsuri mai precise și relevante din punct de vedere al contextului.
Într-un sistem RAG, agentul recuperează informații relevante dintr-o bază de cunoștințe și le folosește pentru a genera răspunsuri sau acțiuni adecvate.
Abordarea RAG corectivă se concentrează pe utilizarea tehnicilor RAG pentru a corecta erorile și a îmbunătăți acuratețea agenților AI. Aceasta implică:
Luați în considerare un agent de căutare care recuperează informații de pe web pentru a răspunde la interogările utilizatorilor. Abordarea RAG corectivă ar putea implica:
RAG corectiv (Retrieval-Augmented Generation) îmbunătățește capacitatea unui AI de a recupera și genera informații corecte, corectând orice inexactități. Haideți să vedem cum poate Agentul de călătorii să folosească abordarea RAG corectivă pentru a oferi recomandări de călătorie mai precise și mai relevante.
Aceasta implică:
Exemplu:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Exemplu:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Exemplu:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Exemplu:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Exemplu:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Exemplu:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Exemplu:
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)
Iată un exemplu simplificat de cod Python care încorporează abordarea RAG corectivă în Agentul de călătorii:
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
# Exemplu de utilizare
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
new_itinerary = travel_agent.adjust_based_on_feedback(feedback)
print("Updated Itinerary:", new_itinerary)
Pre-emptive Context Load presupune încărcarea contextului relevant sau a informațiilor de fundal în model înainte de procesarea unei interogări. Aceasta înseamnă că modelul are acces la aceste informații încă de la început, ceea ce îl poate ajuta să genereze răspunsuri mai bine informate fără a fi nevoie să recupereze date suplimentare în timpul procesului.
Here’s a simplified example of how a pre-emptive context load might look for a travel agent application in Python:
class TravelAgent:
def __init__(self):
# Preîncărcați destinațiile populare și informațiile lor
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):
# Obține informațiile despre destinație din contextul preîncărcat
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}."
# Exemplu de utilizare
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Initialization (__init__ method): Clasa TravelAgent preîncarcă un dicționar care conține informații despre destinații populare precum Paris, Tokyo, New York și Sydney. Acest dicționar include detalii precum țara, moneda, limba și atracțiile principale pentru fiecare destinație.
Retrieving Information (get_destination_info method): Când un utilizator întreabă despre o anumită destinație, metoda get_destination_info preia informațiile relevante din dicționarul de context preîncărcat.
Prin preîncărcarea contextului, aplicația pentru agenți de turism poate răspunde rapid la întrebările utilizatorilor fără a trebui să recupereze aceste informații dintr-o sursă externă în timp real. Acest lucru face aplicația mai eficientă și mai receptivă.
Bootstrapping-ul unui plan cu un obiectiv presupune să începi cu un obiectiv clar sau un rezultat dorit în minte. Prin definirea acestui obiectiv de la început, modelul îl poate folosi ca principiu călăuzitor pe parcursul procesului iterativ. Acest lucru ajută la asigurarea că fiecare iterație se apropie de atingerea rezultatului dorit, făcând procesul mai eficient și mai concentrat.
Here’s an example of how you might bootstrap a travel plan with a goal before iterating for a travel agent in Python:
Un agent de turism dorește să planifice o vacanță personalizată pentru un client. Obiectivul este să creeze un itinerar de călătorie care maximizează satisfacția clientului pe baza preferințelor și bugetului acestuia.
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']
# Exemplu de utilizare
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)
Initialization (__init__ method): Clasa TravelAgent este inițializată cu o listă de destinații potențiale, fiecare având atribute precum nume, cost și tip de activitate.
Bootstrapping the Plan (bootstrap_plan method): Această metodă creează un plan inițial de călătorie pe baza preferințelor și bugetului clientului. Iterează prin lista de destinații și le adaugă în plan dacă se potrivesc cu preferințele clientului și se încadrează în buget.
Matching Preferences (match_preferences method): Această metodă verifică dacă o destinație se potrivește cu preferințele clientului.
Iterating the Plan (iterate_plan method): Această metodă rafinează planul inițial încercând să înlocuiască fiecare destinație din plan cu o opțiune mai bună, ținând cont de preferințele clientului și de constrângerile bugetare.
Calculating Cost (calculate_cost method): Această metodă calculează costul total al planului curent, inclusiv o posibilă destinație nouă.
Prin inițializarea planului cu un obiectiv clar (de ex., maximizarea satisfacției clientului) și iterând pentru a rafina planul, agentul de turism poate crea un itinerar personalizat și optimizat pentru client. Această abordare asigură că planul de călătorie se aliniază cu preferințele și bugetul clientului încă de la început și se îmbunătățește la fiecare iterație.
Modelele Mari de Limbaj (LLMs) pot fi folosite pentru reordonare și scorare prin evaluarea relevanței și calității documentelor recuperate sau a răspunsurilor generate. Iată cum funcționează:
Retrieval: Pasul inițial de recuperare extrage un set de documente candidate sau răspunsuri pe baza interogării.
Re-ranking: LLM-ul evaluează aceste candidați și le reordonează pe baza relevanței și calității lor. Acest pas asigură că cele mai relevante și de calitate informații sunt prezentate primele.
Scoring: LLM-ul atribuie scoruri fiecărui candidat, reflectând relevanța și calitatea acestuia. Acest lucru ajută la selectarea celui mai bun răspuns sau document pentru utilizator.
Prin valorificarea LLM-urilor pentru reordonare și scorare, sistemul poate oferi informații mai precise și contextual relevante, îmbunătățind experiența generală a utilizatorului.
Here’s an example of how a travel agent might use a Large Language Model (LLM) for re-ranking and scoring travel destinations based on user preferences in Python:
Un agent de turism dorește să recomande cele mai bune destinații de călătorie unui client pe baza preferințelor acestuia. LLM-ul va ajuta la reordonarea și scorarea destinațiilor pentru a se asigura că cele mai relevante opțiuni sunt prezentate.
Here’s how you can update the previous example to use Azure OpenAI Services:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Generează un prompt pentru Azure OpenAI
prompt = self.generate_prompt(preferences)
# Definește anteturile și corpul cererii
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Apelează API-ul Azure OpenAI pentru a obține destinațiile reordonate și evaluate
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extrage și returnează recomandările
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
# Exemplu de utilizare
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)
Initialization: Clasa TravelAgent este inițializată cu o listă de destinații potențiale de călătorie, fiecare având atribute precum nume și descriere.
Getting Recommendations (get_recommendations method): Această metodă generează un prompt pentru serviciul Azure OpenAI pe baza preferințelor utilizatorului și face o cerere HTTP POST către API-ul Azure OpenAI pentru a obține destinațiile reordonate și evaluate cu scoruri.
Generating Prompt (generate_prompt method): Această metodă construiește un prompt pentru Azure OpenAI, incluzând preferințele utilizatorului și lista de destinații. Promptul ghidează modelul să reordoneze și să acorde scoruri destinațiilor pe baza preferințelor furnizate.
API Call: Biblioteca requests este folosită pentru a face o cerere HTTP POST către endpoint-ul API Azure OpenAI. Răspunsul conține destinațiile reordonate și cu scoruri.
Example Usage: Agentul de turism colectează preferințele utilizatorului (de ex., interes pentru vizitare obiective turistice și cultură diversă) și folosește serviciul Azure OpenAI pentru a obține recomandări reordonate și cu scoruri pentru destinațiile de călătorie.
Asigură-te să înlocuiești your_azure_openai_api_key cu cheia ta reală Azure OpenAI API și https://your-endpoint.com/... cu URL-ul real al endpoint-ului implementării tale Azure OpenAI.
Prin valorificarea LLM-ului pentru reordonare și scorare, agentul de turism poate oferi recomandări de călătorie mai personalizate și relevante pentru clienți, îmbunătățindu-le experiența generală.
Retrieval-Augmented Generation (RAG) poate fi atât o tehnică de prompting, cât și un instrument în dezvoltarea agenților AI. Înțelegerea distincției dintre cele două te poate ajuta să valorifici RAG mai eficient în proiectele tale.
Ce este?
Cum funcționează:
Exemplu în Agentul de turism:
Ce este?
Cum funcționează:
Exemplu în Agentul de turism:
| Aspect | Prompting Technique | Tool |
|---|---|---|
| Manual vs Automatic | Formulare manuală a prompturilor pentru fiecare interogare. | Proces automatizat pentru recuperare și generare. |
| Control | Oferă mai mult control asupra procesului de recuperare. | Simplifică și automatizează recuperarea și generarea. |
| Flexibility | Permite prompturi personalizate în funcție de nevoi specifice. | Mai eficient pentru implementări la scară largă. |
| Complexity | Necesită crearea și ajustarea prompturilor. | Mai ușor de integrat în arhitectura unui agent AI. |
Exemplu de tehnică de prompting:
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)
Exemplu de instrument:
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)
Evaluarea relevanței este un aspect crucial al performanței unui agent AI. Aceasta asigură că informațiile recuperate și generate de agent sunt adecvate, exacte și utile pentru utilizator. Să vedem cum se poate evalua relevanța în agenții AI, inclusiv exemple practice și tehnici.
Exemplu:
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
Exemplu:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Returnează primele 10 elemente relevante
Exemplu:
def process_query(query):
# Folosește NLP pentru a extrage informații cheie din interogarea utilizatorului
processed_query = nlp(query)
return processed_query
Exemplu:
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
Iată un exemplu practic despre cum Travel Agent poate evalua relevanța recomandărilor de călătorie:
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] # Returnează primele 10 elemente relevante
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
# Exemplu de utilizare
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)
Căutarea cu intenție implică înțelegerea și interpretarea scopului sau obiectivului din spatele interogării unui utilizator pentru a recupera și genera cele mai relevante și utile informații. Această abordare depășește simplele potriviri de cuvinte cheie și se concentrează pe înțelegerea nevoilor reale și a contextului utilizatorului.
Să luăm Agent de turism ca exemplu pentru a vedea cum poate fi implementată căutarea cu intenție.
Colectarea preferințelor utilizatorului
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Înțelegerea intenției utilizatorului
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):
# Combină interogarea curentă cu istoricul utilizatorului pentru a înțelege contextul
context = {
"current_query": query,
"user_history": user_history
}
return context
Căutare și personalizare a rezultatelor
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):
# Exemplu de logică de căutare pentru intenție informațională
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Exemplu de logică de căutare pentru intenția de navigare
results = search_web(query)
return results
def search_transaction(query, preferences):
# Exemplu de logică de căutare pentru intenția tranzacțională
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Exemplu de logică de personalizare
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Returnează primele 10 rezultate personalizate
Exemplu de utilizare
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)
Agenții care generează cod folosesc modele AI pentru a scrie și executa cod, rezolvând probleme complexe și automatizând sarcini.
Agenții care generează cod folosesc modele generative AI pentru a scrie și executa cod. Acești agenți pot rezolva probleme complexe, automatiza sarcini și oferi perspective valoroase prin generarea și rularea de cod în diverse limbaje de programare.
Imaginați-vă că proiectați un agent care generează cod. Iată cum ar putea funcționa:
În acest exemplu, vom proiecta un agent care generează cod, Travel Agent, pentru a ajuta utilizatorii în planificarea călătoriilor, generând și executând cod. Acest agent poate gestiona sarcini precum preluarea opțiunilor de călătorie, filtrarea rezultatelor și compilarea unui itinerariu folosind AI generativ.
Colectarea preferințelor utilizatorului
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generarea codului pentru preluarea datelor
def generate_code_to_fetch_data(preferences):
# Exemplu: Generează cod pentru a căuta zboruri în funcție de preferințele utilizatorului
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):
# Exemplu: Generează cod pentru a căuta hoteluri
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Executarea codului generat
def execute_code(code):
# Execută codul generat folosind 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)
Generarea itinerariului
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)
Ajustarea pe baza feedback-ului
def adjust_based_on_feedback(feedback, preferences):
# Ajustează preferințele în funcție de feedback-ul utilizatorului
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)
# Regenerază și execută codul cu preferințele actualizate
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)
Bazarea pe schema tabelului poate într-adevăr îmbunătăți procesul de generare a interogărilor prin valorificarea conștientizării mediului și a raționamentului.
Iată un exemplu despre cum se poate realiza acest lucru:
Iată un exemplu actualizat de cod Python care încorporează aceste concepte:
def adjust_based_on_feedback(feedback, preferences, schema):
# Ajustează preferințele pe baza feedback-ului utilizatorului
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Raționament bazat pe schemă pentru a ajusta alte preferințe asociate
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):
# Logică personalizată pentru a ajusta preferințele pe baza schemei și a feedback-ului
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):
# Generează cod pentru a prelua date despre zboruri în funcție de preferințele actualizate
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generează cod pentru a prelua date despre hoteluri în funcție de preferințele actualizate
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulează execuția codului și returnează date simulate
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Generează itinerariul pe baza zborurilor, hotelurilor și atracțiilor
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Exemplu de schemă
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Exemplu de utilizare
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Regenerază și execută codul cu preferințele actualizate
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 definește cum ar trebui ajustate preferințele pe baza feedback-ului. Include câmpuri precum favorites și avoid, cu ajustările corespunzătoare.adjust_based_on_feedback): Această metodă ajustează preferințele pe baza feedback-ului utilizatorului și a schemei.adjust_based_on_environment): Această metodă personalizează ajustările pe baza schemei și a feedback-ului.Făcând sistemul conștient de mediul său și raționând pe baza schemei, acesta poate genera interogări mai exacte și relevante, conducând la recomandări de călătorie mai bune și o experiență de utilizator mai personalizată.
SQL (Structured Query Language) este un instrument puternic pentru interacțiunea cu bazele de date. Atunci când este folosit ca parte a unei abordări Retrieval-Augmented Generation (RAG), SQL poate prelua date relevante din baze de date pentru a informa și genera răspunsuri sau acțiuni în agenții AI. Să explorăm cum poate fi folosit SQL ca tehnică RAG în contextul unui agent de turism.
Exemplu: Un agent de analiză a datelor:
Colectarea preferințelor utilizatorului
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generarea interogărilor SQL
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
Executarea interogărilor SQL
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
Generarea recomandărilor
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)
Interogare zboruri
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Interogare hoteluri
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Interogare atracții
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Prin valorificarea SQL ca parte a tehnicii Retrieval-Augmented Generation (RAG), agenți AI precum agentul de turism pot prelua și utiliza dinamic date relevante pentru a oferi recomandări exacte și personalizate.
Pentru a demonstra o implementare a metacogniției, să creăm un agent simplu care reflectă asupra procesului său de luare a deciziilor în timp ce rezolvă o problemă. Pentru acest exemplu, vom construi un sistem în care un agent încearcă să optimizeze alegerea unui hotel, dar apoi își evaluează propriul raționament și își ajustează strategia când face erori sau alegeri suboptimale.
Vom simula acest lucru folosind un exemplu de bază în care agentul selectează hoteluri pe baza unei combinații între preț și calitate, dar va “reflecta” asupra deciziilor sale și se va ajusta în consecință.
Iată un exemplu:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Stochează hotelurile alese anterior
self.corrected_choices = [] # Stochează alegerile corectate
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Strategii disponibile
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]
# Să presupunem că avem feedback de la utilizator care ne spune dacă ultima alegere a fost bună sau nu
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Ajustează strategia dacă alegerea precedentă a fost nesatisfăcătoare
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"
# Simulează o listă de hoteluri (preț și calitate)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Creează un agent
agent = HotelRecommendationAgent()
# Pasul 1: Agentul recomandă un hotel folosind strategia "cel mai ieftin"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Pasul 2: Agentul analizează alegerea și ajustează strategia dacă este necesar
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Pasul 3: Agentul recomandă din nou, de data aceasta folosind strategia ajustată
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Elementul cheie aici este capacitatea agentului de a:
Aceasta este o formă simplă de metacogniție în care sistemul este capabil să își ajusteze procesul de raționament pe baza feedback-ului intern.
Metacogniția este un instrument puternic care poate îmbunătăți semnificativ capabilitățile agenților AI. Prin încorporarea proceselor metacognitive, puteți proiecta agenți mai inteligenți, adaptabili și eficienți. Folosiți resursele suplimentare pentru a explora mai departe fascinanta lume a metacogniției în agenții AI.
Alăturați-vă Microsoft Foundry Discord pentru a întâlni alți cursanți, a participa la ore de consultanță și a primi răspunsuri la întrebările dvs. despre agenții AI.
Modelul de proiectare multi-agent
Declinare de responsabilitate: Acest document a fost tradus folosind serviciul de traducere AI Co-op Translator. Deși depunem eforturi pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă o traducere profesională realizată de un traducător uman. Nu ne asumăm răspunderea pentru eventuale neînțelegeri sau interpretări eronate care rezultă din utilizarea acestei traduceri.