(Klik gambar di atas untuk menonton video pelajaran ini)
Metakognisi dalam Agen AI
Selamat datang di pelajaran tentang metakognisi dalam agen AI! Bab ini dirancang untuk pemula yang penasaran tentang bagaimana agen AI dapat berpikir tentang proses berpikir mereka sendiri. Pada akhir pelajaran ini, Anda akan memahami konsep kunci dan dilengkapi dengan contoh praktis untuk menerapkan metakognisi dalam desain agen AI.
Setelah menyelesaikan pelajaran ini, Anda akan dapat:
Metakognisi merujuk pada proses kognitif tingkat tinggi yang melibatkan berpikir tentang proses berpikir seseorang sendiri. Untuk agen AI, ini berarti mampu mengevaluasi dan menyesuaikan tindakan mereka berdasarkan kesadaran diri dan pengalaman masa lalu. Metakognisi, atau “berpikir tentang berpikir,” adalah konsep penting dalam pengembangan sistem AI agentik. Ini melibatkan sistem AI yang sadar akan proses internal mereka sendiri dan mampu memantau, mengatur, dan menyesuaikan perilaku mereka sesuai kebutuhan. Sama seperti yang kita lakukan ketika membaca suasana atau melihat sebuah masalah. Kesadaran diri ini dapat membantu sistem AI membuat keputusan yang lebih baik, mengidentifikasi kesalahan, dan meningkatkan kinerjanya dari waktu ke waktu—kembali lagi ke tes Turing dan perdebatan apakah AI akan mengambil alih.
Dalam konteks sistem AI agentik, metakognisi dapat membantu mengatasi beberapa tantangan, seperti:
Metakognisi, atau “berpikir tentang berpikir,” adalah proses kognitif tingkat tinggi yang melibatkan kesadaran diri dan pengaturan diri terhadap proses kognitif seseorang. Dalam ranah AI, metakognisi memberdayakan agen untuk mengevaluasi dan menyesuaikan strategi serta tindakan mereka, yang mengarah pada kemampuan pemecahan masalah dan pengambilan keputusan yang lebih baik. Dengan memahami metakognisi, Anda dapat merancang agen AI yang tidak hanya lebih cerdas tetapi juga lebih adaptif dan efisien. Dalam metakognisi sejati, Anda akan melihat AI secara eksplisit bernalar tentang penalarannya sendiri.
Contoh: “Saya mengutamakan penerbangan yang lebih murah karena… saya mungkin melewatkan penerbangan langsung, jadi saya akan memeriksa ulang.” Melacak bagaimana atau mengapa memilih rute tertentu.
Metakognisi memainkan peran penting dalam desain agen AI karena beberapa alasan:

Sebelum menyelami proses metakognitif, penting untuk memahami komponen dasar dari agen AI. Agen AI biasanya terdiri dari:
Komponen-komponen ini bekerja sama untuk menciptakan “unit keahlian” yang dapat melakukan tugas-tugas spesifik.
Contoh: Pertimbangkan agen perjalanan, layanan agen yang tidak hanya merencanakan liburan Anda tetapi juga menyesuaikan jalurnya berdasarkan data real-time dan pengalaman perjalanan pelanggan sebelumnya.
Bayangkan Anda merancang layanan agen perjalanan yang didukung oleh AI. Agen ini, “Agen Perjalanan,” membantu pengguna merencanakan liburan mereka. Untuk memasukkan metakognisi, Agen Perjalanan perlu mengevaluasi dan menyesuaikan tindakannya berdasarkan kesadaran diri dan pengalaman masa lalu. Berikut bagaimana metakognisi dapat berperan:
Tugas saat ini adalah membantu pengguna merencanakan perjalanan ke Paris.
Agen Perjalanan menggunakan metakognisi untuk mengevaluasi kinerjanya dan belajar dari pengalaman masa lalu. Misalnya:
Berikut contoh sederhana bagaimana kode Agen Perjalanan mungkin terlihat saat mengintegrasikan metakognisi:
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):
# Cari penerbangan, hotel, dan atraksi berdasarkan preferensi
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)
# Analisis umpan balik dan sesuaikan rekomendasi masa depan
self.user_preferences = adjust_preferences(self.user_preferences, feedback)
# Contoh penggunaan
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)
Dengan memasukkan metakognisi, Agen Perjalanan dapat memberikan rekomendasi perjalanan yang lebih personal dan akurat, meningkatkan pengalaman pengguna secara keseluruhan.
Perencanaan adalah komponen penting dari perilaku agen AI. Ini melibatkan merinci langkah-langkah yang diperlukan untuk mencapai suatu tujuan, dengan mempertimbangkan kondisi saat ini, sumber daya, dan kemungkinan hambatan.
Contoh: Berikut adalah langkah-langkah yang harus diambil Agen Perjalanan untuk membantu pengguna merencanakan perjalanan mereka secara efektif:
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)
# Contoh penggunaan dalam permintaan booing
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)
Pertama-tama mari kita mulai dengan memahami perbedaan antara Alat RAG dan Memuat Konteks Pre-emptif

RAG menggabungkan sistem pengambilan dengan model generatif. Ketika sebuah query dibuat, sistem pengambilan mengambil dokumen atau data relevan dari sumber eksternal, dan informasi yang diambil ini digunakan untuk memperkaya input ke model generatif. Ini membantu model menghasilkan respons yang lebih akurat dan sesuai konteks.
Dalam sistem RAG, agen mengambil informasi relevan dari basis pengetahuan dan menggunakannya untuk menghasilkan respons atau tindakan yang sesuai.
Pendekatan RAG Korektif berfokus pada penggunaan teknik RAG untuk memperbaiki kesalahan dan meningkatkan akurasi agen AI. Ini melibatkan:
Pertimbangkan agen pencari yang mengambil informasi dari web untuk menjawab pertanyaan pengguna. Pendekatan RAG Korektif mungkin melibatkan:
RAG Korektif (Retrieval-Augmented Generation) meningkatkan kemampuan AI untuk mengambil dan menghasilkan informasi sekaligus memperbaiki ketidakakuratan. Mari kita lihat bagaimana Agen Perjalanan dapat menggunakan pendekatan RAG Korektif untuk memberikan rekomendasi perjalanan yang lebih akurat dan relevan.
Ini melibatkan:
Contoh:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Contoh:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Contoh:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Contoh:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Contoh:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Contoh:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Contoh:
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)
Berikut contoh kode Python sederhana yang menggabungkan pendekatan RAG Korektif di Agen Perjalanan:
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
# Contoh penggunaan
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)
Pre-emptive Context Load melibatkan pemuatan konteks atau informasi latar belakang yang relevan ke dalam model sebelum memproses sebuah kueri. Ini berarti model memiliki akses ke informasi ini sejak awal, yang dapat membantunya menghasilkan respons yang lebih berinformasi tanpa perlu mengambil data tambahan selama proses berlangsung.
Berikut adalah contoh sederhana tentang bagaimana pre-emptive context load mungkin terlihat untuk aplikasi agen perjalanan dalam Python:
class TravelAgent:
def __init__(self):
# Muat terlebih dahulu tujuan populer dan informasi mereka
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):
# Ambil informasi tujuan dari konteks yang sudah dimuat sebelumnya
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}."
# Contoh penggunaan
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Inisialisasi (metode __init__): Kelas TravelAgent memuat sebelumnya sebuah kamus yang berisi informasi tentang destinasi populer seperti Paris, Tokyo, New York, dan Sydney. Kamus ini mencakup detail seperti negara, mata uang, bahasa, dan atraksi utama untuk setiap destinasi.
Mengambil Informasi (metode get_destination_info): Ketika pengguna mengajukan pertanyaan tentang destinasi tertentu, metode get_destination_info mengambil informasi relevan dari kamus konteks yang telah dimuat sebelumnya.
Dengan memuat konteks terlebih dahulu, aplikasi agen perjalanan dapat merespon pertanyaan pengguna dengan cepat tanpa harus mengambil informasi ini dari sumber eksternal secara real-time. Ini membuat aplikasi menjadi lebih efisien dan responsif.
Memulai sebuah rencana dengan tujuan melibatkan memulai dengan sasaran atau hasil yang jelas dalam pikiran. Dengan mendefinisikan tujuan ini di awal, model dapat menggunakannya sebagai prinsip panduan sepanjang proses iterasi. Ini membantu memastikan bahwa setiap iterasi semakin mendekati pencapaian hasil yang diinginkan, membuat proses lebih efisien dan terfokus.
Berikut adalah contoh bagaimana Anda dapat memulai rencana perjalanan dengan tujuan sebelum melakukan iterasi untuk agen perjalanan dalam Python:
Seorang agen perjalanan ingin merencanakan liburan yang disesuaikan untuk seorang klien. Tujuannya adalah membuat itinerary perjalanan yang memaksimalkan kepuasan klien berdasarkan preferensi dan anggarannya.
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']
# Contoh penggunaan
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)
Inisialisasi (metode __init__): Kelas TravelAgent diinisialisasi dengan daftar destinasi potensial, masing-masing memiliki atribut seperti nama, biaya, dan jenis aktivitas.
Memulai Rencana (metode bootstrap_plan): Metode ini membuat rencana perjalanan awal berdasarkan preferensi dan anggaran klien. Ia melakukan iterasi melalui daftar destinasi dan menambahkannya ke rencana jika cocok dengan preferensi klien dan sesuai dengan anggaran.
Mencocokkan Preferensi (metode match_preferences): Metode ini memeriksa apakah sebuah destinasi cocok dengan preferensi klien.
Mengiterasi Rencana (metode iterate_plan): Metode ini menyempurnakan rencana awal dengan mencoba mengganti setiap destinasi dalam rencana dengan pilihan yang lebih cocok, mempertimbangkan preferensi dan batasan anggaran klien.
Menghitung Biaya (metode calculate_cost): Metode ini menghitung total biaya dari rencana saat ini, termasuk kemungkinan destinasi baru.
Dengan memulai rencana dengan tujuan yang jelas (misalnya, memaksimalkan kepuasan klien) dan melakukan iterasi untuk menyempurnakan rencana, agen perjalanan dapat membuat itinerary yang disesuaikan dan dioptimalkan untuk klien. Pendekatan ini memastikan bahwa rencana perjalanan selaras dengan preferensi dan anggaran klien sejak awal dan membaik pada setiap iterasi.
Large Language Models (LLM) dapat digunakan untuk re-ranking dan penilaian dengan mengevaluasi relevansi dan kualitas dokumen yang diambil atau respons yang dihasilkan. Berikut cara kerjanya:
Pengambilan: Langkah pengambilan awal mengambil sekumpulan dokumen atau respons kandidat berdasarkan kueri.
Re-ranking: LLM menilai kandidat-kandidat ini dan mengurutkannya kembali berdasarkan relevansi dan kualitas mereka. Langkah ini memastikan bahwa informasi yang paling relevan dan berkualitas tinggi disajikan terlebih dahulu.
Penilaian: LLM memberikan skor pada setiap kandidat, mencerminkan relevansi dan kualitasnya. Ini membantu dalam memilih respons atau dokumen terbaik untuk pengguna.
Dengan memanfaatkan LLM untuk re-ranking dan penilaian, sistem dapat menyediakan informasi yang lebih akurat dan relevan secara kontekstual, meningkatkan pengalaman pengguna secara keseluruhan.
Berikut contoh bagaimana seorang agen perjalanan mungkin menggunakan Large Language Model (LLM) untuk re-ranking dan penilaian destinasi perjalanan berdasarkan preferensi pengguna dalam Python:
Seorang agen perjalanan ingin merekomendasikan destinasi perjalanan terbaik kepada seorang klien berdasarkan preferensi mereka. LLM akan membantu melakukan re-ranking dan penilaian destinasi untuk memastikan opsi yang paling relevan disajikan.
Berikut cara Anda memperbarui contoh sebelumnya untuk menggunakan Azure OpenAI Services:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Hasilkan sebuah prompt untuk Azure OpenAI
prompt = self.generate_prompt(preferences)
# Tentukan headers dan payload untuk permintaan
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Panggil API Azure OpenAI untuk mendapatkan tujuan yang sudah diurutkan ulang dan diberi skor
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Ekstrak dan kembalikan rekomendasi
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
# Contoh penggunaan
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)
Inisialisasi: Kelas TravelAgent diinisialisasi dengan daftar destinasi perjalanan potensial, masing-masing memiliki atribut seperti nama dan deskripsi.
Mendapatkan Rekomendasi (metode get_recommendations): Metode ini menghasilkan prompt untuk layanan Azure OpenAI berdasarkan preferensi pengguna dan membuat permintaan HTTP POST ke API Azure OpenAI untuk mendapatkan destinasi yang telah di re-ranking dan dinilai.
Membuat Prompt (metode generate_prompt): Metode ini membangun prompt untuk Azure OpenAI, termasuk preferensi pengguna dan daftar destinasi. Prompt ini mengarahkan model untuk melakukan re-ranking dan penilaian destinasi berdasarkan preferensi yang diberikan.
Panggilan API: Library requests digunakan untuk membuat permintaan HTTP POST ke endpoint Azure OpenAI API. Respons berisi destinasi yang telah di re-ranking dan dinilai.
Contoh Penggunaan: Agen perjalanan mengumpulkan preferensi pengguna (misalnya, minat pada wisata dan budaya yang beragam) dan menggunakan layanan Azure OpenAI untuk mendapatkan rekomendasi destinasi perjalanan yang di re-ranking dan dinilai.
Pastikan untuk mengganti your_azure_openai_api_key dengan kunci API Azure OpenAI Anda yang sebenarnya dan https://your-endpoint.com/... dengan URL endpoint aktual dari deployment Azure OpenAI Anda.
Dengan memanfaatkan LLM untuk re-ranking dan penilaian, agen perjalanan dapat memberikan rekomendasi perjalanan yang lebih personal dan relevan kepada klien, meningkatkan pengalaman mereka secara keseluruhan.
Retrieval-Augmented Generation (RAG) bisa menjadi teknik prompting sekaligus alat dalam pengembangan agen AI. Memahami perbedaan keduanya dapat membantu Anda memanfaatkan RAG dengan lebih efektif dalam proyek Anda.
Apa itu?
Cara kerjanya:
Contoh pada Agen Perjalanan:
Apa itu?
Cara kerjanya:
Contoh pada Agen Perjalanan:
| Aspek | Teknik Prompting | Alat |
|---|---|---|
| Manual vs Otomatis | Merumuskan prompt secara manual untuk tiap kueri. | Proses otomatis untuk pengambilan dan generasi. |
| Kontrol | Memberi kontrol lebih terhadap proses pengambilan. | Menyederhanakan dan mengotomasi pengambilan dan generasi. |
| Fleksibilitas | Memungkinkan prompt disesuaikan berdasarkan kebutuhan spesifik. | Lebih efisien untuk implementasi berskala besar. |
| Kompleksitas | Membutuhkan penyusunan dan penyesuaian prompt. | Lebih mudah diintegrasikan dalam arsitektur agen AI. |
Contoh Teknik Prompting:
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)
Contoh Alat:
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)
Mengevaluasi relevansi adalah aspek krusial dalam kinerja agen AI. Ini memastikan bahwa informasi yang diambil dan dihasilkan oleh agen sesuai, akurat, dan berguna bagi pengguna. Mari kita jelajahi bagaimana mengevaluasi relevansi dalam agen AI, termasuk contoh praktis dan teknik.
Contoh:
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
Contoh:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Mengembalikan 10 item relevan teratas
Contoh:
def process_query(query):
# Gunakan NLP untuk mengekstrak informasi kunci dari pertanyaan pengguna
processed_query = nlp(query)
return processed_query
Contoh:
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
Berikut contoh praktis bagaimana Agen Perjalanan dapat mengevaluasi relevansi rekomendasi perjalanan:
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] # Mengembalikan 10 item relevan teratas
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
# Contoh penggunaan
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)
Mencari dengan niat melibatkan memahami dan menafsirkan tujuan atau sasaran di balik kueri pengguna untuk mengambil dan menghasilkan informasi yang paling relevan dan berguna. Pendekatan ini melampaui hanya mencocokkan kata kunci dan berfokus pada memahami kebutuhan dan konteks pengguna secara aktual.
Mari kita lihat Agen Perjalanan sebagai contoh untuk melihat bagaimana pencarian dengan niat dapat diimplementasikan.
Mengumpulkan Preferensi Pengguna
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Memahami Niat Pengguna
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"
Kesadaran Konteks
def analyze_context(query, user_history):
# Gabungkan kueri saat ini dengan riwayat pengguna untuk memahami konteks
context = {
"current_query": query,
"user_history": user_history
}
return context
Cari dan Personalisasi Hasil
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):
# Contoh logika pencarian untuk niat informasional
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Contoh logika pencarian untuk niat navigasi
results = search_web(query)
return results
def search_transaction(query, preferences):
# Contoh logika pencarian untuk niat transaksional
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Contoh logika personalisasi
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Mengembalikan 10 hasil teratas yang dipersonalisasi
Contoh Penggunaan
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)
Agen penghasil kode menggunakan model AI untuk menulis dan menjalankan kode, menyelesaikan masalah kompleks dan mengotomatisasi tugas.
Agen penghasil kode menggunakan model AI generatif untuk menulis dan menjalankan kode. Agen ini dapat menyelesaikan masalah kompleks, mengotomatisasi tugas, dan memberikan wawasan berharga dengan menghasilkan dan menjalankan kode dalam berbagai bahasa pemrograman.
Bayangkan Anda sedang merancang agen penghasil kode. Berikut cara kerjanya:
Dalam contoh ini, kita akan merancang agen penghasil kode, Agen Perjalanan, untuk membantu pengguna merencanakan perjalanan mereka dengan menghasilkan dan menjalankan kode. Agen ini dapat menangani tugas seperti mengambil opsi perjalanan, memfilter hasil, dan menyusun rencana perjalanan menggunakan AI generatif.
Mengumpulkan Preferensi Pengguna
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Menghasilkan Kode untuk Mengambil Data
def generate_code_to_fetch_data(preferences):
# Contoh: Hasilkan kode untuk mencari penerbangan berdasarkan preferensi pengguna
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):
# Contoh: Hasilkan kode untuk mencari hotel
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Menjalankan Kode yang Dihasilkan
def execute_code(code):
# Jalankan kode yang dihasilkan menggunakan 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)
Menghasilkan Itinerary
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)
Menyesuaikan Berdasarkan Umpan Balik
def adjust_based_on_feedback(feedback, preferences):
# Sesuaikan preferensi berdasarkan umpan balik pengguna
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)
# Regenerasi dan jalankan kode dengan preferensi yang diperbarui
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)
Berdasarkan skema tabel dapat memang meningkatkan proses pembuatan query dengan memanfaatkan kesadaran lingkungan dan penalaran.
Berikut contoh bagaimana ini dapat dilakukan:
Berikut contoh kode Python yang diperbarui yang menggabungkan konsep ini:
def adjust_based_on_feedback(feedback, preferences, schema):
# Sesuaikan preferensi berdasarkan umpan balik pengguna
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Penalaran berdasarkan skema untuk menyesuaikan preferensi terkait lainnya
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):
# Logika khusus untuk menyesuaikan preferensi berdasarkan skema dan umpan balik
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):
# Hasilkan kode untuk mengambil data penerbangan berdasarkan preferensi yang diperbarui
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Hasilkan kode untuk mengambil data hotel berdasarkan preferensi yang diperbarui
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulasikan eksekusi kode dan kembalikan data tiruan
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Buat rencana perjalanan berdasarkan penerbangan, hotel, dan atraksi
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Contoh skema
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Contoh penggunaan
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Hasilkan kembali dan jalankan kode dengan preferensi yang diperbarui
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 mendefinisikan bagaimana preferensi harus disesuaikan berdasarkan umpan balik. Ini mencakup bidang seperti favorites dan avoid, dengan penyesuaian terkait.adjust_based_on_feedback): Metode ini menyesuaikan preferensi berdasarkan umpan balik pengguna dan skema.adjust_based_on_environment): Metode ini menyesuaikan penyesuaian berdasarkan skema dan umpan balik.Dengan membuat sistem sadar lingkungan dan melakukan penalaran berdasarkan skema, sistem dapat menghasilkan query yang lebih akurat dan relevan, menghasilkan rekomendasi perjalanan yang lebih baik dan pengalaman pengguna yang lebih dipersonalisasi.
SQL (Structured Query Language) adalah alat yang kuat untuk berinteraksi dengan basis data. Saat digunakan sebagai bagian dari pendekatan Retrieval-Augmented Generation (RAG), SQL dapat mengambil data yang relevan dari basis data untuk menginformasikan dan menghasilkan respons atau tindakan dalam agen AI. Mari kita jelajahi bagaimana SQL dapat digunakan sebagai teknik RAG dalam konteks Agen Perjalanan.
Contoh: Agen analisis data:
Mengumpulkan Preferensi Pengguna
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Menghasilkan Query 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
Menjalankan 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
Menghasilkan Rekomendasi
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)
Query Penerbangan
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Query Hotel
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Query Atraksi
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Dengan memanfaatkan SQL sebagai bagian dari teknik Retrieval-Augmented Generation (RAG), agen AI seperti Agen Perjalanan dapat secara dinamis mengambil dan menggunakan data relevan untuk memberikan rekomendasi yang akurat dan dipersonalisasi.
Jadi untuk mendemonstrasikan implementasi metakognisi, mari buat agen sederhana yang merenungkan proses pengambilan keputusannya saat menyelesaikan masalah. Untuk contoh ini, kita akan membangun sistem di mana agen mencoba mengoptimalkan pilihan hotel, tetapi kemudian mengevaluasi penalarannya sendiri dan menyesuaikan strateginya ketika membuat kesalahan atau pilihan yang kurang optimal.
Kita akan mensimulasikan ini menggunakan contoh dasar di mana agen memilih hotel berdasarkan kombinasi harga dan kualitas, tetapi ia akan “merenungkan” keputusannya dan menyesuaikan sesuai.
Berikut contohnya:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Menyimpan hotel yang dipilih sebelumnya
self.corrected_choices = [] # Menyimpan pilihan yang telah dikoreksi
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Strategi yang tersedia
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]
# Mari kita asumsikan kita memiliki umpan balik pengguna yang memberitahu apakah pilihan terakhir baik atau tidak
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Sesuaikan strategi jika pilihan sebelumnya tidak memuaskan
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"
# Simulasikan daftar hotel (harga dan kualitas)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Buat agen
agent = HotelRecommendationAgent()
# Langkah 1: Agen merekomendasikan hotel menggunakan strategi "termurah"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Langkah 2: Agen merenungkan pilihan dan menyesuaikan strategi jika perlu
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Langkah 3: Agen merekomendasikan lagi, kali ini menggunakan strategi yang telah disesuaikan
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Kunci di sini adalah kemampuan agen untuk:
Ini adalah bentuk sederhana metakognisi di mana sistem mampu menyesuaikan proses penalaran berdasarkan umpan balik internal.
Metakognisi adalah alat yang kuat yang dapat secara signifikan meningkatkan kemampuan agen AI. Dengan menggabungkan proses metakognitif, Anda dapat merancang agen yang lebih cerdas, adaptif, dan efisien. Gunakan sumber daya tambahan untuk lebih mengeksplorasi dunia metakognisi yang menarik dalam agen AI.
Bergabunglah dengan Microsoft Foundry Discord untuk bertemu dengan pembelajar lain, menghadiri jam kantor dan mendapatkan jawaban atas pertanyaan AI Agents Anda.
Penafian: Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI Co-op Translator. Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.