(Klikk på bildet over for å se video av denne leksjonen)
Metakognisjon i AI-agenter
Velkommen til leksjonen om metakognisjon i AI-agenter! Dette kapitlet er laget for nybegynnere som er nysgjerrige på hvordan AI-agenter kan reflektere over sine egne tenkeprosesser. Ved slutten av denne leksjonen vil du forstå nøkkelbegreper og være utstyrt med praktiske eksempler for å anvende metakognisjon i design av AI-agenter.
Etter å ha fullført denne leksjonen, vil du kunne:
Metakognisjon refererer til høyere ordens kognitive prosesser som involverer å tenke på egen tenkning. For AI-agenter betyr dette å kunne evaluere og justere sine handlinger basert på selvbevissthet og tidligere erfaringer. Metakognisjon, eller “å tenke på tenkning”, er et viktig konsept i utviklingen av agentiske AI-systemer. Det innebærer at AI-systemer er bevisste på sine egne interne prosesser og kan overvåke, regulere og tilpasse sin atferd deretter. Akkurat som vi gjør når vi leser rommet eller gransker et problem. Denne selvbevisstheten kan hjelpe AI-systemer å ta bedre beslutninger, identifisere feil, og forbedre ytelsen over tid – som igjen knytter seg til Turing-testen og debatten om hvorvidt AI vil ta over.
I sammenheng med agentiske AI-systemer kan metakognisjon hjelpe med flere utfordringer, slik som:
Metakognisjon, eller “å tenke på tenkning”, er en kognitiv prosess på høyere nivå som involverer selvbevissthet og selvregulering av egne kognitive prosesser. Innen AI gir metakognisjon agenter mulighet til å evaluere og tilpasse sine strategier og handlinger, noe som fører til bedre problemløsning og beslutningsevner. Ved å forstå metakognisjon kan du designe AI-agenter som ikke bare er mer intelligente, men også mer tilpasningsdyktige og effektive. I ekte metakognisjon vil du se at AI eksplisitt resonnerer rundt sitt eget resonnement.
Eksempel: “Jeg prioriterte billigere fly fordi… jeg kan gå glipp av direkteflyvninger, så jeg sjekker på nytt.” Holde oversikt over hvordan eller hvorfor den valgte en bestemt rute.
Metakognisjon spiller en avgjørende rolle i design av AI-agenter av flere grunner:

Før vi dykker ned i metakognitive prosesser, er det viktig å forstå de grunnleggende komponentene i en AI-agent. En AI-agent består typisk av:
Disse komponentene jobber sammen for å skape en “ekspertiseenhet” som kan utføre spesifikke oppgaver.
Eksempel: Tenk på en reiseagent, et agentsystem som ikke bare planlegger ferien din, men også justerer ruten basert på sanntidsdata og tidligere kundereiseerfaringer.
Forestill deg at du designer en AI-drevet reiseagenttjeneste. Denne agenten, “Reiseagent”, hjelper brukere med å planlegge ferier. For å inkorporere metakognisjon må Reiseagent evaluere og justere sine handlinger basert på selvbevissthet og tidligere erfaringer. Slik kan metakognisjon spille en rolle:
Den nåværende oppgaven er å hjelpe en bruker med å planlegge en tur til Paris.
Reiseagent bruker metakognisjon for å evaluere sin egen ytelse og lære av tidligere erfaringer. For eksempel:
Her er et forenklet eksempel på hvordan Reiseagents kode kan se ut når metakognisjon er innarbeidet:
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øk etter flyreiser, hoteller og attraksjoner basert på preferanser
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 tilbakemeldinger og juster fremtidige anbefalinger
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Eksempel på bruk
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 å inkorporere metakognisjon kan Reiseagent gi mer personlige og nøyaktige reiseanbefalinger, noe som forbedrer brukeropplevelsen.
Planlegging er en kritisk komponent i AI-agenters oppførsel. Det innebærer å skissere trinnene som trengs for å oppnå et mål, med tanke på nåværende tilstand, ressurser og mulige hindringer.
Eksempel: Her er trinnene Reiseagent må ta for å hjelpe en bruker med å planlegge turen effektivt:
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å bruk i en bookingforespørsel
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)
La oss først begynne med å forstå forskjellen mellom RAG-verktøy og Pre-emptive Context Load

RAG kombinerer et hentingssystem med en generativ modell. Når et spørsmål stilles, henter hentingssystemet relevante dokumenter eller data fra en ekstern kilde, og denne informasjonen brukes til å berike inngangen til den generative modellen. Dette hjelper modellen med å generere mer nøyaktige og kontekstrelevante svar.
I et RAG-system henter agenten relevant informasjon fra en kunnskapsbase og bruker denne til å generere passende svar eller handlinger.
Den korrigerende RAG-tilnærmingen fokuserer på å bruke RAG-teknikker for å rette opp feil og forbedre nøyaktigheten til AI-agenter. Dette innebærer:
Tenk på en søkeagent som henter informasjon fra nettet for å svare på brukerforespørsler. Den korrigerende RAG-tilnærmingen kan innebære:
Korrigerende RAG (Retrieval-Augmented Generation) forbedrer en AIs evne til å hente og generere informasjon samtidig som den retter opp eventuelle unøyaktigheter. La oss se hvordan Reiseagent kan bruke den korrigerende RAG-tilnærmingen for å gi mer presise og relevante reiseanbefalinger.
Dette innebærer:
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 som inkorporerer korrigerende RAG-tilnærming i Reiseagent:
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å bruk
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åndslasting av kontekst innebærer å laste relevant kontekst eller bakgrunnsinformasjon inn i modellen før den behandler en forespørsel. Dette betyr at modellen har tilgang til denne informasjonen fra starten av, noe som kan hjelpe den med å generere mer informerte svar uten å måtte hente ekstra data under prosessen.
Her er et forenklet eksempel på hvordan en forhåndslasting av kontekst kan se ut for en reisebyråapplikasjon i Python:
class TravelAgent:
def __init__(self):
# Forbelast populære destinasjoner og deres informasjon
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 destinasjonsinformasjon fra forhåndslastet 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å bruk
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Initialisering (__init__-metode): TravelAgent-klassen forhåndslaster en ordbok som inneholder informasjon om populære destinasjoner som Paris, Tokyo, New York og Sydney. Denne ordboken inkluderer detaljer som land, valuta, språk og viktige attraksjoner for hver destinasjon.
Henting av informasjon (get_destination_info-metode): Når en bruker stiller spørsmål om en spesifikk destinasjon, henter get_destination_info-metoden relevant informasjon fra den forhåndslastede kontekstordboken.
Ved å forhåndslaste konteksten kan reisebyråapplikasjonen raskt svare på brukerforespørsler uten å måtte hente denne informasjonen fra en ekstern kilde i sanntid. Dette gjør applikasjonen mer effektiv og responsiv.
Å starte en plan med et mål innebærer å begynne med en klar hensikt eller ønsket resultat i tankene. Ved å definere dette målet på forhånd kan modellen bruke det som en ledende prinsipp gjennom hele den iterative prosessen. Dette hjelper med å sikre at hver iterasjon beveger seg nærmere det ønskede resultatet, noe som gjør prosessen mer effektiv og fokusert.
Her er et eksempel på hvordan du kan starte en reiseplan med et mål før du itererer for en reisebyråapplikasjon i Python:
Et reisebyrå ønsker å planlegge en skreddersydd ferie for en kunde. Målet er å lage en reiseplan som maksimerer kundens tilfredshet basert på deres preferanser og budsjett.
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å bruk
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 potensielle destinasjoner, hver med attributter som navn, kostnad og aktivitetstype.
Starte Planleggingen (bootstrap_plan-metode): Denne metoden lager en innledende reiseplan basert på kundens preferanser og budsjett. Den går gjennom listen over destinasjoner og legger dem til planen hvis de matcher kundens preferanser og passer innenfor budsjettet.
Matchende Preferanser (match_preferences-metode): Denne metoden sjekker om en destinasjon matcher kundens preferanser.
Iterere Planen (iterate_plan-metode): Denne metoden forbedrer den innledende planen ved å prøve å erstatte hver destinasjon i planen med en bedre match, med hensyn til kundens preferanser og budsjettbegrensninger.
Beregne Kostnad (calculate_cost-metode): Denne metoden beregner den totale kostnaden for den nåværende planen, inkludert en potensiell ny destinasjon.
Ved å starte planen med et klart mål (f.eks. å maksimere kundetilfredshet) og iterere for å forbedre planen, kan reisebyrået lage en skreddersydd og optimalisert reiserute for kunden. Denne tilnærmingen sikrer at reiseplanen samsvarer med kundens preferanser og budsjett fra starten av, og forbedres med hver iterasjon.
Store språkmodeller (LLMs) kan brukes til omrangering og poengsetting ved å evaluere relevans og kvalitet på hentede dokumenter eller genererte svar. Slik fungerer det:
Henting: Det første hentetrinnet henter et sett med kandidatdokumenter eller svar basert på forespørselen.
Omrangering: LLM vurderer disse kandidatene og omrangerer dem basert på relevans og kvalitet. Dette trinnet sikrer at det mest relevante og høykvalitetsinformasjonen presenteres først.
Poengsetting: LLM tildeler poeng til hver kandidat som reflekterer deres relevans og kvalitet. Dette hjelper til med å velge det beste svaret eller dokumentet for brukeren.
Ved å utnytte LLM for omrangering og poengsetting, kan systemet gi mer nøyaktig og kontekstuelt relevant informasjon, noe som forbedrer brukeropplevelsen.
Her er et eksempel på hvordan et reisebyrå kan bruke en stor språkmodell (LLM) for omrangering og poengsetting av reisemål basert på brukerpreferanser i Python:
Et reisebyrå ønsker å anbefale de beste reisemålene til en kunde basert på deres preferanser. LLM vil hjelpe til med å omrangere og poengsette destinasjonene for å sikre at de mest relevante alternativene presenteres.
Slik kan du oppdatere det tidligere eksemplet for å bruke Azure OpenAI-tjenester:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Generer en prompt for Azure OpenAI
prompt = self.generate_prompt(preferences)
# Definer overskrifter og innhold for forespørselen
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Kall Azure OpenAI API for å få de om-rangerte og scorede destinasjonene
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Ekstraher og returner anbefalingene
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å bruk
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 potensielle reisemål, hvor hvert har attributter som navn og beskrivelse.
Få anbefalinger (get_recommendations-metode): Denne metoden genererer en prompt for Azure OpenAI-tjenesten basert på brukerens preferanser og gjør en HTTP POST-forespørsel til Azure OpenAI API for å få omrangert og poengsatte destinasjoner.
Generere Prompt (generate_prompt-metode): Denne metoden bygger en prompt til Azure OpenAI, inkludert brukerens preferanser og listen over destinasjoner. Prompten guider modellen til å omrangere og poengsette destinasjonene basert på de oppgitte preferansene.
API-kall: requests-biblioteket brukes til å gjøre en HTTP POST-forespørsel til Azure OpenAI API-endepunktet. Svaret inneholder de omrangede og poengsatte destinasjonene.
Eksempel på bruk: Reisebyrået samler inn brukerpreferanser (for eksempel interesse for sightseeing og mangfoldig kultur) og bruker Azure OpenAI-tjenesten for å få omrangert og poengsatte anbefalinger for reisemål.
Husk å bytte ut your_azure_openai_api_key med din faktiske Azure OpenAI API-nøkkel og https://your-endpoint.com/... med den faktiske endepunktadressen for din Azure OpenAI-distribusjon.
Ved å utnytte LLM for omrangering og poengsetting kan reisebyrået tilby mer personaliserte og relevante reiseanbefalinger til klientene, og dermed forbedre deres totale opplevelse.
Retrieval-Augmented Generation (RAG) kan være både en prompting-teknikk og et verktøy i utviklingen av AI-agenter. Å forstå forskjellen mellom de to kan hjelpe deg med å utnytte RAG mer effektivt i dine prosjekter.
Hva er det?
Hvordan det fungerer:
Eksempel i Reisebyrå:
Hva er det?
Hvordan det fungerer:
Eksempel i Reisebyrå:
| Aspekt | Prompting-teknikk | Verktøy |
|---|---|---|
| Manuell vs Automatisk | Manuell formulering av prompts for hver forespørsel. | Automatisert prosess for innhenting og generering. |
| Kontroll | Gir mer kontroll over henteprosessen. | Strømlinjeformer og automatiserer hente- og genereringsprosessen. |
| Fleksibilitet | Muliggjør tilpassede prompts basert på spesifikke behov. | Mer effektivt for storskala implementeringer. |
| Kompleksitet | Krever å utforme og justere prompts. | Enklere å integrere i en AI-agents arkitektur. |
Eksempel på Prompting-teknikk:
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)
Eksempel på Verktøy:
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 av relevans er et avgjørende aspekt ved AI-agenters ytelse. Det sikrer at informasjonen som hentes og genereres av agenten er passende, korrekt og nyttig for brukeren. La oss utforske hvordan man kan evaluere relevans i AI-agenter, inkludert 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 topp 10 relevante elementer
Eksempel:
def process_query(query):
# Bruk NLP for å hente ut nøkkelinformasjon fra brukerens forespørsel
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 Reisebyrå kan evaluere relevansen av reiseanbefalinger:
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 de 10 mest relevante elementene
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å bruk
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)
Søking med intensjon innebærer å forstå og tolke det underliggende formålet eller målet bak en brukers forespørsel for å hente og generere den mest relevante og nyttige informasjonen. Denne tilnærmingen går utover bare å matche nøkkelord og fokuserer på å fatte brukerens faktiske behov og kontekst.
La oss ta Reisebyrå som et eksempel for å se hvordan søking med intensjon kan implementeres.
Samle inn brukerpreferanser
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Forstå brukerintensjon
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"
Kontekstbevissthet
def analyze_context(query, user_history):
# Kombiner nåværende forespørsel med brukerhistorikk for å forstå konteksten
context = {
"current_query": query,
"user_history": user_history
}
return context
Søk og personliggjør 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):
# Eksempel på søkelogikk for informasjonsintensjon
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Eksempel på søkelogikk for navigasjonsintensjon
results = search_web(query)
return results
def search_transaction(query, preferences):
# Eksempel på søkelogikk for transaksjonsintensjon
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Eksempel på personaliseringslogikk
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Returner topp 10 personaliserte resultater
Eksempel på bruk
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 bruker AI-modeller til å skrive og kjøre kode, løse komplekse problemer og automatisere oppgaver.
Kodegenererende agenter bruker generative AI-modeller til å skrive og kjøre kode. Disse agentene kan løse komplekse problemer, automatisere oppgaver og gi verdifulle innsikter ved å generere og kjøre kode i ulike programmeringsspråk.
Tenk deg at du designer en kodegenererende agent. Slik kan den fungere:
I dette eksemplet skal vi designe en kodegenererende agent, Reiseagent, som hjelper brukere med å planlegge reisen ved å generere og kjøre kode. Denne agenten kan håndtere oppgaver som å hente reisevalg, filtrere resultater og sette sammen en reiseplan ved hjelp av generativ AI.
Innsamling av brukerpreferanser
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generering av kode for datainnhenting
def generate_code_to_fetch_data(preferences):
# Eksempel: Generer kode for å søke etter flyreiser basert på brukerpreferanser
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 for å søke etter hoteller
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Utføring av generert kode
def execute_code(code):
# Kjør den genererte koden ved hjelp av 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 av reiseplan
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)
Justering basert på tilbakemeldinger
def adjust_based_on_feedback(feedback, preferences):
# Juster preferanser basert på brukerfeedback
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 på nytt og kjør kode med oppdaterte preferanser
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)
Basert på skjemaet til tabellen kan dette virkelig forbedre prosessen med spørringsgenerering ved å utnytte miljøbevissthet og resonnement.
Her er et eksempel på hvordan dette kan gjøres:
Her er et oppdatert Python-eksempel som inkorporerer disse konseptene:
def adjust_based_on_feedback(feedback, preferences, schema):
# Juster preferanser basert på brukerfeedback
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Resonnement basert på skjema for å justere andre relaterte preferanser
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):
# Tilpasset logikk for å justere preferanser basert på skjema og tilbakemelding
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 for å hente flydata basert på oppdaterte preferanser
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generer kode for å hente hotelldata basert på oppdaterte preferanser
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simuler utførelse av kode og returner mock-data
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Generer reiserute basert på fly, hoteller og attraksjoner
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Eksempel på skjema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Eksempel på bruk
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Regenerer og kjør kode med oppdaterte preferanser
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-ordboken definerer hvordan preferanser bør justeres basert på tilbakemelding. Den inkluderer felt som favorites og avoid med tilhørende justeringer.adjust_based_on_feedback metoden): Denne metoden justerer preferanser basert på brukertilbakemeldinger og skjemaet.adjust_based_on_environment metoden): Denne metoden tilpasser justeringene basert på skjemaet og tilbakemeldinger.Ved å gjøre systemet miljøbevisst og resonnere basert på skjemaet, kan det generere mer nøyaktige og relevante spørringer, noe som fører til bedre reiseanbefalinger og en mer personlig brukeropplevelse.
SQL (Structured Query Language) er et kraftig verktøy for å samhandle med databaser. Når det brukes som del av en Retrieval-Augmented Generation (RAG)-tilnærming, kan SQL hente relevant data fra databaser for å informere og generere svar eller handlinger i AI-agenter. La oss utforske hvordan SQL kan brukes som en RAG-teknikk i sammenheng med Reiseagent.
Eksempel: En dataanalyseagent:
Innsamling av brukerpreferanser
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Generering av SQL-spørringer
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
Utføring av SQL-spørringer
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 av 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)
Flyspørring
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Hotellspørring
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Attraksjonsspørring
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Ved å utnytte SQL som del av Retrieval-Augmented Generation (RAG)-teknikken, kan AI-agenter som Reiseagent dynamisk hente og bruke relevant data for å gi nøyaktige og personlige anbefalinger.
For å demonstrere en implementering av metakognisjon, la oss lage en enkel agent som reflekterer over sin beslutningsprosess mens den løser et problem. I dette eksemplet bygger vi et system der en agent prøver å optimalisere valget av et hotell, men som deretter evaluerer sitt eget resonnement og justerer strategien når den gjør feil eller suboptimale valg.
Vi skal simulere dette med et grunnleggende eksempel der agenten velger hoteller basert på en kombinasjon av pris og kvalitet, men som “reflekterer” over sine beslutninger og justerer seg deretter.
Her er et eksempel:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Lagrer hotellene som ble valgt tidligere
self.corrected_choices = [] # Lagrer de korrigerte valgene
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Tilgjengelige 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]
# La oss anta at vi har tilbakemeldinger fra brukeren som forteller oss om det siste valget var bra eller ikke
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Juster strategi hvis det forrige valget 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}
]
# Lag en agent
agent = HotelRecommendationAgent()
# Steg 1: Agenten anbefaler et hotell ved å bruke "billigste" strategi
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Steg 2: Agenten reflekterer over valget og justerer strategien om nødvendig
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Steg 3: Agenten anbefaler igjen, denne gangen ved å bruke den justerte strategien
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Nøkkelen her er agentens evne til å:
Dette er en enkel form for metakognisjon der systemet er i stand til å justere sin resonnementprosess basert på intern tilbakemelding.
Metakognisjon er et kraftfullt verktøy som kan forbedre AI-agenters evner betydelig. Ved å integrere metakognitive prosesser kan du designe agenter som er mer intelligente, tilpasningsdyktige og effektive. Bruk de ekstra ressursene for å utforske den fascinerende verdenen av metakognisjon i AI-agenter videre.
Bli med i Microsoft Foundry Discord for å møte andre lærende, delta på kontortimer og få svar på dine spørsmål om AI-agenter.
Ansvarsfraskrivelse: Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.