(Кликнете върху горното изображение, за да гледате видеото на този урок)
Метакогниция при 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)
Предварителното зареждане на контекст включва зареждане на релевантен контекст или фонова информация в модела преди обработката на заявка. Това означава, че моделът има достъп до тази информация от самото начало, което може да му помогне да генерира по-информирани отговори, без да се налага да търси допълнителни данни по време на процеса.
Ето опростен пример как може да изглежда предварителното зареждане на контекст за приложение на туристически агент на Python:
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 извлича релевантната информация от предварително заредения речник с контекст.
Чрез предварително зареждане на контекста, приложението на туристическия агент може бързо да отговаря на запитвания на потребителите, без да се налага в реално време да извлича тази информация от външен източник. Това прави приложението по-ефективно и отзивчиво.
Инициализирането на план с цел включва започване с ясна цел или очакван резултат в ума. Като дефинира тази цел предварително, моделът може да я използва като ръководен принцип през целия итеративен процес. Това помага да се гарантира, че всяка итерация се приближава към постигането на желаната цел, като прави процеса по-ефективен и фокусиран.
Ето пример за това как можете да инициализирате план за пътуване с цел преди итерация за туристически агент на 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']
# Пример за употреба
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) за преподреждане и оценка на туристически дестинации въз основа на потребителски предпочитания в Python:
Туристически агент иска да препоръча най-добрите туристически дестинации на клиент въз основа на неговите предпочитания. 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): Този метод генерира запитване към Azure OpenAI услугата, базирано на потребителските предпочитания, и прави HTTP POST заявка към Azure OpenAI API за получаване на преподредени и оценени дестинации.
Генериране на запитване (метод generate_prompt): Този метод съставя запитване за Azure OpenAI, включващо потребителските предпочитания и списъка с дестинации. Запитването насочва модела да преподреди и оцени дестинациите според предоставените предпочитания.
API извикване: Библиотеката requests се използва за HTTP POST заявка към края на API на Azure OpenAI. Отговорът съдържа преподредени и оценени дестинации.
Примерна употреба: Туристическият агент събира предпочитанията на потребителя (например интерес към разглеждане на забележителности и разнообразна култура) и използва услугата Azure OpenAI, за да получи препоръки с преподреждане и оценка за туристически дестинации.
Уверете се, че сте заменили 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] # Върнете топ 10 релевантни елемента
Пример:
def process_query(query):
# Използвайте NLP за извличане на ключова информация от заявката на потребителя
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 модели за писане и изпълнение на код. Тези агенти могат да решават сложни проблеми, да автоматизират задачи и да предоставят ценни прозрения чрез генериране и изпълнение на код на различни програмни езици.
Представете си, че проектирате агент за генериране на код. Ето как може да работи:
В този пример ще проектираме агент за генериране на код, Туристически агент, който да помага на потребителите при планиране на пътувания чрез генериране и изпълнение на код. Този агент може да обработва задачи като намиране на опции за пътуване, филтриране на резултати и съставяне на маршрут с помощта на генеративен 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 (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 = [] # Съхранява предварително избраните хотели
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 агенти.
Отказ от отговорност: Този документ е преведен с помощта на AI преводачески услуга Co-op Translator. Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.