(Кликните на слику изнад да бисте погледали видео овог часа)
Метакогниција код 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):
# Search for flights, hotels, and attractions based on preferences
flights = search_flights(self.user_preferences)
hotels = search_hotels(self.user_preferences)
attractions = search_attractions(self.user_preferences)
return flights, hotels, attractions
def generate_recommendations(self):
flights, hotels, attractions = self.retrieve_information()
itinerary = create_itinerary(flights, hotels, attractions)
return itinerary
def adjust_based_on_feedback(self, feedback):
self.experience_data.append(feedback)
# Analyze feedback and adjust future recommendations
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Example usage
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
Укључивањем метакогниције, Туристички агент може пружити персонализованије и тачније препоруке за путовања, побољшавајући укупно корисничко искуство.
Планирање је критична компонента понашања 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)
# Example usage within a booing request
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
itinerary = travel_agent.generate_recommendations()
print("Suggested Itinerary:", itinerary)
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
travel_agent.adjust_based_on_feedback(feedback)
Прво, хајде да разумемо разлику између RAG алатке и превентивног учитавања контекста.
RAG комбинује систем претраживања са генеративним моделом. Када се постави упит, систем претраживања проналази релевантне документе или податке из спољашњег извора, а ове пронађене информације се користе за проширење улазних података генеративног модела. Ово помаже моделу да генерише тачније и контекстуално релевантне одговоре.
У RAG систему, агент претражује релевантне информације из базе знања и користи их за генерисање одговарајућих одговора или акција.
Приступ корективног RAG-а се фокусира на коришћење RAG техника за исправљање грешака и побољшање тачности AI агената. Ово укључује:
Евалуација: Континуирано процењивање перформанси агента и прављење прилагођавања ради побољшања његове тачности и ```python 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)
### Претходно Учитавање Контекста
Претходно учитавање контекста подразумева уношење релевантних информација или позадинског знања у модел пре обраде упита. Ово значи да модел од самог почетка има приступ тим информацијама, што му омогућава да генерише информисаније одговоре без потребе за додатним преузимањем података током процеса.
Ево поједностављеног примера како претходно учитавање контекста може изгледати за апликацију туристичког агента у Python-у:
```python
class TravelAgent:
def __init__(self):
# Pre-load popular destinations and their information
self.context = {
"Paris": {"country": "France", "currency": "Euro", "language": "French", "attractions": ["Eiffel Tower", "Louvre Museum"]},
"Tokyo": {"country": "Japan", "currency": "Yen", "language": "Japanese", "attractions": ["Tokyo Tower", "Shibuya Crossing"]},
"New York": {"country": "USA", "currency": "Dollar", "language": "English", "attractions": ["Statue of Liberty", "Times Square"]},
"Sydney": {"country": "Australia", "currency": "Dollar", "language": "English", "attractions": ["Sydney Opera House", "Bondi Beach"]}
}
def get_destination_info(self, destination):
# Fetch destination information from pre-loaded context
info = self.context.get(destination)
if info:
return f"{destination}:\nCountry: {info['country']}\nCurrency: {info['currency']}\nLanguage: {info['language']}\nAttractions: {', '.join(info['attractions'])}"
else:
return f"Sorry, we don't have information on {destination}."
# Example usage
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Иницијација (__init__
метода): Класа TravelAgent
претходно учитава речник који садржи информације о популарним дестинацијама као што су Париз, Токио, Њујорк и Сиднеј. Овај речник укључује детаље као што су држава, валута, језик и главне атракције за сваку дестинацију.
Проналажење информација (get_destination_info
метода): Када корисник постави упит о одређеној дестинацији, метода get_destination_info
преузима релевантне информације из претходно учитаног речника контекста.
Претходним учитавањем контекста, апликација туристичког агента може брзо одговарати на упите корисника без потребе за преузимањем информација из спољашњих извора у реалном времену. Ово чини апликацију ефикаснијом и бржом.
Покретање плана са циљем подразумева почетак са јасно дефинисаним циљем или жељеним исходом. Дефинисањем овог циља унапред, модел га може користити као водиљу током итеративног процеса. Ово осигурава да свака итерација приближава постизању жељеног исхода, чинећи процес ефикаснијим и фокусиранијим.
Ево примера како можете покренути план путовања са циљем пре итерације за туристичког агента у Python-у:
Туристички агент жели да планира прилагођени одмор за клијента. Циљ је креирати план путовања који максимално задовољава клијента на основу његових преференција и буџета.
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def bootstrap_plan(self, preferences, budget):
plan = []
total_cost = 0
for destination in self.destinations:
if total_cost + destination['cost'] <= budget and self.match_preferences(destination, preferences):
plan.append(destination)
total_cost += destination['cost']
return plan
def match_preferences(self, destination, preferences):
for key, value in preferences.items():
if destination.get(key) != value:
return False
return True
def iterate_plan(self, plan, preferences, budget):
for i in range(len(plan)):
for destination in self.destinations:
if destination not in plan and self.match_preferences(destination, preferences) and self.calculate_cost(plan, destination) <= budget:
plan[i] = destination
break
return plan
def calculate_cost(self, plan, new_destination):
return sum(destination['cost'] for destination in plan) + new_destination['cost']
# Example usage
destinations = [
{"name": "Paris", "cost": 1000, "activity": "sightseeing"},
{"name": "Tokyo", "cost": 1200, "activity": "shopping"},
{"name": "New York", "cost": 900, "activity": "sightseeing"},
{"name": "Sydney", "cost": 1100, "activity": "beach"},
]
preferences = {"activity": "sightseeing"}
budget = 2000
travel_agent = TravelAgent(destinations)
initial_plan = travel_agent.bootstrap_plan(preferences, budget)
print("Initial Plan:", initial_plan)
refined_plan = travel_agent.iterate_plan(initial_plan, preferences, budget)
print("Refined Plan:", refined_plan)
Иницијација (__init__
метода): Класа TravelAgent
иницијализује се са листом потенцијалних дестинација, од којих свака има атрибуте као што су име, цена и тип активности.
Покретање Плана (bootstrap_plan
метода): Ова метода креира почетни план путовања на основу преференција и буџета клијента. Она пролази кроз листу дестинација и додаје их у план ако одговарају преференцијама клијента и уклапају се у буџет.
Усаглашавање Преференција (match_preferences
метода): Ова метода проверава да ли дестинација одговара преференцијама клијента.
Итерација Плана (iterate_plan
метода): Ова метода усавршава почетни план покушавајући да замени сваку дестинацију у плану бољом опцијом, узимајући у обзир преференције и буџет клијента.
Израчунавање Трошкова (calculate_cost
метода): Ова метода израчунава укупне трошкове тренутног плана, укључујући потенцијалну нову дестинацију.
Покретањем плана са јасним циљем (нпр. максимално задовољство клијента) и итерацијом ради усавршавања плана, туристички агент може креирати прилагођен и оптимизован план путовања за клијента. Овај приступ осигурава да план путовања од почетка одговара преференцијама и буџету клијента и побољшава се са сваком итерацијом.
Велики језички модели (LLM) могу се користити за прерангирење и оцењивање тако што процењују релевантност и квалитет преузетих докумената или генерисаних одговора. Ево како то функционише:
Претраживање: Почетни корак претраживања преузима сет кандидата докумената или одговора на основу упита.
Прерангирење: LLM процењује ове кандидате и прерангирa их на основу њихове релевантности и квалитета. Овај корак осигурава да се најрелевантније и најквалитетније информације представе прве.
Оцењивање: LLM додељује оцене сваком кандидату, одражавајући њихову релевантност и квалитет. Ово помаже у одабиру најбољег одговора или документа за корисника.
Коришћењем LLM за прерангирење и оцењивање, систем може пружити тачније и контекстуално релевантне информације, побољшавајући укупно корисничко искуство.
Ево примера како туристички агент може користити велики језички модел (LLM) за прерангирење и оцењивање туристичких дестинација на основу преференција корисника у Python-у:
Туристички агент жели да препоручи најбоље туристичке дестинације клијенту на основу његових преференција. LLM ће помоћи у прерангирaњу и оцењивању дестинација како би се осигурало да се представе најрелевантније опције.
Ево како можете ажурирати претходни пример да користите Azure OpenAI услуге:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Generate a prompt for the Azure OpenAI
prompt = self.generate_prompt(preferences)
# Define headers and payload for the request
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Call the Azure OpenAI API to get the re-ranked and scored destinations
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Extract and return the recommendations
recommendations = response_data['choices'][0]['text'].strip().split('\n')
return recommendations
def generate_prompt(self, preferences):
prompt = "Here are the travel destinations ranked and scored based on the following user preferences:\n"
for key, value in preferences.items():
prompt += f"{key}: {value}\n"
prompt += "\nDestinations:\n"
for destination in self.destinations:
prompt += f"- {destination['name']}: {destination['description']}\n"
return prompt
# Example usage
destinations = [
{"name": "Paris", "description": "City of lights, known for its art, fashion, and culture."},
{"name": "Tokyo", "description": "Vibrant city, famous for its modernity and traditional temples."},
{"name": "New York", "description": "The city that never sleeps, with iconic landmarks and diverse culture."},
{"name": "Sydney", "description": "Beautiful harbour city, known for its opera house and stunning beaches."},
]
preferences = {"activity": "sightseeing", "culture": "diverse"}
api_key = 'your_azure_openai_api_key'
endpoint = 'https://your-endpoint.com/openai/deployments/your-deployment-name/completions?api-version=2022-12-01'
travel_agent = TravelAgent(destinations)
recommendations = travel_agent.get_recommendations(preferences, api_key, endpoint)
print("Recommended Destinations:")
for rec in recommendations:
print(rec)
Иницијација: Класа TravelAgent
иницијализује се са листом потенцијалних туристичких дестинација, од којих свака има атрибуте као што су име и опис.
Добијање Препорука (get_recommendations
метода): Ова метода генерише упит за Azure OpenAI услугу на основу преференција корисника и шаље HTTP POST захтев Azure OpenAI API-ју како би добила прерангирaне и оцењене дестинације.
Генерисање Упита (generate_prompt
метода): Ова метода конструише упит за Azure OpenAI, укључујући преференције корисника и листу дестинација. Упит води модел да прерангирa и оцени дестинације на основу датих преференција.
API Позив: Библиотека requests
се користи за слање HTTP POST захтева Azure OpenAI API крајњој тачки. Одговор садржи прерангирaне и оцењене дестинације.
Пример Коришћења: Туристички агент прикупља преференције корисника (нпр. интересовање за разгледање и разнолику културу) и користи Azure OpenAI услугу за добијање прерангирaних и оцењених препорука за туристичке дестинације.
Обавезно замените your_azure_openai_api_key
својим стварним Azure OpenAI API кључем и https://your-endpoint.com/...
стварном URL адресом крајње тачке вашег Azure OpenAI распореда.
Коришћењем LLM за прерангирење и оцењивање, туристички агент може пружити персонализованије и релевантније препоруке за путовања клијентима, побољшавајући њихово укупно искуство.
Retrieval-Augmented Generation (RAG) може бити и техника упита и алатка у развоју AI агената. Разумевање разлике између ова два приступа може вам помоћи да ефикасније искористите RAG у својим пројектима.
Шта је то?
Како функционише:
Пример у Туристичком Агенту:
Шта је то?
Како функционише:
Пример у Туристичком Агенту:
Аспект | Техника Упита | Алатка |
---|---|---|
Ручно наспрам Аутоматски | Ручно формулисање упита за сваки захтев. | Аутоматизован процес преузимања и генерисања. |
Контрола | Пружа већу контролу над процесом преузимања. | Поједностављује и аутоматизује процес. |
Флексибилност | Омогућава прилагођене упите на основу специфичних потреба. | Ефикасније за имплементације великог обима. |
Комплексност | Захтева креирање и подешавање упита. | Лакше за интеграцију у архитектуру 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] # Return top 10 relevant items
Пример:
@@CODE_BLOCK_
Узмимо туристички агент као пример да видимо како се претрага са намером може имплементирати.
Прикупљање корисничких преференција
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):
# Combine current query with user history to understand context
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):
# Example search logic for informational intent
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Example search logic for navigational intent
results = search_web(query)
return results
def search_transaction(query, preferences):
# Example search logic for transactional intent
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Example personalization logic
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Return top 10 personalized results
Пример употребе
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 моделе за писање и извршавање кода. Ови агенти могу решавати сложене проблеме, аутоматизовати задатке и пружати вредне увиде генерисањем и извршавањем кода у различитим програмским језицима.
Замислите да дизајнирате агента за генерисање кода. Ево како би то могло функционисати:
У овом примеру, дизајнираћемо агента за генерисање кода, туристички агент, који помаже корисницима у планирању путовања генерисањем и извршавањем кода. Овај агент може обављати задатке као што су преузимање опција путовања, филтрирање резултата и састављање итинерера користећи генеративни 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):
# Example: Generate code to search for flights based on user preferences
code = f"""
def search_flights():
import requests
response = requests.get('https://api.example.com/flights', params={preferences})
return response.json()
"""
return code
def generate_code_to_fetch_hotels(preferences):
# Example: Generate code to search for hotels
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Извршавање генерисаног кода
def execute_code(code):
# Execute the generated code using exec
exec(code)
result = locals()
return result
travel_agent = Travel_Agent()
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
travel_agent.gather_preferences(preferences)
flight_code = generate_code_to_fetch_data(preferences)
hotel_code = generate_code_to_fetch_hotels(preferences)
flights = execute_code(flight_code)
hotels = execute_code(hotel_code)
print("Flight Options:", flights)
print("Hotel Options:", hotels)
Генерисање итинерера
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):
# Adjust preferences based on user feedback
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
return preferences
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences)
# Regenerate and execute code with updated preferences
updated_flight_code = generate_code_to_fetch_data(updated_preferences)
updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)
updated_flights = execute_code(updated_flight_code)
updated_hotels = execute_code(updated_hotel_code)
updated_itinerary = generate_itinerary(updated_flights, updated_hotels, attractions)
print("Updated Itinerary:", updated_itinerary)
Засновано на шеми табеле може побољшати процес генерисања упита искоришћавањем свесности окружења и резоновања.
Ево примера како се то може урадити:
Ево ажурираног Python кода који укључује ове концепте:
def adjust_based_on_feedback(feedback, preferences, schema):
# Adjust preferences based on user feedback
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Reasoning based on schema to adjust other related preferences
for field in schema:
if field in preferences:
preferences[field] = adjust_based_on_environment(feedback, field, schema)
return preferences
def adjust_based_on_environment(feedback, field, schema):
# Custom logic to adjust preferences based on schema and feedback
if field in feedback["liked"]:
return schema[field]["positive_adjustment"]
elif field in feedback["disliked"]:
return schema[field]["negative_adjustment"]
return schema[field]["default"]
def generate_code_to_fetch_data(preferences):
# Generate code to fetch flight data based on updated preferences
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Generate code to fetch hotel data based on updated preferences
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulate execution of code and return mock data
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Generate itinerary based on flights, hotels, and attractions
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Example schema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Example usage
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Regenerate and execute code with updated preferences
updated_flight_code = generate_code_to_fetch_data(updated_preferences)
updated_hotel_code = generate_code_to_fetch_hotels(updated_preferences)
updated_flights = execute_code(updated_flight_code)
updated_hotels = execute_code(updated_hotel_code)
updated_itinerary = generate_itinerary(updated_flights, updated_hotels, feedback["liked"])
print("Updated Itinerary:", updated_itinerary)
schema
речник дефинише како преференције треба прилагодити на основу повратних информација. Укључује поља као што су favorites
и avoid
, са одговарајућим прилагођавањима.adjust_based_on_feedback
метод): Овај метод прилагођава преференције на основу повратних информација корисника и шеме.adjust_based_on_environment
метод): Овај метод прилагођава прилагођавања на основу шеме и повратних информација.Користећи свесност окружења и резоновање засновано на шеми, систем може генерисати тачније и релевантније упите, што доводи до бољих препорука за путовања и персонализованијег корисничког искуства.
SQL (Structured Query Language) је моћан алат за интеракцију са базама података. Када се користи као део 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 = [] # Stores the hotels chosen previously
self.corrected_choices = [] # Stores the corrected choices
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Available strategies
def recommend_hotel(self, hotels, strategy):
"""
Recommend a hotel based on the chosen strategy.
The strategy can either be 'cheapest' or 'highest_quality'.
"""
if strategy == 'cheapest':
recommended = min(hotels, key=lambda x: x['price'])
elif strategy == 'highest_quality':
recommended = max(hotels, key=lambda x: x['quality'])
else:
recommended = None
self.previous_choices.append((strategy, recommended))
return recommended
def reflect_on_choice(self):
"""
Reflect on the last choice made and decide if the agent should adjust its strategy.
The agent considers if the previous choice led to a poor outcome.
"""
if not self.previous_choices:
return "No choices made yet."
last_choice_strategy, last_choice = self.previous_choices[-1]
# Let's assume we have some user feedback that tells us whether the last choice was good or not
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Adjust strategy if the previous choice was unsatisfactory
new_strategy = 'highest_quality' if last_choice_strategy == 'cheapest' else 'cheapest'
self.corrected_choices.append((new_strategy, last_choice))
return f"Reflecting on choice. Adjusting strategy to {new_strategy}."
else:
return "The choice was good. No need to adjust."
def get_user_feedback(self, hotel):
"""
Simulate user feedback based on hotel attributes.
For simplicity, assume if the hotel is too cheap, the feedback is "bad".
If the hotel has quality less than 7, feedback is "bad".
"""
if hotel['price'] < 100 or hotel['quality'] < 7:
return "bad"
return "good"
# Simulate a list of hotels (price and quality)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Create an agent
agent = HotelRecommendationAgent()
# Step 1: The agent recommends a hotel using the "cheapest" strategy
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Step 2: The agent reflects on the choice and adjusts strategy if necessary
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Step 3: The agent recommends again, this time using the adjusted strategy
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Кључно овде је способност агента да:
Ово је једноставан облик метакогниције где систем може прилагодити свој процес резоновања на основу интерних повратних информација.
Метакогниција је моћан алат који може значајно побољшати способности AI агената. Укључивањем метакогнитивних процеса, можете дизајнирати агенте који су интелигентнији, прилагодљивији и ефикаснији. Користите додатне ресурсе за даље истраживање фасцинантног света метакогниције у AI агентима.
Придружите се Azure AI Foundry Discord да упознате друге учеснике, присуствујете консултацијама и добијете одговоре на ваша питања о AI агентима.
Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.