(Klicken Sie auf das obige Bild, um das Video dieser Lektion anzusehen)
Metakognition in KI-Agenten
Willkommen zur Lektion über Metakognition in KI-Agenten! Dieses Kapitel richtet sich an Anfänger, die neugierig darauf sind, wie KI-Agenten über ihre eigenen Denkprozesse nachdenken können. Am Ende dieser Lektion werden Sie die wichtigsten Konzepte verstehen und mit praktischen Beispielen ausgestattet sein, um Metakognition im Design von KI-Agenten anzuwenden.
Nach Abschluss dieser Lektion werden Sie in der Lage sein:
Metakognition bezieht sich auf übergeordnete kognitive Prozesse, die das Denken über das eigene Denken beinhalten. Für KI-Agenten bedeutet dies, ihre Aktionen auf der Grundlage von Selbstwahrnehmung und vergangenen Erfahrungen bewerten und anpassen zu können. Metakognition oder „Denken über das Denken“ ist ein wichtiges Konzept bei der Entwicklung von agentenbasierten KI-Systemen. Es beinhaltet, dass KI-Systeme sich ihrer eigenen internen Prozesse bewusst sind und in der Lage sind, ihr Verhalten zu überwachen, zu regulieren und entsprechend anzupassen. Ähnlich wie wir, wenn wir die Situation einschätzen oder uns einem Problem widmen. Diese Selbstwahrnehmung kann KI-Systemen helfen, bessere Entscheidungen zu treffen, Fehler zu identifizieren und ihre Leistung im Laufe der Zeit zu verbessern – wieder mit Bezug auf den Turing-Test und die Debatte, ob die KI die Weltherrschaft übernehmen wird.
Im Kontext von agentenbasierten KI-Systemen kann Metakognition zur Bewältigung mehrerer Herausforderungen beitragen, wie z. B.:
Metakognition, oder „Denken über das Denken“, ist ein übergeordneter kognitiver Prozess, der Selbstwahrnehmung und Selbstregulierung der eigenen kognitiven Prozesse beinhaltet. Im Bereich der KI befähigt Metakognition Agenten, ihre Strategien und Aktionen zu bewerten und anzupassen, was zu verbesserten Fähigkeiten zur Problemlösung und Entscheidungsfindung führt. Durch das Verständnis von Metakognition können Sie KI-Agenten entwerfen, die nicht nur intelligenter, sondern auch anpassungsfähiger und effizienter sind. Bei echter Metakognition würde man sehen, wie die KI explizit über ihr eigenes Denken nachdenkt.
Beispiel: „Ich habe günstigere Flüge priorisiert, weil... Ich könnte Direktflüge verpassen, also lasse ich sie noch einmal prüfen.“ Verfolgung, wie oder warum es eine bestimmte Route gewählt hat.
Metakognition spielt aus mehreren Gründen eine entscheidende Rolle beim Design von KI-Agenten:

Bevor wir uns mit metakognitiven Prozessen befassen, ist es wichtig, die grundlegenden Komponenten eines KI-Agenten zu verstehen. Ein KI-Agent besteht typischerweise aus:
Diese Komponenten arbeiten zusammen, um eine „Expertise-Einheit“ zu schaffen, die spezifische Aufgaben ausführen kann.
Beispiel: Stellen Sie sich einen Reiseberater vor, einen Agentendienst, der nicht nur Ihren Urlaub plant, sondern auch seinen Weg basierend auf Echtzeitdaten und vergangenen Kundenerlebnissen anpasst.
Stellen Sie sich vor, Sie entwerfen einen KI-gestützten Reiseberater-Service. Dieser Agent, „Reiseberater“, unterstützt Benutzer bei der Planung ihrer Urlaube. Um Metakognition zu integrieren, muss der Reiseberater seine Aktionen basierend auf Selbstwahrnehmung und vergangenen Erfahrungen bewerten und anpassen. So könnte Metakognition eine Rolle spielen:
Die aktuelle Aufgabe ist es, einem Benutzer bei der Planung einer Reise nach Paris zu helfen.
Der Reiseberater nutzt Metakognition, um seine Leistung zu bewerten und aus vergangenen Erfahrungen zu lernen. Zum Beispiel:
Hier ist ein vereinfachtes Beispiel, wie der Code des Reiseberaters bei der Integration von Metakognition aussehen könnte.
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):
# Search for flights, hotels, and attractions based on preferences
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)
# Analyze feedback and adjust future recommendations
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Example usage
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)
Durch die Integration von Metakognition kann der Reiseberater personalisiertere und genauere Reiseempfehlungen anbieten und so das Gesamterlebnis des Benutzers verbessern.
Planung ist eine kritische Komponente des Verhaltens von KI-Agenten. Sie beinhaltet die Festlegung der Schritte, die zur Erreichung eines Ziels erforderlich sind, unter Berücksichtigung des aktuellen Zustands, der Ressourcen und möglicher Hindernisse.
Beispiel: Hier sind die Schritte, die der Reiseberater unternehmen muss, um einen Benutzer bei der effektiven Planung seiner Reise zu unterstützen.
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)
# Example usage within a booing request
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)
Zuerst beginnen wir mit dem Verständnis des Unterschieds zwischen einem RAG-Tool und einer präventiven Kontextladung.

RAG kombiniert ein Retrievalsystem mit einem generativen Modell. Wenn eine Anfrage gestellt wird, ruft das Retrievalsystem relevante Dokumente oder Daten aus einer externen Quelle ab, und diese abgerufenen Informationen werden verwendet, um die Eingabe für das generative Modell zu erweitern. Dies hilft dem Modell, genauere und kontextbezogenere Antworten zu generieren.
In einem RAG-System ruft der Agent relevante Informationen aus einer Wissensdatenbank ab und nutzt diese, um angemessene Antworten oder Aktionen zu generieren.
Der Korrektive RAG-Ansatz konzentriert sich auf die Verwendung von RAG-Techniken zur Korrektur von Fehlern und zur Verbesserung der Genauigkeit von KI-Agenten. Dies beinhaltet:
Betrachten Sie einen Suchagenten, der Informationen aus dem Internet abruft, um Benutzeranfragen zu beantworten. Der Korrektive RAG-Ansatz könnte Folgendes beinhalten:
Korrektives RAG (Retrieval-Augmented Generation) verbessert die Fähigkeit einer KI, Informationen abzurufen und zu generieren, während Ungenauigkeiten korrigiert werden. Lassen Sie uns sehen, wie der Reiseberater den Korrektive RAG-Ansatz nutzen kann, um genauere und relevantere Reiseempfehlungen anzubieten.
Dies beinhaltet:
Beispiel
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Beispiel
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Beispiel
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Beispiel
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Beispiel
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Beispiel
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Beispiel
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)
Hier ist ein vereinfachtes Python-Codebeispiel, das den Korrektive RAG-Ansatz im Reiseberater integriert.
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
# Example usage
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)
Präventive Kontextladung beinhaltet das Laden relevanter Kontext- oder Hintergrundinformationen in das Modell, bevor eine Anfrage verarbeitet wird. Das bedeutet, dass das Modell von Anfang an Zugriff auf diese Informationen hat, was ihm helfen kann, informiertere Antworten zu generieren, ohne während des Prozesses zusätzliche Daten abrufen zu müssen.
Hier ist ein vereinfachtes Beispiel, wie eine präventive Kontextladung für eine Reiseberater-Anwendung in Python aussehen könnte.
class TravelAgent:
def __init__(self):
# Pre-load popular destinations and their information
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):
# Fetch destination information from pre-loaded context
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}."
# Example usage
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Initialisierung (Methode __init__): Die Klasse TravelAgent lädt vorab ein Wörterbuch mit Informationen über beliebte Reiseziele wie Paris, Tokio, New York und Sydney. Dieses Wörterbuch enthält Details wie Land, Währung, Sprache und Hauptattraktionen für jedes Reiseziel.
Informationen abrufen (Methode get_destination_info): Wenn ein Benutzer eine Anfrage zu einem bestimmten Reiseziel stellt, ruft die Methode get_destination_info die relevanten Informationen aus dem vorab geladenen Kontextwörterbuch ab.
Durch das Vorladen des Kontexts kann die Reiseberater-Anwendung schnell auf Benutzeranfragen reagieren, ohne diese Informationen in Echtzeit aus einer externen Quelle abrufen zu müssen. Dies macht die Anwendung effizienter und reaktionsschneller.
Das Bootstrappen eines Plans mit einem Ziel bedeutet, mit einem klaren Ziel oder Ergebnis vor Augen zu beginnen. Durch die Festlegung dieses Ziels im Voraus kann das Modell es als Leitprinzip während des gesamten iterativen Prozesses verwenden. Dies trägt dazu bei, dass jede Iteration dem Erreichen des gewünschten Ergebnisses näher kommt, wodurch der Prozess effizienter und fokussierter wird.
Hier ist ein Beispiel, wie Sie einen Reiseplan mit einem Ziel bootstrappen können, bevor Sie für einen Reiseberater in Python iterieren.
Ein Reiseberater möchte für einen Kunden eine maßgeschneiderte Urlaubsplanung erstellen. Das Ziel ist es, eine Reiseroute zu erstellen, die die Kundenzufriedenheit basierend auf seinen Präferenzen und seinem Budget maximiert.
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']
# Example usage
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)
Initialisierung (Methode __init__): Die Klasse TravelAgent wird mit einer Liste potenzieller Reiseziele initialisiert, von denen jedes Attribute wie Name, Kosten und Aktivitätstyp aufweist.
Bootstrappen des Plans (Methode bootstrap_plan): Diese Methode erstellt einen anfänglichen Reiseplan basierend auf den Präferenzen und dem Budget des Kunden. Sie durchläuft die Liste der Reiseziele und fügt sie dem Plan hinzu, wenn sie den Präferenzen des Kunden entsprechen und im Budget liegen.
Abgleichen von Präferenzen (Methode match_preferences): Diese Methode prüft, ob ein Reiseziel mit den Präferenzen des Kunden übereinstimmt.
Iterieren des Plans (Methode iterate_plan): Diese Methode verfeinert den anfänglichen Plan, indem sie versucht, jedes Reiseziel im Plan durch eine bessere Übereinstimmung zu ersetzen, unter Berücksichtigung der Präferenzen und Budgetbeschränkungen des Kunden.
Kostenberechnung (Methode calculate_cost): Diese Methode berechnet die Gesamtkosten des aktuellen Plans, einschließlich eines potenziellen neuen Reiseziels.
Durch das Bootstrappen des Plans mit einem klaren Ziel (z. B. Maximierung der Kundenzufriedenheit) und Iterationen zur Verfeinerung des Plans kann der Reiseberater eine maßgeschneiderte und optimierte Reiseroute für den Kunden erstellen. Dieser Ansatz stellt sicher, dass der Reiseplan von Anfang an mit den Präferenzen und dem Budget des Kunden übereinstimmt und sich mit jeder Iteration verbessert.
Große Sprachmodelle (LLMs) können für Re-Ranking und Scoring verwendet werden, indem sie die Relevanz und Qualität abgerufener Dokumente oder generierter Antworten bewerten. So funktioniert es:
Retrieval: Der anfängliche Retrieval-Schritt ruft eine Reihe von Kandidatendokumenten oder Antworten basierend auf der Anfrage ab.
Re-Ranking: Das LLM bewertet diese Kandidaten und stuft sie basierend auf ihrer Relevanz und Qualität neu ein. Dieser Schritt stellt sicher, dass die relevantesten und qualitativ hochwertigsten Informationen zuerst präsentiert werden.
Scoring: Das LLM weist jedem Kandidaten Punktzahlen zu, die seine Relevanz und Qualität widerspiegeln. Dies hilft bei der Auswahl der besten Antwort oder des besten Dokuments für den Benutzer.
Durch die Nutzung von LLMs für Re-Ranking und Scoring kann das System genauere und kontextbezogenere Informationen liefern und so das Gesamterlebnis des Benutzers verbessern.
Hier ist ein Beispiel dafür, wie ein Reiseberater ein Large Language Model (LLM) für das Re-Ranking und Scoring von Reisezielen basierend auf Benutzerpräferenzen in Python verwenden könnte.
Ein Reiseberater möchte einem Kunden die besten Reiseziele basierend auf seinen Präferenzen empfehlen. Das LLM hilft beim Re-Ranking und Scoring der Reiseziele, um sicherzustellen, dass die relevantesten Optionen präsentiert werden.
Hier erfahren Sie, wie Sie das vorherige Beispiel zur Verwendung von Azure OpenAI Services aktualisieren können.
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Generate a prompt for the Azure OpenAI
prompt = self.generate_prompt(preferences)
# Define headers and payload for the request
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Call the Azure OpenAI API to get the re-ranked and scored destinations
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extract and return the recommendations
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
# Example usage
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)
Initialisierung: Die Klasse TravelAgent wird mit einer Liste potenzieller Reiseziele initialisiert, von denen jedes Attribute wie Name und Beschreibung aufweist.
Empfehlungen erhalten (Methode get_recommendations): Diese Methode generiert einen Prompt für den Azure OpenAI-Dienst basierend auf den Benutzereinstellungen und führt eine HTTP POST-Anfrage an die Azure OpenAI-API aus, um neu eingestufte und bewertete Reiseziele zu erhalten.
Prompt generieren (Methode generate_prompt): Diese Methode erstellt einen Prompt für Azure OpenAI, einschließlich der Benutzereinstellungen und der Liste der Reiseziele. Der Prompt leitet das Modell an, die Reiseziele basierend auf den bereitgestellten Präferenzen neu einzustufen und zu bewerten.
API-Aufruf: Die Bibliothek requests wird verwendet, um eine HTTP POST-Anfrage an den Azure OpenAI-API-Endpunkt zu senden. Die Antwort enthält die neu eingestuften und bewerteten Reiseziele.
Beispielhafte Verwendung: Der Reiseberater sammelt Benutzereinstellungen (z. B. Interesse an Sightseeing und vielfältiger Kultur) und nutzt den Azure OpenAI-Dienst, um neu eingestufte und bewertete Empfehlungen für Reiseziele zu erhalten.
Stellen Sie sicher, dass Sie your_azure_openai_api_key durch Ihren tatsächlichen Azure OpenAI API-Schlüssel und https://your-endpoint.com/... durch die tatsächliche Endpunkt-URL Ihrer Azure OpenAI-Bereitstellung ersetzen.
Durch die Nutzung des LLM für Re-Ranking und Scoring kann der Reiseberater den Kunden personalisiertere und relevantere Reiseempfehlungen anbieten und so deren Gesamterlebnis verbessern.
Retrieval-Augmented Generation (RAG) kann sowohl eine Prompting-Technik als auch ein Werkzeug bei der Entwicklung von KI-Agenten sein. Das Verständnis des Unterschieds zwischen beidem kann Ihnen helfen, RAG effektiver in Ihren Projekten einzusetzen.
Was ist es?
Wie es funktioniert
Beispiel im Reiseberater:
Was ist es?
Wie es funktioniert
Beispiel im Reiseberater:
| Aspekt | Prompting-Technik | Werkzeug |
|---|---|---|
| Manuell vs. Automatisch | Manuelle Formulierung von Prompts für jede Anfrage. | Automatisierter Prozess für Abruf und Generierung. |
| Kontrolle | Bietet mehr Kontrolle über den Abrufprozess. | Optimiert und automatisiert Abruf und Generierung. |
| Flexibilität | Ermöglicht benutzerdefinierte Prompts basierend auf spezifischen Bedürfnissen. | Effizienter für groß angelegte Implementierungen. |
| Komplexität | Erfordert die Erstellung und Anpassung von Prompts. | Einfacher in die Architektur eines KI-Agenten zu integrieren. |
Beispiel für eine Prompting-Technik
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)
Beispiel für ein Werkzeug
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)
Die Bewertung der Relevanz ist ein entscheidender Aspekt der Leistung von KI-Agenten. Sie stellt sicher, dass die vom Agenten abgerufenen und generierten Informationen für den Benutzer angemessen, genau und nützlich sind. Lassen Sie uns untersuchen, wie die Relevanz in KI-Agenten bewertet wird, einschließlich praktischer Beispiele und Techniken.
Beispiel
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
Beispiel
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Return top 10 relevant items
Beispiel
def process_query(query):
# Use NLP to extract key information from the user's query
processed_query = nlp(query)
return processed_query
Beispiel
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
Hier ist ein praktisches Beispiel dafür, wie der Reiseberater die Relevanz von Reiseempfehlungen bewerten kann.
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] # Return top 10 relevant items
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
# Example usage
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)
Suchen mit Absicht bedeutet, den zugrunde liegenden Zweck oder das Ziel hinter einer Benutzeranfrage zu verstehen und zu interpretieren, um die relevantesten und nützlichsten Informationen abzurufen und zu generieren. Dieser Ansatz geht über die reine Keyword-Übereinstimmung hinaus und konzentriert sich auf das Erfassen der tatsächlichen Bedürfnisse und des Kontexts des Benutzers.
Nehmen wir Travel Agent als Beispiel, um zu sehen, wie Suchen mit Absicht implementiert werden kann.
Benutzerpräferenzen sammeln
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Verstehen der Benutzerabsicht
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"
Kontextbewusstsein
def analyze_context(query, user_history):
# Combine current query with user history to understand context
context = {
"current_query": query,
"user_history": user_history
}
return context
Ergebnisse suchen und personalisieren
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):
# Example search logic for informational intent
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Example search logic for navigational intent
results = search_web(query)
return results
def search_transaction(query, preferences):
# Example search logic for transactional intent
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Example personalization logic
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Return top 10 personalized results
Beispielhafte Verwendung
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)
Code-generierende Agenten nutzen KI-Modelle, um Code zu schreiben und auszuführen, komplexe Probleme zu lösen und Aufgaben zu automatisieren.
Code-generierende Agenten nutzen generative KI-Modelle, um Code zu schreiben und auszuführen. Diese Agenten können komplexe Probleme lösen, Aufgaben automatisieren und wertvolle Einblicke liefern, indem sie Code in verschiedenen Programmiersprachen generieren und ausführen.
Stellen Sie sich vor, Sie entwerfen einen Code-generierenden Agenten. Hier ist, wie er funktionieren könnte.
In diesem Beispiel entwerfen wir einen Code-generierenden Agenten, das Reisebüro, um Benutzer bei der Reiseplanung zu unterstützen, indem es Code generiert und ausführt. Dieser Agent kann Aufgaben wie das Abrufen von Reiseoptionen, das Filtern von Ergebnissen und das Zusammenstellen einer Reiseroute mithilfe generativer KI übernehmen.
Benutzerpräferenzen sammeln
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generieren von Code zum Abrufen von Daten
def generate_code_to_fetch_data(preferences):
# Example: Generate code to search for flights based on user preferences
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):
# Example: Generate code to search for hotels
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Ausführen von generiertem Code
def execute_code(code):
# Execute the generated code using 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)
Generieren von Reiseroute
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)
Anpassung basierend auf Feedback
def adjust_based_on_feedback(feedback, preferences):
# Adjust preferences based on user feedback
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)
# Regenerate and execute code with updated preferences
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)
Basierend auf dem Schema der Tabelle kann der Abfragegenerierungsprozess durch die Nutzung von Umweltbewusstsein und Schlussfolgerungen tatsächlich verbessert werden.
Hier ist ein Beispiel dafür, wie dies geschehen kann
Hier ist ein aktualisiertes Python-Codebeispiel, das diese Konzepte integriert
def adjust_based_on_feedback(feedback, preferences, schema):
# Adjust preferences based on user feedback
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Reasoning based on schema to adjust other related preferences
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):
# Custom logic to adjust preferences based on schema and feedback
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):
# Generate code to fetch flight data based on updated preferences
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generate code to fetch hotel data based on updated preferences
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulate execution of code and return mock data
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Generate itinerary based on flights, hotels, and attractions
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Example schema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Example usage
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Regenerate and execute code with updated preferences
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 definiert, wie Präferenzen basierend auf Feedback angepasst werden sollen. Es enthält Felder wie favorites und avoid mit entsprechenden Anpassungen.adjust_based_on_feedback): Diese Methode passt Präferenzen basierend auf Benutzerfeedback und dem Schema an.adjust_based_on_environment): Diese Methode passt die Anpassungen basierend auf dem Schema und dem Feedback an.Indem das System umweltbewusst gemacht und basierend auf dem Schema Schlussfolgerungen gezogen werden, kann es genauere und relevantere Abfragen generieren, was zu besseren Reiseempfehlungen und einer personalisierteren Benutzererfahrung führt.
SQL (Structured Query Language) ist ein leistungsstarkes Werkzeug für die Interaktion mit Datenbanken. Wenn es als Teil eines Retrieval-Augmented Generation (RAG)-Ansatzes verwendet wird, kann SQL relevante Daten aus Datenbanken abrufen, um Antworten oder Aktionen in KI-Agenten zu informieren und zu generieren. Lassen Sie uns untersuchen, wie SQL als RAG-Technik im Kontext des Reisebüros verwendet werden kann.
Beispiel: Ein Datenanalyse-Agent
Benutzerpräferenzen sammeln
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generieren von SQL-Abfragen
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
Ausführen von SQL-Abfragen
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
Generieren von Empfehlungen
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)
Flugabfrage
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Hotelabfrage
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Attraktionsabfrage
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Durch die Nutzung von SQL als Teil der Retrieval-Augmented Generation (RAG)-Technik können KI-Agenten wie das Reisebüro dynamisch relevante Daten abrufen und nutzen, um genaue und personalisierte Empfehlungen zu geben.
Um eine Implementierung von Metakognition zu demonstrieren, erstellen wir einen einfachen Agenten, der über seinen Entscheidungsprozess reflektiert, während er ein Problem löst. In diesem Beispiel bauen wir ein System, bei dem ein Agent versucht, die Wahl eines Hotels zu optimieren, dann aber seine eigene Argumentation bewertet und seine Strategie anpasst, wenn er Fehler macht oder suboptimale Entscheidungen trifft.
Wir simulieren dies anhand eines einfachen Beispiels, bei dem der Agent Hotels basierend auf einer Kombination aus Preis und Qualität auswählt, aber er wird über seine Entscheidungen „reflektieren“ und sich entsprechend anpassen.
Hier ist ein Beispiel
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Stores the hotels chosen previously
self.corrected_choices = [] # Stores the corrected choices
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Available strategies
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]
# Let's assume we have some user feedback that tells us whether the last choice was good or not
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Adjust strategy if the previous choice was unsatisfactory
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"
# Simulate a list of hotels (price and quality)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Create an agent
agent = HotelRecommendationAgent()
# Step 1: The agent recommends a hotel using the "cheapest" strategy
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Step 2: The agent reflects on the choice and adjusts strategy if necessary
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Step 3: The agent recommends again, this time using the adjusted strategy
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Der Schlüssel hier ist die Fähigkeit des Agenten,
Dies ist eine einfache Form der Metakognition, bei der das System in der Lage ist, seinen Denkprozess basierend auf internem Feedback anzupassen.
Metakognition ist ein mächtiges Werkzeug, das die Fähigkeiten von KI-Agenten erheblich verbessern kann. Durch die Einbeziehung metakognitiver Prozesse können Sie Agenten entwickeln, die intelligenter, anpassungsfähiger und effizienter sind. Nutzen Sie die zusätzlichen Ressourcen, um die faszinierende Welt der Metakognition in KI-Agenten weiter zu erkunden.
Treten Sie dem Azure AI Foundry Discord bei, um andere Lernende zu treffen, Sprechstunden zu besuchen und Ihre Fragen zu KI-Agenten beantwortet zu bekommen.