(Klik på billedet ovenfor for at se video af denne lektion)
Metakognition i AI-agenter
Velkommen til lektionen om metakognition i AI-agenter! Dette kapitel er designet til begyndere, der er nysgerrige efter, hvordan AI-agenter kan tænke over deres egne tankeprocesser. Ved slutningen af denne lektion vil du forstå nøglebegreber og være udstyret med praktiske eksempler til at anvende metakognition i design af AI-agenter.
Efter at have gennemført denne lektion vil du kunne:
Metakognition henviser til højereordens kognitive processer, der involverer at tænke over sin egen tænkning. For AI-agenter betyder dette at kunne evaluere og justere deres handlinger baseret på selvbevidsthed og tidligere erfaringer. Metakognition, eller “tænkning om tænkning,” er et vigtigt koncept i udviklingen af agentiske AI-systemer. Det involverer, at AI-systemer er bevidste om deres egne interne processer og er i stand til at overvåge, regulere og tilpasse deres adfærd derefter. Ligesom vi gør, når vi læser rummet eller ser på et problem. Denne selvbevidsthed kan hjælpe AI-systemer med at træffe bedre beslutninger, identificere fejl og forbedre deres præstation over tid – hvilket igen knytter sig til Turing-testen og debatten om, hvorvidt AI vil overtage.
I konteksten af agentiske AI-systemer kan metakognition hjælpe med at løse flere udfordringer, såsom:
Metakognition, eller “tænkning om tænkning,” er en højereordens kognitiv proces, der involverer selvbevidsthed og selvregulering af ens kognitive processer. Indenfor AI-verdenen giver metakognition agenter mulighed for at evaluere og tilpasse deres strategier og handlinger, hvilket fører til forbedret problemløsning og beslutningstagning. Ved at forstå metakognition kan du designe AI-agenter, der ikke blot er mere intelligente, men også mere tilpasningsdygtige og effektive. I ægte metakognition ville du se AI’en eksplicit ræsonnere over sit eget ræsonnement.
Eksempel: “Jeg prioriterede billigere flyrejser fordi… jeg måske går glip af direkte fly, så lad mig tjekke igen.” Holde styr på, hvordan eller hvorfor den valgte en bestemt rute.
Metakognition spiller en afgørende rolle i design af AI-agenter af flere grunde:

Før vi dykker ned i metakognitive processer, er det vigtigt at forstå de grundlæggende komponenter i en AI-agent. En AI-agent består typisk af:
Disse komponenter arbejder sammen for at skabe en “ekspertiseenhed,” der kan udføre specifikke opgaver.
Eksempel: Overvej en rejseagent, en agentservice der ikke blot planlægger din ferie, men også justerer sin rute baseret på realtidsdata og tidligere kunderejseoplevelser.
Forestil dig, at du designer en rejseagent-service drevet af AI. Denne agent, “Rejseagent,” assisterer brugere med at planlægge deres ferier. For at inkorporere metakognition skal Rejseagent evaluere og tilpasse sine handlinger baseret på selvbevidsthed og tidligere erfaringer. Sådan kan metakognition spille en rolle:
Den aktuelle opgave er at hjælpe en bruger med at planlægge en tur til Paris.
Rejseagent bruger metakognition til at evaluere sin præstation og lære af tidligere erfaringer. For eksempel:
Her er et forenklet eksempel på, hvordan koden for Rejseagent kunne se ud, når metakognition integreres:
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):
# Søg efter fly, hoteller og attraktioner baseret på præferencer
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)
# Analyser feedback og juster fremtidige anbefalinger
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Eksempel på brug
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)
Ved at integrere metakognition kan Rejseagent tilbyde mere personlige og præcise rejseanbefalinger, hvilket forbedrer den samlede brugeroplevelse.
Planlægning er en kritisk komponent af AI-agenters adfærd. Det indebærer at skitsere de nødvendige trin for at nå et mål, med vægt på den nuværende tilstand, ressourcer og mulige forhindringer.
Eksempel: Her er de trin, Rejseagent skal følge for effektivt at hjælpe en bruger med at planlægge deres tur:
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)
# Eksempel på brug inden for en bookinganmodning
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)
Lad os først forstå forskellen mellem RAG-værktøj og Pre-emptive Context Load.

RAG kombinerer et hentningssystem med en generativ model. Når der stilles en forespørgsel, henter hentningssystemet relevante dokumenter eller data fra en ekstern kilde, og denne hentede information bruges til at supplere input til den generative model. Dette hjælper modellen med at generere mere præcise og kontekstuelle relevante svar.
I et RAG-system henter agenten relevant information fra en vidensbase og bruger den til at generere passende svar eller handlinger.
Den korrigerende RAG-tilgang fokuserer på at bruge RAG-teknikker til at rette fejl og forbedre nøjagtigheden af AI-agenter. Dette involverer:
Overvej en søgeagent, der henter information fra nettet for at besvare brugerforespørgsler. Den korrigerende RAG-tilgang kunne involvere:
Korrigerende RAG (Retrieval-Augmented Generation) forbedrer AI’s evne til at hente og generere information samtidig med at den retter eventuelle unøjagtigheder. Lad os se, hvordan Rejseagent kan bruge den korrigerende RAG-tilgang til at give mere præcise og relevante rejseanbefalinger.
Dette involverer:
Eksempel:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Eksempel:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Eksempel:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Eksempel:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Eksempel:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Eksempel:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Eksempel:
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)
Her er et forenklet Python-kodeeksempel, der inkorporerer den korrigerende RAG-tilgang i Rejseagent:
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
# Eksempel på anvendelse
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)
Forhåndsindlæsning af kontekst involverer at indlæse relevant kontekst eller baggrundsinformation i modellen, før den behandler en forespørgsel. Det betyder, at modellen har adgang til denne information fra starten, hvilket kan hjælpe den med at generere mere informerede svar uden at skulle hente yderligere data under processen.
Her er et forenklet eksempel på, hvordan en forhåndsindlæsning af kontekst kunne se ud for en rejseagent-applikation i Python:
class TravelAgent:
def __init__(self):
# Forindlæs populære destinationer og deres 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):
# Hent destinationsinformation fra forindlæst kontekst
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}."
# Eksempel på brug
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Initialisering (__init__ metode): TravelAgent-klassen forindlæser en ordbog, der indeholder information om populære destinationer såsom Paris, Tokyo, New York og Sydney. Denne ordbog inkluderer detaljer som land, valuta, sprog og større seværdigheder for hver destination.
Hentning af information (get_destination_info metode): Når en bruger spørger om en specifik destination, henter get_destination_info-metoden den relevante information fra den forhåndsindlæste kontekstordbog.
Ved at forindlæse konteksten kan rejseagent-applikationen hurtigt svare på brugerspørgsmål uden at skulle hente denne information fra en ekstern kilde i realtid. Dette gør applikationen mere effektiv og responsiv.
At udvikle en plan med et mål indebærer at starte med et klart mål eller ønsket resultat for øje. Ved at definere dette mål på forhånd kan modellen bruge det som en ledestjerne gennem hele den iterative proces. Dette hjælper med at sikre, at hver iteration bevæger sig tættere på at nå det ønskede resultat, hvilket gør processen mere effektiv og fokuseret.
Her er et eksempel på, hvordan du kan udvikle en rejseplan med et mål, før du itererer, for en rejseagent i Python:
En rejseagent ønsker at planlægge en skræddersyet ferie til en klient. Målet er at skabe en rejseplan, der maksimerer klientens tilfredshed baseret på deres præferencer og budget.
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']
# Eksempel på brug
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)
Initialisering (__init__ metode): TravelAgent-klassen initialiseres med en liste over potentielle destinationer, hver med attributter som navn, pris og aktivitetstype.
Udvikling af plan (bootstrap_plan metode): Denne metode skaber en indledende rejseplan baseret på klientens præferencer og budget. Den itererer gennem listen over destinationer og tilføjer dem til planen, hvis de matcher klientens præferencer og passer inden for budgettet.
Matchning af præferencer (match_preferences metode): Denne metode tjekker, om en destination matcher klientens præferencer.
Iteration af plan (iterate_plan metode): Denne metode forfiner den indledende plan ved at forsøge at erstatte hver destination i planen med en bedre match, under hensyntagen til klientens præferencer og budgetbegrænsninger.
Beregning af pris (calculate_cost metode): Denne metode beregner den samlede pris for den nuværende plan, inklusive en potentiel ny destination.
Ved at udvikle planen med et klart mål (f.eks. at maksimere klienttilfredsheden) og iterere for at forfine planen, kan rejseagenten skabe en skræddersyet og optimeret rejseplan til klienten. Denne tilgang sikrer, at rejseplanen stemmer overens med klientens præferencer og budget fra starten og forbedres med hver iteration.
Store sprogmodeller (LLMs) kan bruges til omrangering og scoring ved at vurdere relevansen og kvaliteten af hentede dokumenter eller genererede svar. Sådan fungerer det:
Hentning: Det indledende hentetrin henter et sæt af kandidatdokumenter eller svar baseret på forespørgslen.
Omrangering: LLM’en vurderer disse kandidater og omarrangerer dem baseret på deres relevans og kvalitet. Dette trin sikrer, at den mest relevante og højkvalitetsinformation præsenteres først.
Scoring: LLM’en tildeler hver kandidat en score, som afspejler deres relevans og kvalitet. Dette hjælper med at vælge det bedste svar eller dokument til brugeren.
Ved at udnytte LLM’er til omrangering og scoring kan systemet levere mere præcis og kontekstrelevant information, hvilket forbedrer brugeroplevelsen.
Her er et eksempel på, hvordan en rejseagent kan bruge en stor sprogmodel (LLM) til omrangering og scoring af rejsedestinationer baseret på brugerpræferencer i Python:
En rejseagent ønsker at anbefale de bedste rejsedestinationer til en klient baseret på deres præferencer. LLM’en vil hjælpe med at omrangere og score destinationerne for at sikre, at de mest relevante muligheder præsenteres.
Her er hvordan du kan opdatere det tidligere eksempel til at bruge Azure OpenAI Services:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Generer en prompt til Azure OpenAI
prompt = self.generate_prompt(preferences)
# Definer headers og payload til forespørgslen
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Kald Azure OpenAI API'en for at få de omrangordnede og scorerede destinationer
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Ekstraher og returner anbefalingerne
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
# Eksempel på brug
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)
Initialisering: TravelAgent-klassen initialiseres med en liste over potentielle rejsedestinationer, hver med attributter som navn og beskrivelse.
Hentning af anbefalinger (get_recommendations metode): Denne metode genererer et prompt for Azure OpenAI-tjenesten baseret på brugerens præferencer og foretager en HTTP POST-anmodning til Azure OpenAI API for at få områngerede og scorede destinationer.
Generering af prompt (generate_prompt metode): Denne metode opbygger et prompt til Azure OpenAI, som inkluderer brugerens præferencer og listen over destinationer. Promptet guider modellen til at omrangere og score destinationerne baseret på de angivne præferencer.
API-kald: requests-biblioteket bruges til at foretage en HTTP POST-anmodning til Azure OpenAI API-endpointet. Svaret indeholder de omrangede og scorede destinationer.
Eksempel på brug: Rejseagenten indsamler brugerpræferencer (f.eks. interesse i sightseeing og varieret kultur) og bruger Azure OpenAI-tjenesten til at få omrangede og scorede anbefalinger for rejsedestinationer.
Sørg for at erstatte your_azure_openai_api_key med din faktiske Azure OpenAI API-nøgle og https://your-endpoint.com/... med den faktiske endpoint-URL for din Azure OpenAI-udrulning.
Ved at udnytte LLM til omrangering og scoring kan rejseagenten levere mere personlige og relevante rejseanbefalinger til klienter og forbedre deres samlede oplevelse.
Retrieval-Augmented Generation (RAG) kan være både en prompting-teknik og et værktøj i udviklingen af AI-agenter. At forstå forskellen mellem de to kan hjælpe dig med at udnytte RAG mere effektivt i dine projekter.
Hvad er det?
Hvordan det fungerer:
Eksempel i rejseagent:
Hvad er det?
Hvordan det fungerer:
Eksempel i rejseagent:
| Aspekt | Prompting-teknik | Værktøj |
|---|---|---|
| Manuel vs Automatisk | Manuel formulering af prompts for hver forespørgsel. | Automatisk proces for hentning og generering. |
| Kontrol | Tilbyder mere kontrol over hentningsprocessen. | Strømliner og automatiserer hentning og generering. |
| Fleksibilitet | Muliggør tilpassede prompts baseret på specifikke behov. | Mere effektiv til storskala-implementeringer. |
| Kompleksitet | Kræver formulering og justering af prompts. | Lettere at integrere i AI-agentens arkitektur. |
Prompting-teknik eksempel:
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)
Værktøjseksempel:
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)
Evaluering af relevans er et afgørende aspekt af AI-agenters ydeevne. Det sikrer, at den information, som agenten henter og genererer, er passende, nøjagtig og brugbar for brugeren. Lad os se på, hvordan man evaluerer relevans i AI-agenter, inklusive praktiske eksempler og teknikker.
Eksempel:
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
Eksempel:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Returner de 10 mest relevante elementer
Eksempel:
def process_query(query):
# Brug NLP til at udtrække nøgleinformation fra brugerens forespørgsel
processed_query = nlp(query)
return processed_query
Eksempel:
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
Her er et praktisk eksempel på, hvordan Travel Agent kan evaluere relevansen af rejseanbefalinger:
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] # Returner top 10 relevante elementer
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
# Eksempel på brug
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)
At søge med intention indebærer at forstå og tolke det underliggende formål eller mål bag en brugers forespørgsel for at hente og generere den mest relevante og nyttige information. Denne tilgang går ud over blot at matche nøgleord og fokuserer på at opfange brugerens egentlige behov og kontekst.
Lad os tage Travel Agent som eksempel og se, hvordan søgning med intention kan implementeres.
Indsamling af brugerpræferencer
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Forståelse af brugerintention
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):
# Kombiner den aktuelle forespørgsel med brugerens historik for at forstå konteksten
context = {
"current_query": query,
"user_history": user_history
}
return context
Søg og personaliser resultater
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):
# Eksempelsøgelogik for informativ hensigt
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Eksempelsøgelogik for navigationshensigt
results = search_web(query)
return results
def search_transaction(query, preferences):
# Eksempelsøgelogik for transaktionel hensigt
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Eksempel på personaliseringslogik
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Returner de 10 bedste personaliserede resultater
Eksempel på brug
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)
Kodegenererende agenter bruger AI-modeller til at skrive og køre kode, løse komplekse problemer og automatisere opgaver.
Kodegenererende agenter bruger generative AI-modeller til at skrive og køre kode. Disse agenter kan løse komplekse problemer, automatisere opgaver og levere værdifulde indsigter ved at generere og køre kode i forskellige programmeringssprog.
Forestil dig, at du designer en kodegenererende agent. Sådan kan den fungere:
I dette eksempel designer vi en kodegenererende agent, Rejseagent, som hjælper brugere med at planlægge deres rejse ved at generere og køre kode. Denne agent kan håndtere opgaver som at hente rejsemuligheder, filtrere resultater og samle en rejseplan ved hjælp af generativ AI.
Indsamling af brugerpræferencer
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generering af kode til at hente data
def generate_code_to_fetch_data(preferences):
# Eksempel: Generer kode til at søge efter fly baseret på brugerpræferencer
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):
# Eksempel: Generer kode til at søge efter hoteller
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Udførelse af genereret kode
def execute_code(code):
# Udfør den genererede kode ved hjælp af 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)
Generering af rejseplan
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)
Tilpasning baseret på feedback
def adjust_based_on_feedback(feedback, preferences):
# Juster præferencer baseret på brugerfeedback
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)
# Generer og udfør kode igen med opdaterede præferencer
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)
Baseret på skemaet for tabellen kan man forbedre forespørgselsgenereringsprocessen ved at udnytte miljøbevidsthed og ræsonnering.
Her er et eksempel på, hvordan dette kan gøres:
Her er et opdateret Python-eksempel, der inkorporerer disse koncepter:
def adjust_based_on_feedback(feedback, preferences, schema):
# Juster præferencer baseret på brugerfeedback
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Ræsonnere baseret på skema for at justere andre relaterede præferencer
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):
# Brugerdefineret logik til at justere præferencer baseret på skema og 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):
# Generer kode til at hente flydata baseret på opdaterede præferencer
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generer kode til at hente hoteldata baseret på opdaterede præferencer
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simuler eksekvering af kode og returner mock-data
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Generer rejseplan baseret på fly, hoteller og attraktioner
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Eksempelskema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Eksempel på anvendelse
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Generer og eksekver kode med opdaterede præferencer igen
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-ordbogen definerer, hvordan præferencer skal justeres baseret på feedback. Den inkluderer felter som favorites og avoid med tilhørende justeringer.adjust_based_on_feedback metode): Denne metode justerer præferencer baseret på brugerfeedback og skemaet.adjust_based_on_environment metode): Denne metode tilpasser justeringerne baseret på skemaet og feedback.Ved at gøre systemet miljøbevidst og ræsonnere baseret på skemaet kan det generere mere præcise og relevante forespørgsler, hvilket fører til bedre rejseanbefalinger og en mere personlig brugeroplevelse.
SQL (Structured Query Language) er et kraftfuldt værktøj til interaktion med databaser. Når det bruges som en del af en Retrieval-Augmented Generation (RAG) tilgang, kan SQL hente relevante data fra databaser for at informere og generere svar eller handlinger i AI-agenter. Lad os undersøge, hvordan SQL kan bruges som en RAG-teknik i konteksten af Rejseagent.
Eksempel: En dataanalyse-agent:
Indsamling af brugerpræferencer
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generering af SQL-forespørgsler
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
Udførelse af SQL-forespørgsler
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
Generering af anbefalinger
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)
Flyforespørgsel
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Hotelforespørgsel
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Attraktionsforespørgsel
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Ved at udnytte SQL som en del af Retrieval-Augmented Generation (RAG) teknikken kan AI-agenter som Rejseagent dynamisk hente og anvende relevante data for at give præcise og personlige anbefalinger.
For at demonstrere en implementering af metakognition, lad os skabe en simpel agent, der reflekterer over sin beslutningsproces mens den løser et problem. Til dette eksempel bygger vi et system, hvor en agent forsøger at optimere valget af et hotel, men derefter evaluerer sin egen ræsonnering og justerer sin strategi, når den laver fejl eller suboptimale valg.
Vi simulerer dette ved hjælp af et grundlæggende eksempel, hvor agenten vælger hoteller baseret på en kombination af pris og kvalitet, men den vil “reflektere” over sine beslutninger og justere sig derefter.
Her er et eksempel:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Gemmer de tidligere valgte hoteller
self.corrected_choices = [] # Gemmer de korrigerede valg
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Tilgængelige strategier
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]
# Lad os antage, at vi har noget brugerfeedback, der fortæller os, om det sidste valg var godt eller ej
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Juster strategi, hvis det forrige valg var utilfredsstillende
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"
# Simuler en liste over hoteller (pris og kvalitet)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Opret en agent
agent = HotelRecommendationAgent()
# Trin 1: Agenten anbefaler et hotel ved hjælp af "billigste" strategi
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Trin 2: Agenten reflekterer over valget og justerer strategien om nødvendigt
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Trin 3: Agenten anbefaler igen, denne gang med den justerede strategi
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Nøglen her er agentens evne til at:
Dette er en simpel form for metakognition, hvor systemet er i stand til at tilpasse sin ræsonneringsproces baseret på intern feedback.
Metakognition er et kraftfuldt værktøj, som markant kan forbedre AI-agenters evner. Ved at inkorporere metakognitive processer kan du designe agenter, der er mere intelligente, tilpasningsdygtige og effektive. Brug de ekstra ressourcer til yderligere at udforske den fascinerende verden af metakognition i AI-agenter.
Deltag i Microsoft Foundry Discord for at møde andre lærende, deltage i åbningstimer og få svar på dine AI Agent-spørgsmål.
Ansvarsfraskrivelse: Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi stræber efter nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på originalsproget bør betragtes som den autoritative kilde. For vigtig information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, som måtte opstå ved brug af denne oversættelse.