(Кликнете върху изображението по-горе, за да гледате видеото на този урок)
Метакогниция при 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 да извлича и генерира информация, като същевременно коригира неточности. Нека видим как Туристическият агент може да използва подхода Корективен RAG, за да предоставя по-точни и релевантни препоръки за пътуване.
Това включва:
Пример:
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 Services:
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, за да получи преподредени и оценени дестинации.
Генериране на prompt (generate_prompt метод): Този метод конструира prompt за Azure OpenAI, включващ потребителските предпочитания и списъка с дестинации. Prompt-ът насочва модела да преподреди и оцени дестинациите според предоставените предпочитания.
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 за преподреждане и оценяване, туристическият агент може да предлага по-персонализирани и релевантни пътешественически препоръки на клиентите, подобрявайки общото им преживяване.
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):
# Използвайте НЛП, за да извлечете ключова информация от заявката на потребителя
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)
Търсенето с интенция включва разбиране и интерпретиране на основната цел или мотив зад заявката на потребителя, за да се извлече и генерира най-подходящата и полезна информация. Този подход надхвърля просто съвпадение на ключови думи и се фокусира върху улавяне на реалните нужди и контекста на потребителя.
Нека използваме Travel Agent като пример за имплементиране на търсене с интенция.
Събиране на потребителски предпочитания
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 модели за писане и изпълнение на код. Тези агенти могат да решават сложни проблеми, да автоматизират задачи и да предоставят ценни прозрения чрез генериране и изпълнение на код на различни програмни езици.
Представете си, че проектирате агент, генериращ код. Ето как може да работи:
В този пример ще проектираме агент, генериращ код, Travel Agent, за да помага на потребителите с планирането на пътуване чрез генериране и изпълнение на код. Този агент може да обработва задачи като извличане на опции за пътуване, филтриране на резултати и съставяне на план с помощта на генеративен 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 агенти като Travel Agent могат динамично да извличат и използват релевантни данни за предоставяне на точни и персонализирани препоръки.
За да демонстрираме реализирането на метакогниция, нека създадем прост агент, който размишлява върху процеса на вземане на решения по време на решаване на проблем. За този пример ще изградим система, където агентът се опитва да оптимизира избора на хотел, но после оценява собственото си разсъждение и коригира стратегията си, когато прави грешки или непълноценни избори.
Ще симулираме това, използвайки основен пример, където агентът избира хотели на базата на комбинация от цена и качество, но „отразява“ решенията си и се коригира съответно.
Ето пример:
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. Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да било недоразумения или неправилни тълкувания, произтичащи от използването на този превод.