(Klicken Sie auf das obige Bild, um das Video dieser Lektion anzusehen)
Metakognition bei KI-Agenten
Willkommen zur Lektion über Metakognition bei KI-Agenten! Dieses Kapitel richtet sich an Anfänger, die neugierig sind, wie KI-Agenten über ihre eigenen Denkprozesse nachdenken können. Am Ende dieser Lektion verstehen Sie wichtige Konzepte und sind mit praktischen Beispielen ausgestattet, um Metakognition im Design von KI-Agenten anzuwenden.
Nach Abschluss dieser Lektion werden Sie in der Lage sein:
Metakognition bezieht sich auf höherstufige kognitive Prozesse, die das Nachdenken über das eigene Denken umfassen. Für KI-Agenten bedeutet dies, ihre Handlungen auf Basis von Selbstbewusstsein und vergangenen Erfahrungen bewerten und anpassen zu können. Metakognition oder „Nachdenken über das Denken“ ist ein wichtiger Begriff in der Entwicklung agentischer KI-Systeme. Es beinhaltet, dass KI-Systeme sich ihrer eigenen inneren Prozesse bewusst sind und ihr Verhalten entsprechend überwachen, regulieren und anpassen können. So wie wir es tun, wenn wir die Situation einschätzen oder ein Problem betrachten. Dieses Selbstbewusstsein kann KI-Systemen helfen, bessere Entscheidungen zu treffen, Fehler zu erkennen und ihre Leistung mit der Zeit zu verbessern – was wieder auf den Turing-Test und die Debatte zurückführt, ob KI die Kontrolle übernehmen wird.
Im Kontext agentischer KI-Systeme kann Metakognition mehrere Herausforderungen angehen, wie zum Beispiel:
Metakognition, oder „Nachdenken über das Denken“, ist ein höherstufiger kognitiver Prozess, der Selbstbewusstsein und Selbstregulierung der eigenen kognitiven Prozesse beinhaltet. Im Bereich der KI befähigt Metakognition Agenten, ihre Strategien und Handlungen zu bewerten und anzupassen, was zu verbesserten Problemlösungs- und Entscheidungsfähigkeiten 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. In echter Metakognition würden Sie die KI explizit über ihr eigenes Denken nachdenken sehen.
Beispiel: „Ich habe billigere Flüge priorisiert, weil… ich könnte Direktflüge verpassen, also überprüfe ich das noch einmal.“ Nachverfolgen, wie oder warum sie eine bestimmte Route gewählt hat.
Metakognition spielt im Design von KI-Agenten aus mehreren Gründen eine entscheidende Rolle:

Bevor wir in metakognitive Prozesse eintauchen, ist es wichtig, die Grundkomponenten eines KI-Agenten zu verstehen. Ein KI-Agent besteht typischerweise aus:
Diese Komponenten arbeiten zusammen, um eine „Expertise-Einheit“ zu bilden, die spezifische Aufgaben erfüllen kann.
Beispiel: Betrachten Sie einen Reiseagenten, Agenten-Services, die nicht nur Ihren Urlaub planen, sondern ihren Weg auch basierend auf Echtzeitdaten und vergangenen Kundenerfahrungen anpassen.
Stellen Sie sich vor, Sie entwerfen einen KI-Reiseagenten-Service. Dieser Agent „Reiseagent“ unterstützt Nutzer bei der Urlaubsplanung. Um Metakognition einzubeziehen, muss Reiseagent seine Aktionen basierend auf Selbstbewusstsein und vergangenen Erfahrungen bewerten und anpassen. So könnte Metakognition eine Rolle spielen:
Die aktuelle Aufgabe besteht darin, einem Nutzer bei der Planung einer Reise nach Paris zu helfen.
Reiseagent verwendet Metakognition, um seine Leistung zu bewerten und aus vergangenen Erfahrungen zu lernen. Zum Beispiel:
Hier ist ein vereinfachtes Beispiel dafür, wie der Code von Reiseagent aussehen könnte, wenn Metakognition einbezogen wird:
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):
# Suche nach Flügen, Hotels und Attraktionen basierend auf Vorlieben
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)
# Analysiere Rückmeldungen und passe zukünftige Empfehlungen an
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Anwendungsbeispiel
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 Einbindung von Metakognition kann Reiseagent persönlichere und genauere Reiseempfehlungen geben und so das Nutzererlebnis verbessern.
Planung ist eine kritische Komponente des Verhaltens von KI-Agenten. Sie umfasst das Festlegen der Schritte, die zum Erreichen eines Ziels erforderlich sind, unter Berücksichtigung des aktuellen Zustands, der Ressourcen und möglicher Hindernisse.
Beispiel: Hier sind die Schritte, die Reiseagent unternehmen muss, um einem Nutzer effektiv bei der Reiseplanung zu helfen:
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)
# Beispielhafte Verwendung innerhalb einer Buchungsanfrage
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)
Zunächst wollen wir den Unterschied zwischen RAG-Tool und präventivem Kontextladen verstehen.

RAG kombiniert ein Retrieval-System mit einem generativen Modell. Wenn eine Anfrage gestellt wird, ruft das Retrieval-System relevante Dokumente oder Daten aus einer externen Quelle ab, und diese abgerufenen Informationen werden als Ergänzung zur Eingabe des generativen Modells verwendet. Dies hilft dem Modell, genauere und kontextuell relevante Antworten zu generieren.
In einem RAG-System ruft der Agent relevante Informationen aus einer Wissensdatenbank ab und nutzt sie, um passende Antworten oder Aktionen zu generieren.
Der korrekte RAG-Ansatz konzentriert sich darauf, RAG-Techniken zu verwenden, um Fehler zu korrigieren und die Genauigkeit von KI-Agenten zu erhöhen. Dies umfasst:
Betrachten Sie einen Suchagenten, der Informationen aus dem Web abruft, um Nutzeranfragen zu beantworten. Der korrigierende RAG-Ansatz könnte beinhalten:
Korrektives RAG (Retrieval-Augmented Generation) verbessert die Fähigkeit einer KI, Informationen abzurufen und zu generieren, während Gleichzeitig Ungenauigkeiten korrigiert werden. Sehen wir, wie Reiseagent den korrigierenden RAG-Ansatz nutzen kann, um genauere und relevantere Reiseempfehlungen zu liefern.
Dies umfasst:
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 korrigierenden RAG-Ansatz im Reiseagenten 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
# Beispielverwendung
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-emptives Kontextladen bedeutet, relevanten Kontext oder Hintergrundinformationen in das Modell zu laden, bevor eine Anfrage verarbeitet wird. Das bedeutet, dass das Modell von Anfang an Zugriff auf diese Informationen hat, was ihm helfen kann, fundiertere Antworten zu generieren, ohne während des Prozesses zusätzliche Daten abrufen zu müssen.
Hier ist ein vereinfachtes Beispiel, wie ein pre-emptives Kontextladen für eine Reisebüro-Anwendung in Python aussehen könnte:
class TravelAgent:
def __init__(self):
# Beliebte Reiseziele und deren Informationen vorab laden
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):
# Abrufen von Reiseziels-Informationen aus dem vorab geladenen Kontext
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}."
# Beispielverwendung
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Initialisierung (__init__-Methode): Die TravelAgent-Klasse 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 wichtige Sehenswürdigkeiten für jedes Ziel.
Informationsabfrage (get_destination_info-Methode): Wenn ein Benutzer eine bestimmte Destination abfragt, holt die get_destination_info-Methode die relevanten Informationen aus dem vorab geladenen Kontext-Wörterbuch.
Durch das vorgeladene Kontext kann die Reisebüro-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 Initialisieren eines Plans mit einem Ziel bedeutet, mit einer klaren Zielsetzung oder einem gewünschten Ergebnis zu beginnen. Indem dieses Ziel von Anfang an definiert wird, kann das Modell es als Leitprinzip während des iterativen Prozesses verwenden. Das hilft sicherzustellen, dass jede Iteration dem Erreichen des gewünschten Ergebnisses näherkommt und macht den Prozess effizienter und fokussierter.
Hier ist ein Beispiel, wie man einen Reiseplan mit Zielsetzung initialisieren kann, bevor man für ein Reisebüro in Python iteriert:
Ein Reisebüro möchte einen maßgeschneiderten Urlaub für einen Kunden planen. Das Ziel ist es, eine Reiseroute zu erstellen, die die Zufriedenheit des Kunden basierend auf dessen Vorlieben und 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']
# Beispielverwendung
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 (__init__-Methode): Die TravelAgent-Klasse wird mit einer Liste möglicher Reiseziele initialisiert, die jeweils Attribute wie Name, Kosten und Aktivitätstyp haben.
Plan initialisieren (bootstrap_plan-Methode): Diese Methode erstellt einen ersten Reiseplan basierend auf den Vorlieben und dem Budget des Kunden. Sie geht die Liste der Reiseziele durch und fügt sie dem Plan hinzu, wenn sie mit den Vorlieben des Kunden übereinstimmen und ins Budget passen.
Vorlieben abgleichen (match_preferences-Methode): Diese Methode prüft, ob ein Reiseziel mit den Vorlieben des Kunden übereinstimmt.
Plan iterieren (iterate_plan-Methode): Diese Methode verfeinert den ursprünglichen Plan, indem sie versucht, jedes Reiseziel durch eine besser passende Option zu ersetzen, unter Berücksichtigung der Vorlieben des Kunden und der Budgetbeschränkungen.
Kosten berechnen (calculate_cost-Methode): Diese Methode berechnet die Gesamtkosten des aktuellen Plans, einschließlich eines eventuell neuen Reiseziels.
Durch das Initialisieren des Plans mit einem klaren Ziel (z. B. Maximierung der Kundenzufriedenheit) und dem iterativen Verfeinern kann das Reisebüro eine maßgeschneiderte und optimierte Reiseroute für den Kunden erstellen. Dieser Ansatz stellt sicher, dass der Reiseplan von Anfang an mit den Vorlieben und dem Budget des Kunden übereinstimmt und sich mit jeder Iteration verbessert.
Große Sprachmodelle (LLMs) können zum Re-Ranking und zur Bewertung eingesetzt werden, indem sie die Relevanz und Qualität abgerufener Dokumente oder generierter Antworten bewerten. So funktioniert es:
Abruf: Der erste Abrufschritt holt eine Menge Kandidatendokumente oder Antworten basierend auf der Anfrage.
Re-Ranking: Das LLM bewertet diese Kandidaten und sortiert sie basierend auf ihrer Relevanz und Qualität neu. Dieser Schritt stellt sicher, dass die relevantesten und qualitativ hochwertigsten Informationen zuerst präsentiert werden.
Bewertung: Das LLM weist jedem Kandidaten Bewertungspunkte zu, welche deren 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 Bewertung kann das System genauere und kontextuell relevantere Informationen bereitstellen, was die Gesamtbenutzererfahrung verbessert.
Hier ist ein Beispiel, wie ein Reisebüro ein Großes Sprachmodell (LLM) nutzen könnte, um Reiseziele basierend auf Benutzerpräferenzen in Python neu zu bewerten und zu bewerten:
Ein Reisebüro möchte dem Kunden basierend auf dessen Vorlieben die besten Reiseziele empfehlen. Das LLM hilft dabei, die Reiseziele neu zu bewerten und zu bewerten, um sicherzustellen, dass die relevantesten Optionen präsentiert werden.
So können Sie das vorherige Beispiel aktualisieren, um Azure OpenAI Services zu nutzen:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Erzeuge eine Eingabeaufforderung für Azure OpenAI
prompt = self.generate_prompt(preferences)
# Definiere Header und Payload für die Anfrage
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Rufe die Azure OpenAI API auf, um die neu bewerteten und bewerteten Ziele zu erhalten
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extrahiere und gib die Empfehlungen zurück
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
# Beispielverwendung
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 TravelAgent-Klasse wird mit einer Liste potentieller Reiseziele initialisiert, die jeweils Attribute wie Name und Beschreibung besitzen.
Empfehlungen abrufen (get_recommendations-Methode): Diese Methode generiert eine Prompt für den Azure OpenAI-Dienst basierend auf den Benutzerpräferenzen und sendet eine HTTP-POST-Anfrage an die Azure OpenAI API, um neu bewertete und bewertete Reiseziele zu erhalten.
Prompt generieren (generate_prompt-Methode): Diese Methode konstruiert einen Prompt für Azure OpenAI, der die Benutzerpräferenzen und die Liste der Reiseziele enthält. Der Prompt leitet das Modell an, die Reiseziele anhand der angegebenen Präferenzen neu zu bewerten und zu bewerten.
API-Aufruf: Die requests-Bibliothek wird verwendet, um eine HTTP-POST-Anfrage an den Azure OpenAI API-Endpunkt zu senden. Die Antwort enthält die neu bewerteten und bewerteten Reiseziele.
Beispielanwendung: Der Reisebüro-Agent sammelt Benutzerpräferenzen (z. B. Interesse an Sightseeing und vielfältiger Kultur) und nutzt den Azure OpenAI Service, um neu bewertete und bewertete Empfehlungen für Reiseziele zu erhalten.
Ersetzen Sie unbedingt 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.
Durch die Nutzung des LLM für Re-Ranking und Bewertung kann das Reisebüro personalisiertere und relevantere Reiseempfehlungen für Kunden bereitstellen 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 dieses Unterschieds kann Ihnen helfen, RAG in Ihren Projekten wirkungsvoller zu nutzen.
Was ist das?
Wie es funktioniert:
Beispiel im Reisebüro:
Was ist das?
Wie es funktioniert:
Beispiel im Reisebüro:
| Aspekt | Prompting-Technik | Werkzeug |
|---|---|---|
| Manuell vs Automatisch | Manuelles Formulieren von Prompts für jede Anfrage. | Automatisierter Prozess für Abruf und Generierung. |
| Kontrolle | Bietet mehr Kontrolle über den Abrufprozess. | Optimiert und automatisiert den Abruf- und Generierungsprozess. |
| Flexibilität | Ermöglicht angepasste Prompts je nach Bedarf. | Effizienter für groß angelegte Implementierungen. |
| Komplexität | Erfordert das Erstellen und Anpassen von Prompts. | Einfacher in die Architektur eines KI-Agenten zu integrieren. |
Beispiel 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 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 angemessen, korrekt und nützlich für den Benutzer sind. Lassen Sie uns betrachten, wie man Relevanz bei KI-Agenten bewertet, 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] # Geben Sie die 10 relevantesten Elemente zurück
Beispiel:
def process_query(query):
# Verwenden Sie NLP, um Schlüsselinformationen aus der Benutzeranfrage zu extrahieren
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 ein praktisches Beispiel, wie das Reisebüro 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] # Gibt die 10 relevantesten Elemente zurück
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
# Beispielverwendung
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)
Die Suche mit Absicht bedeutet, den zugrundeliegenden Zweck oder das Ziel einer Benutzeranfrage zu verstehen und zu interpretieren, um die relevantesten und nützlichsten Informationen abzurufen und zu generieren. Dieser Ansatz geht über das bloße Finden von Schlüsselwörtern hinaus und konzentriert sich darauf, die tatsächlichen Bedürfnisse und den Kontext des Benutzers zu erfassen.
Schauen wir uns Travel Agent als Beispiel an, um zu sehen, wie die Suche mit Absicht umgesetzt werden kann.
Sammeln der Benutzerpräferenzen
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):
# Kombinieren Sie die aktuelle Abfrage mit der Benutzerhistorie, um den Kontext zu verstehen
context = {
"current_query": query,
"user_history": user_history
}
return context
Suchen und Personalisieren von Ergebnissen
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):
# Beispiel-Suchlogik für Informationsabsicht
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Beispiel-Suchlogik für Navigationsabsicht
results = search_web(query)
return results
def search_transaction(query, preferences):
# Beispiel-Suchlogik für Transaktionsabsicht
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Beispiel-Personalisierungslogik
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Gibt die Top 10 personalisierten Ergebnisse zurück
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)
Codeerzeugende Agenten verwenden KI-Modelle, um Code zu schreiben und auszuführen, komplexe Probleme zu lösen und Aufgaben zu automatisieren.
Codeerzeugende Agenten verwenden generative KI-Modelle, um Code zu schreiben und auszuführen. Diese Agenten können komplexe Probleme lösen, Aufgaben automatisieren und wertvolle Einsichten durch das Erzeugen und Ausführen von Code in verschiedenen Programmiersprachen bieten.
Stellen Sie sich vor, Sie entwickeln einen codeerzeugenden Agenten. So könnte er funktionieren:
In diesem Beispiel entwerfen wir einen codeerzeugenden Agenten, Travel Agent, der Benutzer bei der Reiseplanung unterstützt, indem er Code generiert und ausführt. Dieser Agent kann Aufgaben wie das Abrufen von Reiseoptionen, das Filtern von Ergebnissen und das Erstellen eines Reiseplans mit Hilfe generativer KI übernehmen.
Sammeln von Benutzerpräferenzen
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):
# Beispiel: Code generieren, um Flüge basierend auf Benutzerpräferenzen zu suchen
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):
# Beispiel: Code generieren, um nach Hotels zu suchen
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Ausführen des generierten Codes
def execute_code(code):
# Führen Sie den generierten Code mit exec aus
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)
Erstellen des Reiseplans
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):
# Präferenzen basierend auf Benutzerfeedback anpassen
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)
# Code mit aktualisierten Präferenzen neu generieren und ausführen
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)
Die Nutzung des Schemas der Tabelle kann tatsächlich den Prozess der Abfrageerzeugung verbessern, indem Umweltbewusstsein und Schlussfolgerungen angewendet werden.
Hier ist ein Beispiel, wie dies umgesetzt werden kann:
Hier ist ein aktualisiertes Python-Codebeispiel, das diese Konzepte integriert:
def adjust_based_on_feedback(feedback, preferences, schema):
# Einstellungen basierend auf Benutzerfeedback anpassen
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Begründung basierend auf Schema, um andere verwandte Einstellungen anzupassen
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):
# Benutzerdefinierte Logik zur Anpassung der Einstellungen basierend auf Schema und 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):
# Code generieren, um Flugdaten basierend auf aktualisierten Einstellungen abzurufen
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Code generieren, um Hoteldaten basierend auf aktualisierten Einstellungen abzurufen
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Ausführung des Codes simulieren und Sachdaten zurückgeben
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Reiseplan basierend auf Flügen, Hotels und Attraktionen generieren
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Beispielschema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Beispielverwendung
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Code mit aktualisierten Einstellungen neu generieren und ausführen
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 Dictionary definiert, wie Präferenzen basierend auf Feedback angepasst werden sollten. Es enthält Felder wie favorites und avoid mit entsprechenden Anpassungen.adjust_based_on_feedback Methode): Diese Methode passt die Präferenzen entsprechend dem Benutzerfeedback und Schema an.adjust_based_on_environment Methode): Diese Methode personalisiert die Anpassungen basierend auf dem Schema und Feedback.Indem das System umweltbewusst gemacht wird und auf dem Schema basiert schlussfolgert, kann es genauere und relevantere Abfragen generieren, was zu besseren Reiseempfehlungen und einer personalisierteren Benutzererfahrung führt.
SQL (Structured Query Language) ist ein mächtiges Werkzeug für die Interaktion mit Datenbanken. Wenn SQL als Bestandteil eines Retrieval-Augmented Generation (RAG) Ansatzes verwendet wird, kann es relevante Daten aus Datenbanken abrufen, um Antworten oder Aktionen in KI-Agenten zu informieren und zu generieren. Lassen Sie uns erkunden, wie SQL als RAG-Technik im Kontext von Travel Agent verwendet werden kann.
Beispiel: Ein Datenanalyse-Agent:
Sammeln von Benutzerpräferenzen
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)
Flug-Abfrage
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Hotel-Abfrage
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Attraktions-Abfrage
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 Travel Agent dynamisch relevante Daten abrufen und nutzen, um präzise und personalisierte Empfehlungen zu geben.
Um eine Implementierung von Metakognition zu demonstrieren, erstellen wir einen einfachen Agenten, der über seinen Entscheidungsprozess nachdenkt, während er ein Problem löst. Für dieses Beispiel bauen wir ein System, bei dem ein Agent versucht, die Wahl eines Hotels zu optimieren, aber anschließend seine eigene Entscheidungsfindung bewertet und seine Strategie anpasst, wenn er Fehler 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 seine Entscheidungen „reflektiert“ und entsprechend anpasst.
Hier ein Beispiel:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Speichert die zuvor gewählten Hotels
self.corrected_choices = [] # Speichert die korrigierten Auswahlmöglichkeiten
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Verfügbare Strategien
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]
# Nehmen wir an, wir haben einige Benutzerfeedbacks, die uns sagen, ob die letzte Wahl gut war oder nicht
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Strategie anpassen, wenn die vorherige Wahl unzufriedenstellend war
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"
# Simuliert eine Liste von Hotels (Preis und Qualität)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Erstellt einen Agenten
agent = HotelRecommendationAgent()
# Schritt 1: Der Agent empfiehlt ein Hotel anhand der „günstigsten“ Strategie
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Schritt 2: Der Agent reflektiert die Wahl und passt die Strategie bei Bedarf an
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Schritt 3: Der Agent empfiehlt erneut, diesmal mit der angepassten Strategie
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Entscheidend ist hier die Fähigkeit des Agenten:
Dies ist eine einfache Form von Metakognition, bei der das System seinen Denkprozess basierend auf internem Feedback anpassen kann.
Metakognition ist ein mächtiges Werkzeug, das die Fähigkeiten von KI-Agenten erheblich verbessern kann. Durch die Integration metakognitiver Prozesse können Sie Agenten entwerfen, 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 Microsoft Foundry Discord bei, um sich mit anderen Lernenden auszutauschen, an Sprechstunden teilzunehmen und Ihre Fragen zu KI-Agenten zu stellen.
Haftungsausschluss: Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Bei kritischen Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.