(Bu dersin videosunu izlemek için yukarıdaki resme tıklayın)
Yapay Zeka Ajanlarında Metabiliş
Yapay zeka ajanlarında metabiliş dersine hoş geldiniz! Bu bölüm, yapay zeka ajanlarının kendi düşünme süreçleri hakkında nasıl düşünebileceğini merak eden yeni başlayanlar için hazırlanmıştır. Bu dersin sonunda, temel kavramları anlayacak ve yapay zeka ajanı tasarımında metabilişi uygulamak için pratik örneklerle donanmış olacaksınız.
Bu dersi tamamladıktan sonra şunları yapabileceksiniz:
Metabiliş, kişinin kendi düşünme süreci hakkında düşünmesini içeren üst düzey bilişsel süreçlerdir. Yapay zeka ajanları için bu, kendini farkındalık ve geçmiş deneyimlere dayanarak eylemlerini değerlendirebilme ve ayarlayabilme anlamına gelir. Metabiliş veya “düşünme hakkında düşünme”, ajan temelli yapay zeka sistemlerinin geliştirilmesinde önemli bir kavramdır. Bu, yapay zeka sistemlerinin kendi iç süreçlerinin farkında olması ve davranışlarını buna göre izleyip düzenleyip uyarlayabilmesi anlamına gelir. Bizim ortamı okumamız veya bir probleme bakmamız gibi. Bu kendini fark etme, yapay zeka sistemlerinin daha iyi kararlar vermesine, hataları belirlemesine ve performanslarını zaman içinde iyileştirmesine yardımcı olabilir – yine Turing testi ve yapay zekanın kontrolü ele alıp almayacağı tartışmasına geri bağlanmaktadır.
Ajan temelli yapay zeka sistemleri bağlamında, metabiliş aşağıdaki zorlukların ele alınmasına yardımcı olabilir:
Metabiliş veya “düşünme hakkında düşünme”, bilişsel süreçlerin kendi kendini fark etme ve öz-düzenleme süreçlerini içeren üst düzey bir bilişsel süreçtir. Yapay zeka alanında, metabiliş ajanların stratejilerini ve eylemlerini değerlendirmelerine ve uyarlamalarına olanak sağlar, bu da problem çözme ve karar verme yeteneklerinde iyileşmeye yol açar. Metabilişi anlayarak, yalnızca daha zeki değil, aynı zamanda daha uyarlanabilir ve verimli yapay zeka ajanları tasarlayabilirsiniz. Gerçek metabilişte, yapay zekanın kendi akıl yürütmesi hakkında açıkça akıl yürütmesini görürdünüz.
Örnek: “Daha ucuz uçuşlara öncelik verdim çünkü… Direkt uçuşları kaçırıyor olabilirim, o yüzden tekrar kontrol edeyim.” Belirli bir rotayı neden veya nasıl seçtiğinin takibini yapmak.
Metabiliş, yapay zeka ajanı tasarımında birkaç nedenle kritik bir rol oynar:

Metabiliş süreçlerine dalmadan önce, bir yapay zeka ajanının temel bileşenlerini anlamak önemlidir. Bir yapay zeka ajanı tipik olarak şunlardan oluşur:
Bu bileşenler birlikte belirli görevleri yerine getirebilen bir “uzmanlık birimi” oluşturur.
Örnek: Tatilinizi sadece planlamakla kalmayıp aynı zamanda gerçek zamanlı verilere ve önceki müşteri yolculuğu deneyimlerine dayanarak yolunu ayarlayan bir seyahat acentesini düşünün.
Yapay zeka destekli bir seyahat acentesi hizmeti tasarladığınızı hayal edin. Bu ajan, “Seyahat Acentesi”, kullanıcılara tatillerini planlamada yardımcı olur. Metabilişi dahil etmek için Seyahat Acentesi’nin kendi farkındalığına ve geçmiş deneyimlere dayanarak eylemlerini değerlendirmesi ve ayarlaması gerekir. İşte metabilişin rolü:
Mevcut görev, bir kullanıcının Paris’e seyahat planlamasına yardımcı olmaktır.
Seyahat Acentesi, performansını değerlendirmek ve geçmiş deneyimlerden öğrenmek için metabilişi kullanır. Örneğin:
İşte Seyahat Acentesi kodunun metabiliş içerirken nasıl görünebileceğine dair basitleştirilmiş 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):
# Tercihlere göre uçuşları, otelleri ve gezilecek yerleri arayın
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)
# Geri bildirimi analiz edin ve gelecekteki önerileri ayarlayın
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Örnek kullanım
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)
Metabiliş dahil edilerek Seyahat Acentesi, daha kişiselleştirilmiş ve doğru seyahat önerileri sunarak genel kullanıcı deneyimini iyileştirebilir.
Planlama, AI ajan davranışının kritik bir bileşenidir. Bir hedefe ulaşmak için gereken adımların ana hatlarını çizmek, mevcut durumu, kaynakları ve olası engelleri dikkate almakla ilgilidir.
Örnek: Seyahat Acentesi’nin kullanıcıya seyahatini etkili bir şekilde planlamasında 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)
# Bir booing isteği içinde örnek kullanım
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ı anlamaya başlayalım.

RAG, bir geri getirme sistemi ile üretken modeli birleştirir. Sorgu yapıldığında, geri getirme sistemi harici bir kaynaktan ilgili belgeleri veya verileri getirir ve bu alınan bilgi üretken modele verilen girdiyi zenginleştirmek için kullanılır. Bu, modelin daha doğru ve bağlama uygun yanıtlar üretmesine yardımcı olur.
Bir RAG sisteminde, ajan bilgi tabanından ilgili bilgileri alır ve uygun yanıtlar veya eylemler üretmek için kullanır.
Düzeltici RAG yaklaşımı, AI ajanlarının doğruluğunu artırmak ve hataları düzeltmek için RAG tekniklerini kullanmaya odaklanır. Bu şunları içerir:
Web’den bilgi alan bir arama ajanını düşünelim. Düzeltici RAG yaklaşımı şunları içerebilir:
Düzeltici RAG (Retrieval-Augmented Generation), yapay zekanın bilgiyi geri getirme ve üretme yeteneğini geliştirirken yanlışlıkları düzeltmesini sağlar. Seyahat Acentesi’nin daha doğru ve alakalı seyahat önerileri sunmak için Düzeltici RAG yaklaşımını nasıl kullanabileceğine 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 Acentesi’nde Düzeltici RAG yaklaşımını içeren basitleştirilmiş bir Python kod ö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):
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
# Örnek kullanım
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 modele ilgili bağlamın veya arka plan bilgisinin yüklenmesini içerir. Bu, modelin bu bilgilere baştan erişimi olduğu anlamına gelir ve işlem sırasında ek veri getirmeye gerek kalmadan daha bilgili yanıtlar oluşturmasına yardımcı olabilir.
İşte bir seyahat acentesi uygulaması için önceden bağlam yüklemenin Python’da nasıl görünebileceğine dair basitleştirilmiş bir örnek:
class TravelAgent:
def __init__(self):
# Popüler destinasyonları ve bilgilerini önceden yükle
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):
# Önceden yüklenmiş bağlamdan destinasyon bilgilerini al
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}."
# Örnek kullanım
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Başlatma (__init__ yöntemi): TravelAgent sınıfı, Paris, Tokyo, New York ve Sidney gibi popüler destinasyonlara ait bilgileri içeren bir sözlüğü önceden yükler. Bu sözlük, her destinasyon için ülke, para birimi, dil ve başlıca turistik yerler gibi detayları içerir.
Bilgi Erişimi (get_destination_info yöntemi): Kullanıcı belirli bir destinasyon hakkında sorgulama yaptığında, get_destination_info yöntemi, önceden yüklenmiş bağlam sözlüğünden ilgili bilgileri getirir.
Bağlamı önceden yükleyerek, seyahat acentesi uygulaması, bu bilgileri gerçek zamanlı olarak dış bir kaynaktan çekmek zorunda kalmadan hızlı yanıt verebilir. Bu da uygulamayı daha verimli ve yanıtlı hale getirir.
Bir planı bir amaçla başlatmak, açık bir hedef veya istenen sonuçla başlamayı içerir. Bu amaç önden tanımlandığında, model bunu yinelemeli süreç boyunca rehber prensip olarak kullanabilir. Bu, her yinelemenin istenen sonuca daha yakın olmasını sağlayarak süreci daha verimli ve odaklı kılar.
İşte bir seyahat acentesi için bir planı bir amaçla başlatıp sonra yinelemek için Python’da nasıl yapılacağına dair bir örnek:
Bir seyahat acentesi, bir müşteri için kişiselleştirilmiş bir tatil planlamak istiyor. Amaç, müşterinin tercihleri ve bütçesine göre tatminini maksimize eden 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']
# Örnek kullanım
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__ yöntemi): TravelAgent sınıfı, adı, maliyeti ve aktivite türü gibi özellikleri olan potansiyel destinasyonların bir listesi ile başlatılır.
Planı Başlatma (bootstrap_plan yöntemi): Bu yöntem, müşterinin tercihleri ve bütçesine dayanarak başlangıç seyahat planını oluşturur. Destinasyon listesinden geçerek, müşterinin tercihlerine uyan ve bütçe dahilinde olanları plana ekler.
Tercihleri Eşleştirme (match_preferences yöntemi): Bu yöntem, bir destinasyonun müşterinin tercihleriyle uyup uymadığını kontrol eder.
Planı Yineleme (iterate_plan yöntemi): Bu yöntem, planın her destinasyonunu müşterinin tercihleri ve bütçe kısıtlamaları göz önünde bulundurularak daha iyi bir eşleşme ile değiştirmeyi deneyerek planı iyileştirir.
Maliyet Hesaplama (calculate_cost yöntemi): Bu yöntem, mevcut planın toplam maliyetini ve olası yeni bir destinasyonun maliyetini hesaplar.
Planı açık bir amaçla başlatıp (örneğin müşteri tatminini maksimize etmek) ve planı iyileştirmek için yineleyerek, seyahat acentesi müşteriye kişiselleştirilmiş ve optimize edilmiş bir seyahat programı oluşturabilir. Bu yaklaşım, seyahat planının baştan itibaren müşterinin tercihleri ve bütçesi ile uyumlu olmasını sağlar ve her yinelemede gelişir.
Büyük Dil Modelleri (LLM’ler), alınan belgelerin veya oluşturulan yanıtların alaka ve kalitesini değerlendirerek yeniden sıralama ve puanlama için kullanılabilir. İşleyiş şekli şöyledir:
Getirme: İlk getirme adımı, sorguya dayanan aday belgeler veya yanıtlar setini alır.
Yeniden Sıralama: LLM, bu adayları değerlendirir ve alaka ve kaliteye göre yeniden sıralar. Bu adım en alakalı ve kaliteli bilgilerin önce sunulmasını sağlar.
Puanlama: LLM, her aday için alaka ve kaliteyi yansıtan puanlar verir. Bu, kullanıcı için en iyi yanıt veya belgeyi seçmeye yardımcı olur.
LLM’lerden yararlanarak, sistem daha doğru ve bağlamsal olarak alakalı bilgi sunabilir, böylece genel kullanıcı deneyimini artırır.
İşte bir seyahat acentesinin kullanıcı tercihleri temelinde seyahat destinasyonlarını yeniden sıralama ve puanlama için Büyük Dil Modeli (LLM) kullanmasına dair bir Python örneği:
Bir seyahat acentesi, müşterinin tercihleri temelinde en iyi seyahat destinasyonlarını önermek istiyor. LLM, destinasyonları yeniden sıralayıp puanlayarak en alakalı seçeneklerin sunulmasını sağlar.
İşte önceki örneği Azure OpenAI Hizmetleri ile güncelleme yolu:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Azure OpenAI için bir istem oluştur
prompt = self.generate_prompt(preferences)
# İstek için başlıkları ve yükü tanımla
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Yeniden sıralanmış ve puanlanmış destinasyonları almak için Azure OpenAI API'sini çağır
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Önerileri çıkar ve döndür
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
# Örnek kullanım
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ı, adı ve açıklaması gibi özelliklere sahip potansiyel seyahat destinasyonlarının bir listesi ile başlatılır.
Öneri Alma (get_recommendations yöntemi): Bu yöntem, kullanıcı tercihlerine dayalı olarak Azure OpenAI servisi için bir prompt oluşturur ve yeniden sıralanmış ve puanlanmış destinasyonları almak için Azure OpenAI API’ye HTTP POST isteği yapar.
Prompt Oluşturma (generate_prompt yöntemi): Bu yöntem, Azure OpenAI için kullanıcı tercihleri ve destinasyon listesini içeren bir prompt oluşturur. Prompt, modele verilen tercihlere göre destinasyonları yeniden sıralayıp puanlama talimatı verir.
API Çağrısı: requests kütüphanesi, Azure OpenAI API uç noktasına 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 şehir gezisi ve çeşitli kültür ilgisi) toplar ve Azure OpenAI servisini kullanarak seyahat destinasyonları için yeniden sıralanmış ve puanlanmış öneriler alır.
your_azure_openai_api_key yerini gerçek Azure OpenAI API anahtarınızla ve https://your-endpoint.com/... adresini Azure OpenAI dağıtımınızın gerçek uç nokta URL’si ile değiştirmeyi unutmayın.
LLM’den yeniden sıralama ve puanlama için yararlanarak, seyahat acentesi müşterilerine daha kişiselleştirilmiş ve alakalı seyahat önerileri sunarak genel deneyimlerini iyileştirebilir.
Getirme Destekli Üretim (RAG), AI ajanları geliştirmede hem bir prompt tekniği hem de bir araç olabilir. İkisi arasındaki farkı anlamak, RAG’i projelerinizde daha etkili kullanmanızı sağlar.
Nedir?
Nasıl çalışır:
Seyahat Acentesi Örneği:
Nedir?
Nasıl çalışır:
Seyahat Acentesi Örneği:
| Özellik | Prompt Tekniği | Araç |
|---|---|---|
| Manuel vs Otomatik | Her sorgu için manuel prompt oluşturma. | Getirme ve üretim için otomatik süreç. |
| Kontrol | Getirme süreci üzerinde daha fazla kontrol sağlar. | Getirme ve üretimi otomatikleştirir ve düzenler. |
| Esneklik | Belirli ihtiyaçlara göre özelleştirilmiş promptlara izin verir. | Büyük ölçekli uygulamalar için daha verimli. |
| Karmaşıklık | Promptların oluşturulması ve ayarlanması gerekir. | AI ajan mimarisine kolay entegrasyon. |
Prompt 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 değerlendirmesi, AI ajan performansının kritik bir yönüdür. Bu, ajan tarafından getirilen ve oluşturulan bilgilerin kullanıcı için uygun, doğru ve faydalı olmasını sağlar. AI ajanlarda alakayı değerlendirmek için 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] # En alakalı ilk 10 öğeyi döndür
Örnek:
def process_query(query):
# Kullanıcının sorgusundan anahtar bilgileri çıkarmak için NLP kullanın
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 Travel Agent’ın seyahat önerilerinin alakasını 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] # En alakalı ilk 10 öğeyi döndür
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
# Örnek kullanım
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, kullanıcının sorgusunun altında yatan amaç veya hedefi anlamak ve yorumlamak suretiyle en alakalı ve faydalı bilgiyi getirmeyi ve oluşturmayı içerir. Bu yaklaşım, sadece anahtar kelimeleri eşlemenin ötesine geçer ve kullanıcının gerçek ihtiyaçlarını ve bağlamını kavramaya odaklanır.
Seyahat Acenti örneğine bakalım ve niyetle aramanın nasıl uygulanabileceğini gösterelim.
Kullanıcı Tercihlerini Toplama
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Kullanıcı Niyetini 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):
# Bağlamı anlamak için mevcut sorguyu kullanıcı geçmişi ile birleştir
context = {
"current_query": query,
"user_history": user_history
}
return context
Arama ve Sonuçları 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):
# Bilgi amaçlı niyet için örnek arama mantığı
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Navigasyon amaçlı niyet için örnek arama mantığı
results = search_web(query)
return results
def search_transaction(query, preferences):
# İşlemsel niyet için örnek arama mantığı
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Örnek kişiselleştirme mantığı
personalized = [result for result in results if result not in user_history]
return personalized[:10] # En iyi 10 kişiselleştirilmiş sonucu döndür
Ö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 çözen ve görevleri otomatikleştiren kod yazmak ve yürütmek için yapay zeka modelleri kullanır.
Kod üreten ajanlar, kod yazmak ve yürütmek için üretken yapay zeka modelleri kullanır. Bu ajanlar, çeşitli programlama dillerinde kod üreterek ve çalıştırarak karmaşık problemleri çözebilir, görevleri otomatikleştirebilir ve değerli içgörüler sağlayabilir.
Bir kod üreten ajan tasarladığınızı düşünün. İşte nasıl çalışabileceği:
Bu örnekte, seyahat planlama için yardımcı olacak ve kodu üreterek çalıştıracak bir kod üreten ajan, Seyahat Acentası tasarlayacağız. Bu ajan, seyahat seçeneklerini getirme, sonuçları filtreleme ve üretken yapay zeka ile bir güzergah derleme gibi görevleri yapabilir.
Kullanıcı Tercihlerini Toplama
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Veri Getirmek için Kod Üretme
def generate_code_to_fetch_data(preferences):
# Örnek: Kullanıcı tercihlerine göre uçuşları aramak için kod oluştur
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):
# Örnek: Otelleri aramak için kod oluştur
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Oluşturulan Kodu Çalıştırma
def execute_code(code):
# Üretilen kodu exec kullanarak çalıştırın
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)
Güzergah 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):
# Kullanıcı geri bildirimlerine göre tercihleri ayarla
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)
# Güncellenmiş tercihlerle kodu yeniden oluştur ve çalıştır
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)
Tablo şemasına dayalı olarak sorgu oluşturma süreci, çevresel farkındalık ve akıl yürütmeden yararlanarak geliştirilebilir.
İşte bunun nasıl yapılabileceğine dair bir örnek:
İşte bu kavramları içeren güncellenmiş bir Python kod örneği:
def adjust_based_on_feedback(feedback, preferences, schema):
# Kullanıcı geri bildirimlerine göre tercihleri ayarla
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Diğer ilgili tercihleri ayarlamak için şemaya dayalı muhakeme
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):
# Şema ve geri bildirime göre tercihleri ayarlamak için özel mantık
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):
# Güncellenen tercihlere göre uçuş verilerini getiren kodu oluştur
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Güncellenen tercihlere göre otel verilerini getiren kodu oluştur
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Kodun yürütülmesini simüle et ve sahte veri döndür
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Uçuşlar, oteller ve gezilecek yerler temelinde gezi programı oluştur
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Örnek şema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Örnek kullanım
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Güncellenen tercihlerle kodu yeniden oluştur ve çalıştır
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 bildiriye göre tercihlerin nasıl ayarlanacağını tanımlar. favorites ve avoid gibi alanlar ve ilgili ayarlamalar içerir.adjust_based_on_feedback metodu): Bu metod, kullanıcı geri bildirimlerine ve şemaya göre tercihleri ayarlar.adjust_based_on_environment metodu): Bu metod, şema ve geri bildirimlere göre ayarlamaları özelleştirir.Sistemi çevreye duyarlı ve şemaya dayalı akıl yürüten hale getirerek, daha doğru ve ilgili sorgular üretebilir, böylece daha iyi seyahat önerileri ve daha kişiselleştirilmiş kullanıcı deneyimi sağlanabilir.
SQL (Yapılandırılmış Sorgu Dili), veritabanlarıyla etkileşim için güçlü bir araçtır. Retrieval-Augmented Generation (RAG) yaklaşımının bir parçası olarak kullanıldığında, SQL veritabanlarından ilgili verileri alarak yapay zeka ajanlarının yanıtlar veya eylemler üretmesini sağlar. Seyahat Acentası bağlamında SQL’in RAG tekniği olarak nasıl kullanılabileceğini inceleyelim.
Örnek: Bir veri analiz ajanı:
Kullanıcı Tercihlerini Toplama
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
SQL Sorguları Üretme
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 Üretme
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';
Retrieval-Augmented Generation (RAG) tekniğinin bir parçası olarak SQL’i kullanarak, Seyahat Acentası gibi yapay zeka ajanları, ilgili verileri dinamik olarak alabilir ve kullanabilir, böylece doğru ve kişiselleştirilmiş öneriler sunabilir.
Metakognisyon uygulamasını göstermek için, bir problemi çözerken kendi karar verme sürecini gözden geçiren basit bir ajan oluşturalım. Bu örnekte, bir otel seçimini optimize etmeye çalışan, ancak hatalar veya suboptimal seçimler yaptığında kendi akıl yürütmesini değerlendiren ve stratejisini ayarlayan bir sistem kuracağız.
Bu durumu, ajan fiyat ve kalite kombinasyonuna göre otelleri seçerken kararlarını “yansıtacak” şekilde basit bir örnekle simüle edeceğiz.
İşte bir örnek:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Daha önce seçilen otelleri saklar
self.corrected_choices = [] # Düzeltildi seçenekleri saklar
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Mevcut stratejiler
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]
# Son seçimin iyi olup olmadığını söyleyen kullanıcı geri bildirimi olduğunu varsayalım
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Önceki seçim tatmin edici değilse stratejiyi ayarla
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"
# Otellerin bir listesini simüle et (fiyat ve kalite)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Bir ajan oluştur
agent = HotelRecommendationAgent()
# Adım 1: Ajan "en ucuz" stratejisini kullanarak bir otel önerir
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Adım 2: Ajan seçimi değerlendirir ve gerekiyorsa stratejiyi ayarlar
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Adım 3: Ajan ayarlanmış stratejiyi kullanarak tekrar öneride bulunur
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Burada önemli olan, ajanın:
Bu, sistemin içsel geri bildirime dayanarak akıl yürütme sürecini ayarlayabildiği basit bir metakognisyon biçimidir.
Metakognisyon, yapay zeka ajanlarının yeteneklerini önemli ölçüde geliştirebilen güçlü bir araçtır. Metakognitif süreçleri dahil ederek, daha zeki, uyarlanabilir ve verimli ajanlar tasarlayabilirsiniz. Ek kaynakları kullanarak yapay zeka ajanlarındaki metakognisyon dünyasını daha derinlemesine keşfedebilirsiniz.
Diğer öğrenenlerle buluşmak, ofis saatlerine katılmak ve Yapay Zeka Ajanlarıyla ilgili sorularınızı yanıtlamak için Microsoft Foundry Discord topluluğuna katılın.
Feragatname: Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz.