(Кликните на слику изнад да бисте погледали видео о овом лекцији)
Мета-метакогниција у AI агената
Добродошли на лекцију о метакогницији у AI агентима! Овај поглавље је намењено почетницима који су знатижељни како AI агенти могу да размишљају о сопственим процесима размишљања. На крају ове лекције разумећете кључне концепте и бићете опремљени практичним примерима како да примените метакогницију у дизајну AI агената.
Након завршетка ове лекције, моћи ћете да:
Метакогниција се односи на вишу врсту когнитивних процеса који укључују размишљање о сопственом размишљању. За AI агенте, ово значи да могу да евалуирају и прилагођавају своје акције на основу самосвести и претходних искустава. Метакогниција, или “размишљање о размишљању,” је важан концепт у развоју агенцијских AI система. Он подразумева да AI системи буду свесни својих унутрашњих процеса и да могу да надгледају, регулишу и прилагођавају своје понашање у складу са тим. Као што ми радимо када процењујемо ситуацију или приступамо проблему. Ова самосвест може помоћи AI системима да доносе боље одлуке, идентификују грешке и побољшају свој учинак током времена - поново се повезујући са Туринговим тестом и дебатом о томе да ли ће AI преузети контролу.
У контексту агенцијских AI система, метакогниција може помоћи у решавању неколико изазова, као што су:
Метакогниција, или “размишљање о размишљању,” је виши когнитивни процес који укључује самосвест и саморегулацију сопствених когнитивних процеса. У области AI, метакогниција омогућава агентима да евалуирају и прилагођавају своје стратегије и акције, што доводи до побољшаних способности решавања проблема и доношења одлука. Разумевањем метакогниције можете дизајнирати AI агенте који нису само интелигентнији већ и прилагодљивији и ефикаснији. У правој метакогницији, AI би јасно резоновао о свом сопственом резоновању.
Пример: „Преферирао сам јефтиније летове јер… можда пропуштам директне летове, па ћу поново проверити.“ Бележење како или зашто је изабрао одређену руту.
Метакогниција игра кључну улогу у дизајну AI агената из више разлога:

Пре него што зароните у метакогнитивне процесе, важно је разумети основне компоненте AI агента. AI агент обично садржи:
Ове компоненте раде заједно како би креирале „јединицу експертизе“ која може извршавати специфичне задатке.
Пример: Замислите туристичког агента, агента који не само да планира ваше одморе већ и прилагођава своје кораке у складу са подацима у реалном времену и претходним искуствима корисника.
Замислите да дизајнирате услугу туристичког агента покретану AI-јем. Овај агент, „Туристички агент,“ помаже корисницима у планирању одмора. Да би укључио метакогницију, Туристички агент треба да евалуира и прилагођава своје акције на основу самосвести и претходних искустава. Ево како метакогниција може да игра улогу:
Тренутни задатак је да помогне кориснику да испланира путовање у Париз.
Туристички агент користи метакогницију за евалуацију свог учинка и учење из претходних искустава. На пример:
Ево поједностављеног примера кода како Туристички агент може укључити метакогницију:
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)
# Пример употребе
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)
Укључивањем метакогниције, Туристички агент може дати персонализованије и прецизније препоруке за путовања, побољшавајући укупно корисничко искуство.
Планирање је критични део понашања AI агената. Оно подразумева опис корака потребних за постизање циља, узимајући у обзир тренутно стање, ресурсе и могуће препреке.
Пример: Ево корака које Туристички агент треба да предузме да би ефикасно помогао кориснику да испланира путовање:
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)
# Пример коришћења унутар захтева за боокинг
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)
Прво хајде да разумемо разлику између RAG алата и превентивног учитавања контекста.

RAG комбинује систем за преузимање података са генеративним моделом. Када се постави упит, систем за преузимање дохвата релевантне документе или податке из спољног извора, а ти преузети подаци се користе да обогате улаз генеративном моделу. Ово помаже моделу да генерише прецизније и контекстуално релевантне одговоре.
У RAG систему, агент дохвата релевантне информације из базе знања и користи их за генерисање одговарајућих одговора или акција.
Корективни RAG приступ је усредсређен на коришћење RAG техника за исправљање грешака и побољшање тачности AI агената. Ово обухвата:
Замислите агента за претрагу који дохвата информације са веба да би одговарао на корисничке упите. Корективни RAG приступ може укључити:
Корективни RAG (Retrieval-Augmented Generation) побољшава способност AI да дохвата и генерише информације уз исправљање нетачности. Погледајмо како Туристички агент може користити овај приступ да би пружио прецизније и релевантније препоруке за путовања.
Ово обухвата:
Пример:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Пример:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Пример:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Пример:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Пример:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Пример:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Пример:
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)
Ево поједностављеног Python кода који укључује приступ корективног RAG у Туристичком агенту:
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
# Пример употребе
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)
Преемптивно учитавање контекста подразумева уношење релевантних информација или позадинских података у модел пре обраде упита. То значи да модел од почетка има приступ овим информацијама, што му може помоћи да генерише информисаније одговоре без потребе за додатним преузимањем података током самог процеса.
Ево једног поједностављеног примера како би преемптивно учитавање контекста могло изгледати у апликацији за агента путовања написаној у Пајтону:
class TravelAgent:
def __init__(self):
# Унапред учитајте популарне дестинације и њихове информације
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):
# Преузмите информације о дестинацији из унапред учитаног контекста
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}."
# Пример употребе
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Иницијализација (__init__ метод): Класа TravelAgent унапред учитава речник који садржи информације о популарним дестинацијама као што су Париз, Токио, Њујорк и Сиднеј. Тај речник укључује детаље као што су држава, валута, језик и главне атракције сваке дестинације.
Добијање информација (get_destination_info метод): Када корисник упути упит о одређеној дестинацији, метод get_destination_info преузима релевантне информације из унапред учитаног речника контекста.
Унапред учитавањем контекста, апликација агента путовања може брзо одговарати на корисничке упите без потребе да у реалном времену преузима ове податке из спољног извора. Ово чини апликацију ефикаснијом и одзивнијом.
Иницијализација плана са одређеним циљем подразумева почетак са јасним циљем или жељеним исходом на уму. Дефинисањем овог циља унапред, модел може користити тај циљ као водиљу током итеративног процеса. Ово помаже да свака итерација буде усмерена ка остварењу жељеног резултата, чинећи процес ефикаснијим и фокусираног.
Ево примера како можете иницијализовати план путовања са циљем пре него што почнете са понављањима, за агента путовања у Пајтону:
Агент путовања жели да испланира прилагођено путовање за клијента. Циљ је креирати план путовања који максимизира задовољство клијента на основу његових преференција и буџета.
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']
# Пример употребе
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)
Иницијализација (__init__ метод): Класа TravelAgent се иницијализује са списком потенцијалних дестинација, од којих свака има атрибуте као што су назив, цена и тип активности.
Иницијализација плана (bootstrap_plan метод): Овај метод креира почетни план путовања на основу преференција и буџета клијента. Он пролази кроз листу дестинација и додаје их плану ако одговарају преференцијама клијента и уклапају се у буџет.
Усклађивање преференција (match_preferences метод): Овај метод проверава да ли дестинација одговара преференцијама клијента.
Итерација плана (iterate_plan метод): Овај метод усавршава почетни план тако што покушава да замени сваку дестинацију у плану бољим кандидатом, узимајући у обзир преференције и буџет клијента.
Израчун трошкова (calculate_cost метод): Овај метод рачуна укупне трошкове тренутног плана, укључујући потенцијално увођење нове дестинације.
Иницијализовањем плана са јасним циљем (нпр. максимизовање задовољства клијента) и понављањем ради усавршавања плана, агент путовања може креирати прилагођени и оптимизовани план путовања за клијента. Овај приступ осигурава да план путовања буде усклађен са преференцијама и буџетом клијента од почетка и да се побољшава сваким циклусом.
Велики језички модели (LLM) могу се користити за поновно рангирање и оцењивање тако што процењују релевантност и квалитет пронађених докумената или генерисаних одговора. Ево како то функционише:
Претраживање: Почетни корак укључује преузимање скупа кандидата — докумената или одговора — на основу упита.
Поновно рангирање: LLM процењује ове кандидате и рангира их поново на основу њихове релевантности и квалитета. Овај корак гарантује да су најрелевантније и најквалитетније информације приказане прве.
Оцењивање: LLM додељује поене сваком кандидату који одражавају њихову релевантност и квалитет. Ово помаже у избору најбољег одговора или документа за корисника.
Искоришћавањем LLM за поновно рангирање и оцењивање, систем може да пружи прецизније и контекстуално релевантније информације, побољшавајући укупно корисничко искуство.
Ево примера како агент путовања може користити Велики језички модел (LLM) за поновно рангирање и оцењивање дестинација путовања на основу корисничких преференција у Пајтону:
Агент путовања жели да препоручи најбоље дестинације клијенту на основу његових преференција. LLM ће помоћи у поновном рангирању и оцењивању дестинација како би били представљени најрелевантнији избори.
Ево како можете ажурирати претходни пример да користи Azure OpenAI сервисе:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Генериши промпт за Azure OpenAI
prompt = self.generate_prompt(preferences)
# Дефиниши заглавља и садржај за захтев
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Позови Azure OpenAI API да добијеш поново рангиране и оцењене дестинације
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Извуци и врати препоруке
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
# Пример коришћења
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)
Иницијализација: Класа TravelAgent се иницијализује са списком потенцијалних дестинација путовања, од којих свака има атрибуте као што су назив и опис.
Добијање препорука (get_recommendations метод): Овај метод генерише упит (prompt) за Azure OpenAI сервис на основу корисничких преференција и шаље HTTP POST захтев ка Azure OpenAI API-ју како би добио поново рангиране и оцењене дестинације.
Генерисање упита (generate_prompt метод): Овај метод конструише упит за Azure OpenAI, укључујући корисничке преференције и листу дестинација. Упит упућује моделу да поново рангира и оцени дестинације на основу датих преференција.
Позив API-ју: Библиотека requests се користи за слање HTTP POST захтева ка крајњој тачки Azure OpenAI API-ја. Одговор садржи поново рангиране и оцењене дестинације.
Пример коришћења: Агент путовања прикупља корисничке преференције (нпр. интерес за разгледање и разнолику културу) и користи Azure OpenAI сервис да добије поново рангиране и оцењене препоруке дестинација путовања.
Обавезно замените your_azure_openai_api_key вашим стварним Azure OpenAI API кључем и https://your-endpoint.com/... стварном URL адресом вашег Azure OpenAI ентитета.
Искоришћавањем LLM за поновно рангирање и оцењивање, агент путовања може пружити персонализованије и релевантније препоруке дестинација својим клијентима, побољшавајући њихово укупно искуство.
Ретрајвал-Аугментед Генератион (RAG) може бити и техника за постављање упита и алат у развоју AI агената. Разумевање разлике између ова два може вам помоћи да ефикасније користите RAG у вашим пројектима.
Шта је то?
Како ради:
Пример у агента путовања:
Шта је то?
Како ради:
Пример у агента путовања:
| Аспект | Техника заупитања | Алат |
|---|---|---|
| Ручно vs Аутоматско | Ручно формулисање промптова за сваки упит. | Аутоматизовани процес претраживања и генерисања. |
| Контрола | Омогућава већу контролу над процесом претраживања. | Поједностављује и аутоматизује претраживање и генерисање. |
| Флексибилност | Дозвољава прилагођене промптове на основу специфичних потреба. | Ефикасније за имплементације на великој скали. |
| Комплексност | Захтева креирање и прилагођавање промптова. | Лакше за интеграцију у архитектуру AI агента. |
Пример технике заупитања:
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)
Пример алата:
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)
Евалуација релевантности је кључан аспект у перформансама AI агената. Она осигурава да су информације које агент преузима и генерише прикладне, тачне и корисне за корисника. Погледајмо како да евалуирамо релевантност у AI агентима, укључујући практичне примере и технике.
Пример:
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
Пример:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Вратити 10 најрелевантнијих ставки
Пример:
def process_query(query):
# Користите НЛП за извлачење кључних информација из упита корисника
processed_query = nlp(query)
return processed_query
Пример:
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
Ево практичног примера како агент путовања може евалуирати релевантност препорука за путовања:
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] # Вратити топ 10 релевантних ставки
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
# Пример употребе
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)
Претраживање са намерама подразумева разумевање и тумачење правог циља или намере иза корисничког упита како би се пронашле и генерисале најрелевантније и најкорисније информације. Овај приступ превазилази само подударање кључних речи и фокусира се на схватање стварних потреба и контекста корисника.
Узмимо агента путовања као пример да видимо како се претраживање са намерама може имплементирати.
Прикупљање корисничких преференција
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Разумевање намера корисника
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):
# Комбинујте тренутни упит са корисничком историјом ради бољег разумевања контекста
context = {
"current_query": query,
"user_history": user_history
}
return context
Претрага и персонализација резултата
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):
# Пример логике претраге за информативну намеру
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Пример логике претраге за навигациону намеру
results = search_web(query)
return results
def search_transaction(query, preferences):
# Пример логике претраге за трансакциону намеру
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Пример логике персонализације
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Врати топ 10 персонализованих резултата
Пример коришћења
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)
Агенти за генерисање кода користе AI моделе за писање и извршавање кода, решавајући сложене проблеме и аутоматизујући задатке.
Агенти за генерисање кода користе генеративне AI моделе за писање и извршавање кода. Ови агенти могу решавати сложене проблеме, аутоматизовати задатке и пружати вредне увидe генеришући и извршавајући код на различитим програмским језицима.
Замислите да дизајнирате агента за генерисање кода. Ево како би то могло да функционише:
У овом примеру дизајнираћемо агента за генерисање кода, Туристичка агенција, који помаже корисницима у планирању путовања генеришући и извршавајући код. Овај агент може да обработи задатке као што су претрага опција путовања, филтрирање резултата и састављање итинерера користећи генеративни AI.
Прикупљање корисничких преференција
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Генерисање кода за преузимање података
def generate_code_to_fetch_data(preferences):
# Пример: Генериши код за претрагу летова на основу корисничких преференција
code = f"""
def search_flights():
import requests
response = requests.get('https://api.example.com/flights', params={preferences})
return response.json()
"""
return code
def generate_code_to_fetch_hotels(preferences):
# Пример: Генериши код за претрагу хотела
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Извршавање генерисаног кода
def execute_code(code):
# Покрените генерисани код користећи 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)
Генерисање итинерера
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)
Прилагођавање на основу повратних информација
def adjust_based_on_feedback(feedback, preferences):
# Подесите преференције на основу повратних информација корисника
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)
# Поново генеришите и извршите код са ажурираном конфигурацијом
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)
Коришћење шеме табеле за побољшање процеса генерисања упита уз примену свести о окружењу и размишљања.
Ево примера како се то може реализовати:
Ево ажурираног примера Python кода који обухвата ове концепте:
def adjust_based_on_feedback(feedback, preferences, schema):
# Прилагодити поставке на основу повратних информација корисника
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Закључивање засновано на шеми за прилагођавање других релевантних поставки
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):
# Прилагођена логика за прилагођавање поставки на основу шеме и повратних информација
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):
# Генерисати код за преузимање података о летовима на основу ажурираног преференције
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Генерисати код за преузимање података о хотелима на основу ажурираног преференције
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Симулирати извршавање кода и вратити лажне податке
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Генерисати итинерар на основу летова, хотела и атракција
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Пример шеме
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Пример коришћења
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Поново генерисати и извршити код са ажурираном преференцијом
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 дефинише како треба прилагодити преференције на основу повратних информација. Укључује поља као што су favorites и avoid са одговарајућим прилагођавањима.adjust_based_on_feedback метода): Ова метода прилагођава преференције на основу корисничких повратних информација и шеме.adjust_based_on_environment метода): Ова метода прилагођава прилагођавања на основу шеме и повратних информација.Учинивши систем свесним свог окружења и размишљајући у складу са шемом, могуће је генерисати прецизније и релевантније упите, што води ка бољим препорукама за путовања и персонализованијем искуству корисника.
SQL (Структурирани упитни језик) је моћан алат за интеракцију са базама података. Када се користи као део приступа Retrieval-Augmented Generation (RAG), SQL може преузимати релевантне податке из база како би информисао и генерисао одговоре или радње у AI агентима. Погледајмо како се SQL може користити као RAG техника у контексту Туристичке агенције.
Пример: Агент за анализу података:
Прикупљање корисничких преференција
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Генерисање SQL упита
def generate_sql_query(table, preferences):
query = f"SELECT * FROM {table} WHERE "
conditions = []
for key, value in preferences.items():
conditions.append(f"{key}='{value}'")
query += " AND ".join(conditions)
return query
Извршавање SQL упита
import sqlite3
def execute_sql_query(query, database="travel.db"):
connection = sqlite3.connect(database)
cursor = connection.cursor()
cursor.execute(query)
results = cursor.fetchall()
connection.close()
return results
Генерисање препорука
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)
Упит за летове
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Упит за хотел
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Упит за атракције
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Коришћењем SQL као дела технике Retrieval-Augmented Generation (RAG), AI агенти као што је Туристичка агенција могу динамички преузимати и користити релевантне податке да пруже прецизне и персонализоване препоруке.
Да бисмо демонстрирали имплементацију метакогниције, направимо једноставног агента који размишља о свом процесу доношења одлука док решава проблем. За овај пример направићемо систем у коме агент покушава да оптимизује избор хотела, али затим процењује своје разлоге и прилагођава стратегију када направи грешке или субоптималне изборе.
Ово ћемо симулирати помоћу једноставног примера где агент бира хотеле на основу комбинације цене и квалитета, али ће „размишљати“ о својим одлукама и прилагођавати се у складу са тим.
Ево примера:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Чува изабране хотеле претходно
self.corrected_choices = [] # Чува исправљене изборе
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Расположиве стратегије
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]
# Хајде да претпоставимо да имамо повратне информације корисника које нам говоре да ли је последњи избор био добар или не
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Прилагоди стратегију ако је претходни избор био незадовољавајући
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"
# Симулира листу хотела (цена и квалитет)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Креира агента
agent = HotelRecommendationAgent()
# Корак 1: Агент препоручује хотел користећи стратегију "најјефтиније"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Корак 2: Агент разматра избор и по потреби прилагођава стратегију
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Корак 3: Агент поново препоручује, овога пута користећи прилагођену стратегију
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Кључно овде је способност агента да:
Ово је једноставан облик метакогниције где систем може прилагођавати свој процес разматрања на основу интерне повратне информације.
Метакогниција је моћан алат који може значајно побољшати способности AI агената. Уводањем метакогнитивних процеса, можете дизајнирати агенте који су интелигентнији, прилагодљивији и ефикаснији. Користите додатне ресурсе за даље истраживање фасцинантног света метакогниције у AI агентима.
Придружите се Microsoft Foundry Discord да упознате друге учеснике, присуствујете офис сати и добијете одговоре на питања о AI агенатима.
Изјава о одрицању одговорности: Овај документ је преведен коришћењем услуге за аутоматски превод Co-op Translator. Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.