(Кликнете върху изображението по-горе, за да гледате видеото на този урок)
Метакогниция в 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 агентите. Това включва:
Представете си търсещ агент, който извлича информация от интернет, за да отговаря на потребителски запитвания. Корективният подход на RAG може да включва:
Корективният 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
# 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)"]}
new_itinerary = travel_agent.adjust_based_on_feedback(feedback)
print("Updated Itinerary:", new_itinerary)
Предварителното зареждане на контекст включва зареждане на подходяща информация или фонова информация в модела преди обработката на заявка. Това означава, че моделът има достъп до тази информация от самото начало, което му помага да генерира по-информирани отговори, без да се налага да извлича допълнителни данни по време на процеса.
Ето един опростен пример за предварително зареждане на контекст за приложение на туристически агент на 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
метод): Този метод изчислява общите разходи за текущия план, включително потенциална нова дестинация.
Чрез стартиране на плана с ясна цел (например максимално удовлетворение на клиента) и итеративно усъвършенстване на плана, туристическият агент може да създаде персонализиран и оптимизиран туристически маршрут за клиента. Този подход гарантира, че планът за пътуване отговаря на предпочитанията и бюджета на клиента от самото начало и се подобрява с всяка итерация.
Големите езикови модели (LLMs) могат да се използват за преоценка и оценяване, като оценяват релевантността и качеството на извлечените документи или генерираните отговори. Ето как работи:
Извличане: Първоначалната стъпка за извличане събира набор от кандидат-документи или отговори въз основа на заявката.
Преоценка: 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):
# 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 заявка към API на Azure OpenAI, за да получи преоценени и оценени дестинации.
Генериране на подканващ текст (generate_prompt
метод): Този метод създава подканващ текст за Azure OpenAI, включващ предпочитанията на потребителя и списъка с дестинации. Подканващият текст насочва модела да преоцени и оцени дестинациите въз основа на предоставените предпочитания.
API заявка: Библиотеката requests
се използва за извършване на HTTP POST заявка към крайна точка на API на Azure OpenAI. Отговорът съдържа преоценените и оценени дестинации.
Пример за използване: Туристическият агент събира предпочитанията на потребителя (например интерес към разглеждане на забележителности и разнообразна култура) и използва услугата Azure OpenAI, за да получи преоценени и оценени препоръки за туристически дестинации.
Уверете се, че заменяте your_azure_openai_api_key
с вашия действителен API ключ за Azure OpenAI и https://your-endpoint.com/...
с действителния URL адрес на крайна точка на вашето разгръщане на Azure OpenAI.
Чрез използване на LLM за преоценка и оценяване, туристическият агент може да предостави по-персонализирани и релевантни препоръки за пътуване на клиентите, подобрявайки тяхното цялостно изживяване.
Извличане-усилено генериране (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
Пример:
def process_query(query):
# Use NLP to extract key information from the user's 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] # Return top 10 relevant items
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
# 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)"]}
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):
# 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 модели, за да пишат и изпълняват код. Те могат да решават сложни проблеми, да автоматизират задачи и да предоставят ценни прозрения, като генерират и изпълняват код на различни програмни езици.
Представете си, че проектирате агент за генериране на код. Ето как може да работи:
В този пример ще проектираме агент за генериране на код, 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):
# 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 техника в контекста на Travel Agent.
Пример: Агент за анализ на данни:
Събиране на предпочитанията на потребителя
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 = [] # 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 агентите.
Модел за проектиране на многоагентни системи
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.