(Bu dersin videosunu izlemek için yukarıdaki görsele tıklayın)
AI Ajanlarında Metakognisyon
AI ajanlarında metakognisyon dersine hoş geldiniz! Bu bölüm, AI ajanlarının kendi düşünme süreçlerini nasıl değerlendirebileceğini merak eden yeni başlayanlar için tasarlanmıştır. Dersin sonunda, temel kavramları anlayacak ve metakognisyonu AI ajan tasarımında uygulamak için pratik örneklerle donanmış olacaksınız.
Bu dersi tamamladıktan sonra:
Metakognisyon, kişinin kendi düşünme süreçleri üzerine düşünmesini içeren üst düzey bilişsel süreçlere atıfta bulunur. AI ajanları için bu, kendi eylemlerini öz farkındalık ve geçmiş deneyimlere dayanarak değerlendirme ve ayarlama yeteneği anlamına gelir. “Düşünme üzerine düşünme” olarak da adlandırılan metakognisyon, ajan tabanlı AI sistemlerinin geliştirilmesinde önemli bir kavramdır. AI sistemlerinin kendi iç süreçlerinin farkında olması, davranışlarını izleyebilmesi, düzenleyebilmesi ve buna göre uyarlayabilmesi anlamına gelir. Tıpkı bizim bir ortamı analiz ederken veya bir problemi çözerken yaptığımız gibi. Bu öz farkındalık, AI sistemlerinin daha iyi kararlar almasına, hataları tanımlamasına ve zamanla performanslarını iyileştirmesine yardımcı olabilir. Bu durum, Turing testi ve AI’nın dünyayı ele geçirip geçiremeyeceği tartışmasıyla da bağlantılıdır.
Ajan tabanlı AI sistemleri bağlamında metakognisyon, şu gibi zorlukların üstesinden gelmeye yardımcı olabilir:
Metakognisyon, “düşünme üzerine düşünme” olarak adlandırılan, kişinin bilişsel süreçlerinin öz farkındalığını ve öz düzenlemesini içeren üst düzey bir bilişsel süreçtir. AI alanında metakognisyon, ajanlara stratejilerini ve eylemlerini değerlendirme ve uyarlama yeteneği kazandırarak problem çözme ve karar verme yeteneklerini geliştirir. Metakognisyonu anlayarak, yalnızca daha zeki değil, aynı zamanda daha uyumlu ve verimli AI ajanları tasarlayabilirsiniz. Gerçek bir metakognisyonda, AI’nın kendi akıl yürütmesi hakkında açıkça akıl yürüttüğünü görebilirsiniz.
Örnek: “Daha ucuz uçuşları önceliklendirdim çünkü… Direkt uçuşları kaçırıyor olabilirim, bu yüzden tekrar kontrol edeyim.” Seçtiği rotayı nasıl veya neden seçtiğini takip etme.
Metakognisyon, AI ajan tasarımında birkaç nedenden dolayı kritik bir rol oynar:
Metakognitif süreçlere dalmadan önce, bir AI ajanının temel bileşenlerini anlamak önemlidir. Bir AI ajanı tipik olarak şu bileşenlerden oluşur:
Bu bileşenler, belirli görevleri yerine getirebilen bir “uzmanlık birimi” oluşturmak için birlikte çalışır.
Örnek: Bir seyahat acentesini düşünün; bu ajan yalnızca tatilinizi planlamakla kalmaz, aynı zamanda gerçek zamanlı verilere ve önceki müşteri deneyimlerine dayalı olarak rotasını ayarlar.
Bir AI destekli seyahat acentesi hizmeti tasarladığınızı hayal edin. Bu ajan, “Seyahat Acentesi,” kullanıcıların tatillerini planlamalarına yardımcı olur. Metakognisyonu dahil etmek için Seyahat Acentesi, öz farkındalık ve geçmiş deneyimlere dayanarak eylemlerini değerlendirmeli ve ayarlamalıdır. İşte metakognisyonun nasıl bir rol oynayabileceği:
Mevcut görev, bir kullanıcının Paris’e bir gezi planlamasına yardımcı olmaktır.
Seyahat Acentesi, performansını değerlendirmek ve geçmiş deneyimlerden öğrenmek için metakognisyon kullanır. Örneğin:
İşte Seyahat Acentesi’nin metakognisyonu dahil eden kodunun basitleştirilmiş bir örneği:
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)
Metakognisyonu dahil ederek, Seyahat Acentesi daha kişiselleştirilmiş ve doğru seyahat önerileri sunabilir, böylece genel kullanıcı deneyimini geliştirebilir.
Planlama, AI ajan davranışının kritik bir bileşenidir. Mevcut durumu, kaynakları ve olası engelleri göz önünde bulundurarak bir hedefe ulaşmak için gerekli adımları belirlemeyi içerir.
Örnek: Seyahat Acentesi’nin bir kullanıcının seyahatini etkili bir şekilde planlamasına yardımcı olmak için atması gereken adımlar şunlardır:
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)
Öncelikle RAG Aracı ile Önleyici Bağlam Yükleme arasındaki farkı anlamakla başlayalım.
RAG, bir geri alma sistemi ile bir üretici modeli birleştirir. Bir sorgu yapıldığında, geri alma sistemi harici bir kaynaktan ilgili belgeleri veya verileri alır ve bu alınan bilgiler, üretici modele giriş olarak eklenir. Bu, modelin daha doğru ve bağlamsal olarak uygun yanıtlar üretmesine yardımcı olur.
Bir RAG sisteminde, ajan bir bilgi tabanından ilgili bilgileri alır ve bunları uygun yanıtlar veya eylemler oluşturmak için kullanır.
Düzeltici RAG yaklaşımı, RAG tekniklerini kullanarak hataları düzeltmeye ve AI ajanlarının doğruluğunu artırmaya odaklanır. Bu, şunları içerir:
Bir kullanıcının sorgularını yanıtlamak için web’den bilgi alan bir arama ajanını düşünün. Düzeltici RAG yaklaşımı şunları içerebilir:
Düzeltici RAG (Retrieval-Augmented Generation), AI’nın bilgi alıp üretme yeteneğini geliştirirken yanlışlıkları düzeltir. Seyahat Acentesi’nin Düzeltici RAG yaklaşımını kullanarak daha doğru ve ilgili seyahat önerileri sunmasını nasıl sağlayabileceğimize bakalım.
Bu şunları içerir:
Örnek:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Örnek:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Örnek:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Örnek:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Örnek:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Örnek:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Örnek:
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)
İşte Seyahat Acent
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)
Önceden bağlam yükleme, bir sorguyu işlemeye başlamadan önce modelin ilgili bağlam veya arka plan bilgisini yüklemesini içerir. Bu, modelin sürecin başından itibaren bu bilgilere erişebilmesini sağlar ve ek veri almaya gerek kalmadan daha bilinçli yanıtlar üretmesine yardımcı olur.
İşte bir seyahat acentesi uygulaması için Python’da önceden bağlam yüklemenin nasıl görünebileceğine dair basit bir örnek:
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"))
Başlatma (__init__
metodu): TravelAgent
sınıfı, Paris, Tokyo, New York ve Sydney gibi popüler destinasyonlar hakkında bilgi içeren bir sözlüğü önceden yükler. Bu sözlük, her destinasyon için ülke, para birimi, dil ve başlıca cazibe merkezleri gibi ayrıntıları içerir.
Bilgi Alma (get_destination_info
metodu): Bir kullanıcı belirli bir destinasyon hakkında sorgu yaptığında, get_destination_info
metodu önceden yüklenmiş bağlam sözlüğünden ilgili bilgileri alır.
Bağlamı önceden yükleyerek, seyahat acentesi uygulaması kullanıcı sorgularına gerçek zamanlı olarak harici bir kaynaktan bilgi almaya gerek kalmadan hızlı bir şekilde yanıt verebilir. Bu, uygulamayı daha verimli ve duyarlı hale getirir.
Bir hedefle planı başlatmak, sürece başlamadan önce net bir hedef veya sonuç belirlemeyi içerir. Bu hedefi baştan tanımlayarak, model bunu iteratif süreç boyunca bir rehber olarak kullanabilir. Bu, her iterasyonun istenen sonuca daha yakın olmasını sağlar ve süreci daha verimli ve odaklı hale getirir.
İşte bir seyahat acentesi için bir hedefle seyahat planını başlatmanın ve ardından iterasyon yapmanın nasıl görünebileceğine dair bir örnek:
Bir seyahat acentesi, bir müşteriye özel bir tatil planı oluşturmak istiyor. Amaç, müşterinin tercihlerine ve bütçesine göre memnuniyetini en üst düzeye çıkaran bir seyahat programı oluşturmaktır.
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)
Başlatma (__init__
metodu): TravelAgent
sınıfı, her biri ad, maliyet ve aktivite türü gibi özelliklere sahip potansiyel destinasyonların bir listesiyle başlatılır.
Planı Başlatma (bootstrap_plan
metodu): Bu metod, müşterinin tercihleri ve bütçesi temelinde başlangıç seyahat planını oluşturur. Destinasyon listesini iterasyonla tarar ve müşterinin tercihleriyle eşleşen ve bütçeye uyan destinasyonları plana ekler.
Tercihleri Eşleştirme (match_preferences
metodu): Bu metod, bir destinasyonun müşterinin tercihleriyle eşleşip eşleşmediğini kontrol eder.
Planı İterasyonla Geliştirme (iterate_plan
metodu): Bu metod, başlangıç planını iyileştirir ve müşterinin tercihleri ve bütçe kısıtlamalarını göz önünde bulundurarak her destinasyonu daha iyi bir eşleşmeyle değiştirmeye çalışır.
Maliyet Hesaplama (calculate_cost
metodu): Bu metod, mevcut planın toplam maliyetini ve potansiyel yeni bir destinasyonu hesaplar.
Bir hedefle planı başlatarak (örneğin, müşteri memnuniyetini en üst düzeye çıkarmak) ve planı iyileştirmek için iterasyon yaparak, seyahat acentesi müşteriye özel ve optimize edilmiş bir seyahat programı oluşturabilir. Bu yaklaşım, seyahat planının baştan itibaren müşterinin tercihleri ve bütçesiyle uyumlu olmasını sağlar ve her iterasyonla daha da iyileşir.
Büyük Dil Modelleri (LLM’ler), alınan belgelerin veya oluşturulan yanıtların alaka düzeyini ve kalitesini değerlendirerek yeniden sıralama ve puanlama için kullanılabilir. İşte nasıl çalıştığı:
Alma: İlk alma adımı, sorguya dayalı olarak bir dizi aday belge veya yanıt getirir.
Yeniden Sıralama: LLM, bu adayları değerlendirir ve alaka düzeyleri ve kalitelerine göre yeniden sıralar. Bu adım, en alakalı ve yüksek kaliteli bilgilerin önce sunulmasını sağlar.
Puanlama: LLM, her adaya alaka düzeylerini ve kalitelerini yansıtan puanlar atar. Bu, kullanıcı için en iyi yanıtın veya belgenin seçilmesine yardımcı olur.
LLM’leri yeniden sıralama ve puanlama için kullanarak, sistem daha doğru ve bağlamsal olarak alakalı bilgiler sağlayabilir ve genel kullanıcı deneyimini iyileştirebilir.
İşte bir seyahat acentesinin, kullanıcı tercihlerini temel alarak seyahat destinasyonlarını yeniden sıralamak ve puanlamak için bir Büyük Dil Modeli (LLM) kullanabileceği bir örnek:
Bir seyahat acentesi, müşteriye en iyi seyahat destinasyonlarını önermek istiyor. LLM, en alakalı seçeneklerin sunulmasını sağlamak için destinasyonları yeniden sıralamak ve puanlamak için yardımcı olacak.
Azure OpenAI Hizmetlerini kullanarak önceki örneği nasıl güncelleyebileceğinize dair bir örnek:
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)
Başlatma: TravelAgent
sınıfı, her biri ad ve açıklama gibi özelliklere sahip potansiyel seyahat destinasyonlarının bir listesiyle başlatılır.
Öneriler Alma (get_recommendations
metodu): Bu metod, kullanıcının tercihlerini temel alarak Azure OpenAI hizmeti için bir istem oluşturur ve Azure OpenAI API’sine bir HTTP POST isteği yapar.
İstem Oluşturma (generate_prompt
metodu): Bu metod, kullanıcının tercihlerini ve destinasyon listesini içeren bir istem oluşturur. İstem, modelin destinasyonları yeniden sıralamasını ve puanlamasını yönlendirir.
API Çağrısı: requests
kütüphanesi, Azure OpenAI API uç noktasına bir HTTP POST isteği yapmak için kullanılır. Yanıt, yeniden sıralanmış ve puanlanmış destinasyonları içerir.
Örnek Kullanım: Seyahat acentesi, kullanıcı tercihlerini (örneğin, gezi ve çeşitli kültürlere ilgi) toplar ve Azure OpenAI hizmetini kullanarak yeniden sıralanmış ve puanlanmış seyahat önerileri alır.
your_azure_openai_api_key
yerine gerçek Azure OpenAI API anahtarınızı ve https://your-endpoint.com/...
yerine Azure OpenAI dağıtımınızın gerçek uç nokta URL’sini koymayı unutmayın.
LLM’yi yeniden sıralama ve puanlama için kullanarak, seyahat acentesi müşterilere daha kişiselleştirilmiş ve alakalı seyahat önerileri sunabilir ve genel deneyimlerini geliştirebilir.
Bilgi Alma Destekli Üretim (RAG), hem bir istem tekniği hem de bir araç olarak kullanılabilir. İkisi arasındaki farkı anlamak, projelerinizde RAG’yi daha etkili bir şekilde kullanmanıza yardımcı olabilir.
Nedir?
Nasıl Çalışır:
Seyahat Acentesi Örneği:
Nedir?
Nasıl Çalışır:
Seyahat Acentesi Örneği:
Özellik | İstem Tekniği | Araç |
---|---|---|
Manuel vs Otomatik | Her sorgu için manuel istem oluşturma. | Bilgi alma ve üretim için otomatik süreç. |
Kontrol | Bilgi alma süreci üzerinde daha fazla kontrol. | Bilgi alma ve üretimi otomatikleştirir. |
Esneklik | Belirli ihtiyaçlara göre özelleştirilmiş istemlere izin verir. | Büyük ölçekli uygulamalar için daha verimli. |
Karmaşıklık | İstemlerin oluşturulması ve ayarlanmasını gerektirir. | Bir yapay zeka aracının mimarisine kolayca entegre edilir. |
İstem Tekniği Örneği:
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)
Araç Örneği:
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)
Alaka düzeyini değerlendirme, yapay zeka aracının performansının önemli bir yönüdür. Bu, aracın aldığı ve oluşturduğu bilgilerin kullanıcı için uygun, doğru ve faydalı olmasını sağlar. Yapay zeka araçlarında alaka düzeyini değerlendirme yöntemlerini, pratik örnekleri ve teknikleri inceleyelim.
Örnek:
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
Örnek:
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
Örnek:
def process_query(query):
# Use NLP to extract key information from the user's query
processed_query = nlp(query)
return processed_query
Örnek:
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
İşte Seyahat Acentesi’nin seyahat önerilerinin alaka düzeyini nasıl değerlendirebileceğine dair pratik bir örnek:
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)
Niyetle arama, bir kullanıcının sorgusunun altında yatan amacı veya hedefini anlamayı ve en alakalı ve faydalı bilgileri almayı ve oluşturmayı içerir. Bu yaklaşım, yalnızca anahtar kelimeleri eşleştirmekten öteye geçer ve kullanıcının gerçek ihtiyaçlarını ve bağlamını kavramaya odaklanır.
Seyahat Acentası’nı bir örnek olarak ele alalım ve amaç odaklı aramanın nasıl uygulanabileceğini görelim.
Kullanıcı Tercihlerinin Toplanması
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Kullanıcı Amacını Anlama
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"
Bağlam Farkındalığı
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
Sonuçları Arama ve Kişiselleştirme
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
Örnek Kullanım
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)
Kod üreten ajanlar, karmaşık problemleri çözmek ve görevleri otomatikleştirmek için yapay zeka modellerini kullanarak kod yazıp çalıştırır.
Kod üreten ajanlar, çeşitli programlama dillerinde kod yazıp çalıştırmak için üretici yapay zeka modellerini kullanır. Bu ajanlar, karmaşık problemleri çözebilir, görevleri otomatikleştirebilir ve kod üreterek değerli içgörüler sağlayabilir.
Bir kod üreten ajan tasarladığınızı hayal edin. İşte nasıl çalışabileceği:
Bu örnekte, kullanıcıların seyahatlerini planlamalarına yardımcı olmak için kod üreten ve çalıştıran bir ajan olan Seyahat Acentası’nı tasarlayacağız. Bu ajan, seyahat seçeneklerini getirme, sonuçları filtreleme ve üretici yapay zeka kullanarak bir seyahat planı oluşturma gibi görevleri yerine getirebilir.
Kullanıcı Tercihlerinin Toplanması
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Veri Getirmek için Kod Üretimi
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
Üretilen Kodu Çalıştırma
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)
Seyahat Planı Oluşturma
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)
Geri Bildirime Göre Ayarlama
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)
Tablonun şemasına dayalı olarak sorgu oluşturma sürecini geliştirmek, çevresel farkındalık ve akıl yürütme kullanılarak mümkün olabilir.
İşte bunun nasıl yapılabileceğine dair bir örnek:
İşte bu kavramları içeren güncellenmiş bir Python kodu örneği:
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
sözlüğü, geri bildirime dayalı olarak tercihlerin nasıl ayarlanması gerektiğini tanımlar. Bu, favorites
ve avoid
gibi alanları ve bunlara karşılık gelen ayarlamaları içerir.adjust_based_on_feedback
metodu): Bu metot, kullanıcı geri bildirimlerine ve şemaya dayalı olarak tercihleri ayarlar.adjust_based_on_environment
metodu): Bu metot, şema ve geri bildirimlere dayalı olarak ayarlamaları özelleştirir.Sistemi çevreye duyarlı hale getirerek ve şemaya dayalı akıl yürütme yaparak, daha doğru ve alakalı sorgular oluşturulabilir. Bu da daha iyi seyahat önerileri ve daha kişiselleştirilmiş bir kullanıcı deneyimi sağlar.
SQL (Structured Query Language), veritabanlarıyla etkileşim kurmak için güçlü bir araçtır. Retrieval-Augmented Generation (RAG) yaklaşımının bir parçası olarak kullanıldığında, SQL, AI ajanlarında yanıtları veya eylemleri bilgilendirmek ve oluşturmak için veritabanlarından ilgili verileri alabilir. Seyahat Acentası bağlamında SQL’in bir RAG tekniği olarak nasıl kullanılabileceğini inceleyelim.
Örnek: Bir veri analizi ajanı:
Kullanıcı Tercihlerinin Toplanması
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
SQL Sorguları Oluşturma
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 Sorgularını Çalıştırma
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
Öneriler Oluşturma
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)
Uçuş Sorgusu
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Otel Sorgusu
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Gezilecek Yer Sorgusu
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
SQL’i Retrieval-Augmented Generation (RAG) tekniğinin bir parçası olarak kullanarak, Seyahat Acentası gibi AI ajanları, doğru ve kişiselleştirilmiş öneriler sağlamak için dinamik olarak ilgili verileri alabilir ve kullanabilir.
Metakognisyonun bir uygulamasını göstermek için, bir problemin çözüm sürecinde karar verme sürecini “düşünen” basit bir ajan oluşturalım. Bu örnekte, bir ajan bir otel seçimini optimize etmeye çalışacak, ancak hatalar veya alt-optimal seçimler yaptığında kendi akıl yürütmesini değerlendirecek ve stratejisini ayarlayacaktır.
Bunu, fiyat ve kalite kombinasyonuna dayalı olarak otelleri seçen bir ajan örneğiyle simüle edeceğiz. Ancak, ajan “kararlarını” gözden geçirip stratejisini buna göre ayarlayacaktır.
İşte bir örnek:
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']}")
Buradaki anahtar, ajanın:
Bu, sistemin iç geri bildirimlere dayalı olarak akıl yürütme sürecini ayarlayabildiği basit bir metakognisyon biçimidir.
Metakognisyon, AI ajanlarının yeteneklerini önemli ölçüde artırabilecek güçlü bir araçtır. Metakognitif süreçleri entegre ederek, daha akıllı, uyarlanabilir ve verimli ajanlar tasarlayabilirsiniz. Ek kaynakları kullanarak AI ajanlarında metakognisyonun büyüleyici dünyasını daha fazla keşfedebilirsiniz.
Azure AI Foundry Discord adresine katılarak diğer öğrenenlerle tanışabilir, ofis saatlerine katılabilir ve AI Ajanları hakkındaki sorularınıza yanıt alabilirsiniz.
Feragatname:
Bu belge, Co-op Translator adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.