(Klik imej di atas untuk menonton video pelajaran ini)
Metakognisi dalam Ejen AI
Selamat datang ke pelajaran mengenai metakognisi dalam ejen AI! Bab ini direka untuk pemula yang ingin tahu bagaimana ejen AI boleh memikirkan proses pemikiran mereka sendiri. Pada akhir pelajaran ini, anda akan memahami konsep utama dan dilengkapi dengan contoh praktikal untuk menerapkan metakognisi dalam reka bentuk ejen AI.
Selepas menamatkan pelajaran ini, anda akan dapat:
Metakognisi merujuk kepada proses kognitif tahap tinggi yang melibatkan memikirkan tentang pemikiran sendiri. Bagi ejen AI, ini bermakna mereka mampu menilai dan menyesuaikan tindakan mereka berdasarkan kesedaran diri dan pengalaman lalu. Metakognisi, atau “berfikir tentang berfikir,” adalah konsep penting dalam pembangunan sistem AI agentik. Ia melibatkan sistem AI yang menyedari proses dalaman mereka sendiri dan mampu memantau, mengawal, dan menyesuaikan tingkah laku mereka mengikut keadaan. Sama seperti kita apabila kita membaca keadaan sekeliling atau melihat masalah. Kesedaran diri ini boleh membantu sistem AI membuat keputusan yang lebih baik, mengenal pasti kesilapan, dan meningkatkan prestasi mereka dari masa ke masa — sekali lagi berkaitan dengan ujian Turing dan perdebatan sama ada AI akan mengambil alih.
Dalam konteks sistem AI agentik, metakognisi boleh membantu mengatasi beberapa cabaran, seperti:
Metakognisi, atau “berfikir tentang berfikir,” adalah proses kognitif tahap tinggi yang melibatkan kesedaran diri dan pengawalan kendiri ke atas proses kognitif seseorang. Dalam bidang AI, metakognisi membolehkan ejen menilai dan menyesuaikan strategi serta tindakan mereka, menyebabkan keupayaan menyelesaikan masalah dan membuat keputusan yang lebih baik. Dengan memahami metakognisi, anda boleh mereka bentuk ejen AI yang bukan sahaja lebih bijak tetapi juga lebih mudah menyesuaikan diri dan cekap. Dalam metakognisi sebenar, anda akan melihat AI secara eksplisit berfikir tentang proses pemikirannya sendiri.
Contoh: “Saya mengutamakan penerbangan yang lebih murah kerana… Saya mungkin terlepas penerbangan terus, jadi saya akan semak semula.”. Menjejaki bagaimana atau mengapa ia memilih laluan tertentu.
Metakognisi memainkan peranan penting dalam reka bentuk ejen AI atas beberapa sebab:

Sebelum meneliti proses metakognitif, penting untuk memahami komponen asas ejen AI. Ejen AI biasanya terdiri daripada:
Komponen-komponen ini bekerjasama untuk mewujudkan “unit kepakaran” yang boleh melaksanakan tugasan tertentu.
Contoh: Anggapkan ejen pelancongan, perkhidmatan ejen yang bukan sahaja merancang percutian anda tetapi juga menyesuaikan jalannya berdasarkan data masa nyata dan pengalaman perjalanan pelanggan sebelum ini.
Bayangkan anda mereka bentuk perkhidmatan ejen pelancongan yang dikuasakan oleh AI. Ejen ini, “Ejen Pelancongan,” membantu pengguna merancang percutian mereka. Untuk memasukkan metakognisi, Ejen Pelancongan perlu menilai dan menyesuaikan tindakannya berdasarkan kesedaran diri dan pengalaman lalu. Berikut bagaimana metakognisi boleh berperanan:
Tugasan semasa ialah membantu pengguna merancang perjalanan ke Paris.
Ejen Pelancongan menggunakan metakognisi untuk menilai prestasi dan belajar dari pengalaman lalu. Contohnya:
Berikut adalah contoh ringkas kod Ejen Pelancongan yang menggabungkan 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 tempat menarik berdasarkan keutamaan
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)
# Menganalisis maklum balas dan melaraskan cadangan 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, Ejen Pelancongan boleh menyediakan cadangan perjalanan yang lebih diperibadikan dan tepat, meningkatkan pengalaman pengguna secara keseluruhan.
Perancangan ialah komponen penting dalam tingkah laku ejen AI. Ia melibatkan merangka langkah-langkah yang diperlukan untuk mencapai matlamat, mengambil kira keadaan semasa, sumber dan halangan yang mungkin.
Contoh: Berikut adalah langkah yang perlu diambil oleh Ejen Pelancongan untuk membantu pengguna merancang perjalanan dengan berkesan:
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 tempahan
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)
Mari kita mulakan dengan memahami perbezaan antara Alat RAG dan Muatan Konteks Pratetap

RAG menggabungkan sistem pengambilan dengan model generatif. Apabila suatu pertanyaan dibuat, sistem pengambilan mendapatkan dokumen atau data yang relevan dari sumber luaran, dan maklumat yang diperoleh ini digunakan untuk menambah input kepada model generatif. Ini membantu model menghasilkan jawapan yang lebih tepat dan relevan dengan konteks.
Dalam sistem RAG, ejen mengambil maklumat yang relevan dari pangkalan ilmu dan menggunakannya untuk menghasilkan respons atau tindakan yang sesuai.
Pendekatan RAG Pembetulan memberi tumpuan kepada menggunakan teknik RAG untuk membetulkan kesilapan dan meningkatkan ketepatan ejen AI. Ini melibatkan:
Pertimbangkan ejen carian yang mengambil maklumat dari web untuk menjawab pertanyaan pengguna. Pendekatan RAG Pembetulan mungkin melibatkan:
RAG Pembetulan (Penjanaan Dipertingkatkan Pengambilan) meningkatkan kebolehan AI untuk mengambil dan menjana maklumat sambil membetulkan sebarang ketidaktepatan. Mari lihat bagaimana Ejen Pelancongan boleh menggunakan pendekatan RAG Pembetulan untuk menyediakan cadangan perjalanan yang lebih tepat 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 adalah contoh kod Python yang dipermudahkan yang menggabungkan pendekatan RAG Pembetulan dalam Ejen Pelancongan:
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)
Memuat Konteks Pendahuluan melibatkan memuatkan konteks atau maklumat latar belakang yang berkaitan ke dalam model sebelum memproses pertanyaan. Ini bermakna model mempunyai akses kepada maklumat ini dari awal, yang boleh membantunya menjana tindak balas yang lebih bermaklumat tanpa perlu mendapatkan data tambahan semasa proses tersebut.
Berikut adalah contoh ringkas bagaimana pemuatan konteks pendahuluan mungkin kelihatan untuk aplikasi ejen perjalanan dalam Python:
class TravelAgent:
def __init__(self):
# Muat naik destinasi popular dan maklumatnya terlebih dahulu
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 maklumat destinasi dari konteks yang telah dimuat naik
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 (kaedah __init__): Kelas TravelAgent memuat terlebih dahulu sebuah kamus yang mengandungi maklumat tentang destinasi popular seperti Paris, Tokyo, New York, dan Sydney. Kamus ini merangkumi butiran seperti negara, mata wang, bahasa, dan tarikan utama untuk setiap destinasi.
Mengambil Maklumat (kaedah get_destination_info): Apabila pengguna bertanya tentang destinasi tertentu, kaedah get_destination_info mengambil maklumat yang berkaitan dari kamus konteks yang telah dimuat terlebih dahulu.
Dengan memuat terlebih dahulu konteks, aplikasi ejen perjalanan boleh memberi respons dengan cepat kepada pertanyaan pengguna tanpa perlu mendapatkan maklumat ini dari sumber luaran secara masa nyata. Ini menjadikan aplikasi lebih cekap dan responsif.
Memulakan pelan dengan matlamat melibatkan bermula dengan objektif atau hasil sasaran yang jelas. Dengan mendefinisikan matlamat ini dari awal, model boleh menggunakannya sebagai prinsip panduan sepanjang proses berulang. Ini membantu memastikan setiap pengulangan semakin menghampiri pencapaian hasil yang diinginkan, menjadikan proses lebih cekap dan fokus.
Berikut adalah contoh bagaimana anda boleh memulakan pelan perjalanan dengan matlamat sebelum mengulangi untuk ejen perjalanan dalam Python:
Seorang ejen perjalanan ingin merancang percutian yang disesuaikan untuk seorang pelanggan. Matlamatnya ialah untuk mencipta jadual perjalanan yang memaksimumkan kepuasan pelanggan berdasarkan keutamaan dan bajet mereka.
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 (kaedah __init__): Kelas TravelAgent diinisialisasi dengan senarai destinasi berpotensi, setiap satu mempunyai atribut seperti nama, kos, dan jenis aktiviti.
Memulakan Pelan (kaedah bootstrap_plan): Kaedah ini mencipta pelan perjalanan awal berdasarkan keutamaan dan bajet pelanggan. Ia mengulangi senarai destinasi dan menambahkannya ke pelan jika ia sesuai dengan keutamaan pelanggan dan muat dalam bajet.
Mencocok Keutamaan (kaedah match_preferences): Kaedah ini memeriksa jika destinasi sesuai dengan keutamaan pelanggan.
Mengulangi Pelan (kaedah iterate_plan): Kaedah ini memperbaiki pelan awal dengan cuba menggantikan setiap destinasi dalam pelan dengan pilihan yang lebih sesuai, mengambil kira keutamaan pelanggan dan had bajet.
Mengira Kos (kaedah calculate_cost): Kaedah ini mengira jumlah kos pelan semasa, termasuk destinasi baru yang berpotensi.
Dengan memulakan pelan dengan matlamat yang jelas (contohnya, memaksimumkan kepuasan pelanggan) dan mengulangi untuk memperbaiki pelan, ejen perjalanan boleh menghasilkan jadual perjalanan yang disesuaikan dan dioptimumkan untuk pelanggan. Pendekatan ini memastikan pelan perjalanan selaras dengan keutamaan dan bajet pelanggan dari awal dan terus bertambah baik dengan setiap pengulangan.
Model Bahasa Besar (LLM) boleh digunakan untuk penstoran semula dan pengskoran dengan menilai kepentingan dan kualiti dokumen yang diperoleh atau tindak balas yang dijana. Berikut adalah cara ia berfungsi:
Pemulihan: Langkah pemulihan awal mengambil sekumpulan dokumen calon atau tindak balas berdasarkan pertanyaan.
Penstoran Semula: LLM menilai calon-calon ini dan mengubah susunannya berdasarkan kepentingan dan kualiti. Langkah ini memastikan maklumat paling relevan dan bermutu tinggi dipaparkan terlebih dahulu.
Pengskoran: LLM memberikan skor kepada setiap calon, yang mencerminkan kepentingan dan kualiti mereka. Ini membantu memilih tindak balas atau dokumen terbaik untuk pengguna.
Dengan memanfaatkan LLM untuk penstoran semula dan pengskoran, sistem boleh memberikan maklumat yang lebih tepat dan relevan secara kontekstual, memperbaiki pengalaman pengguna secara keseluruhan.
Berikut adalah contoh bagaimana seorang ejen perjalanan mungkin menggunakan Model Bahasa Besar (LLM) untuk penstoran semula dan pengskoran destinasi perjalanan berdasarkan keutamaan pengguna dalam Python:
Seorang ejen perjalanan ingin mencadangkan destinasi perjalanan terbaik kepada pelanggan berdasarkan keutamaan mereka. LLM akan membantu menstoran semula dan mengskor destinasi untuk memastikan pilihan paling relevan dipaparkan.
Berikut adalah cara anda boleh mengemas kini contoh sebelumnya untuk menggunakan Perkhidmatan Azure OpenAI:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Jana arahan untuk Azure OpenAI
prompt = self.generate_prompt(preferences)
# Tetapkan pengepala dan muatan 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 destinasi yang telah disusun semula dan diberikan skor
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Ekstrak dan kembalikan cadangan
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 senarai destinasi perjalanan berpotensi, setiap satu mempunyai atribut seperti nama dan keterangan.
Mendapatkan Cadangan (kaedah get_recommendations): Kaedah ini menghasilkan arahan untuk perkhidmatan Azure OpenAI berdasarkan keutamaan pengguna dan membuat permintaan HTTP POST kepada API Azure OpenAI untuk mendapatkan destinasi yang telah distrukturkan semula dan diberi skor.
Menjana Arahan (kaedah generate_prompt): Kaedah ini membina arahan untuk Azure OpenAI, termasuk keutamaan pengguna dan senarai destinasi. Arahan ini membimbing model untuk menstoran semula dan mengskor destinasi berdasarkan keutamaan yang diberikan.
Panggilan API: Perpustakaan requests digunakan untuk membuat permintaan HTTP POST ke titik akhir API Azure OpenAI. Respons mengandungi destinasi yang sudah distrukturkan semula dan diberi skor.
Contoh Penggunaan: Ejen perjalanan mengumpul keutamaan pengguna (contohnya, minat dalam pelancongan dan budaya pelbagai) dan menggunakan perkhidmatan Azure OpenAI untuk mendapatkan cadangan destinasi perjalanan yang telah distrukturkan semula dan diberi skor.
Pastikan untuk menggantikan your_azure_openai_api_key dengan kunci API Azure OpenAI sebenar anda dan https://your-endpoint.com/... dengan URL titik akhir sebenar untuk deployment Azure OpenAI anda.
Dengan memanfaatkan LLM untuk penstoran semula dan pengskoran, ejen perjalanan boleh memberikan cadangan perjalanan yang lebih diperibadikan dan relevan kepada pelanggan, meningkatkan pengalaman keseluruhan mereka.
Penjanaan Beraugmen Pemulihan (RAG) boleh menjadi kedua-dua teknik prompt dan alat dalam pembangunan ejen AI. Memahami perbezaan antara kedua-duanya boleh membantu anda memanfaatkan RAG dengan lebih berkesan dalam projek anda.
Apa itu?
Bagaimana ia berfungsi:
Contoh dalam Ejen Perjalanan:
Apa itu?
Bagaimana ia berfungsi:
Contoh dalam Ejen Perjalanan:
| Aspek | Teknik Prompt | Alat |
|---|---|---|
| Manual vs Automatik | Perumusan prompt manual untuk setiap pertanyaan. | Proses automatik untuk pemulihan dan penjanaan. |
| Kawalan | Menawarkan kawalan lebih terhadap proses pemulihan. | Melancarkan dan mengautomasikan pemulihan dan penjanaan. |
| Fleksibiliti | Membenarkan prompt yang disesuaikan berdasarkan keperluan spesifik. | Lebih cekap untuk pelaksanaan skala besar. |
| Kerumitan | Memerlukan penyusunan dan penyelarasan prompt. | Lebih mudah disepadukan dalam seni bina ejen AI. |
Contoh Teknik Prompt:
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)
Menilai kepentingan adalah aspek penting dalam prestasi ejen AI. Ia memastikan maklumat yang diperoleh dan dijana oleh ejen adalah sesuai, tepat, dan berguna kepada pengguna. Mari kita terokai cara menilai kepentingan dalam ejen AI, termasuk contoh praktikal 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] # Pulangkan 10 item paling relevan
Contoh:
def process_query(query):
# Gunakan NLP untuk mendapatkan maklumat penting daripada 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 adalah contoh praktikal bagaimana Ejen Perjalanan boleh menilai kepentingan cadangan 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] # Pulangkan 10 item teratas yang berkaitan
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 mentafsir tujuan atau matlamat di sebalik pertanyaan pengguna untuk mengambil dan menjana maklumat yang paling relevan dan berguna. Pendekatan ini melangkaui sekadar memadankan kata kunci dan memfokuskan pada memahami keperluan sebenar dan konteks pengguna.
Mari kita ambil contoh Ejen Perjalanan untuk melihat bagaimana mencari dengan niat boleh dilaksanakan.
Mengumpul Keutamaan 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"
Kesedaran Konteks
def analyze_context(query, user_history):
# Gabungkan carian semasa dengan sejarah pengguna untuk memahami konteks
context = {
"current_query": query,
"user_history": user_history
}
return context
Cari dan Personalisasi Keputusan
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 logik carian untuk niat maklumat
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Contoh logik carian untuk niat navigasi
results = search_web(query)
return results
def search_transaction(query, preferences):
# Contoh logik carian untuk niat transaksi
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Contoh logik penyesuaian peribadi
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Pulangkan 10 keputusan peribadi teratas
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)
Ejen menjana kod menggunakan model AI untuk menulis dan menjalankan kod, menyelesaikan masalah kompleks dan mengautomasikan tugas.
Ejen menjana kod menggunakan model AI generatif untuk menulis dan menjalankan kod. Ejen ini boleh menyelesaikan masalah kompleks, mengautomasikan tugas, dan menyediakan pandangan berharga dengan menjana dan menjalankan kod dalam pelbagai bahasa pengaturcaraan.
Bayangkan anda mereka bentuk ejen menjana kod. Begini cara ia mungkin berfungsi:
Dalam contoh ini, kita akan mereka bentuk ejen menjana kod, Ejen Pelancongan, untuk membantu pengguna dalam merancang perjalanan mereka dengan menjana dan menjalankan kod. Ejen ini boleh mengendalikan tugas seperti mendapatkan pilihan perjalanan, menapis keputusan, dan menyusun jadual perjalanan menggunakan AI generatif.
Mengumpul Keutamaan Pengguna
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Menjana Kod untuk Mendapatkan Data
def generate_code_to_fetch_data(preferences):
# Contoh: Jana kod untuk mencari penerbangan berdasarkan keutamaan 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: Jana kod 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 Kod Dijana
def execute_code(code):
# Laksanakan kod yang dijana 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)
Menjana Jadual Perjalanan
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)
Melaras Berdasarkan Maklum Balas
def adjust_based_on_feedback(feedback, preferences):
# Laraskan pilihan berdasarkan maklum balas 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)
# Jelajah semula dan laksanakan kod dengan pilihan yang dikemaskini
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 jadual memang boleh meningkatkan proses penjanaan pertanyaan dengan memanfaatkan kesedaran persekitaran dan penalaran.
Berikut adalah contoh bagaimana ini boleh dilakukan:
Berikut adalah contoh kod Python yang dikemaskini yang menggabungkan konsep ini:
def adjust_based_on_feedback(feedback, preferences, schema):
# Laraskan keutamaan berdasarkan maklum balas pengguna
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Penalaran berdasarkan skema untuk melaraskan keutamaan lain yang berkaitan
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):
# Logik khusus untuk melaraskan keutamaan berdasarkan skema dan maklum balas
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):
# Jana kod untuk mendapatkan data penerbangan berdasarkan keutamaan terkini
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Jana kod untuk mendapatkan data hotel berdasarkan keutamaan terkini
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Simulasikan pelaksanaan kod dan pulangkan data tiruan
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Jana jadual perjalanan berdasarkan penerbangan, hotel, dan tarikan
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 semula dan laksanakan kod dengan keutamaan terkini
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)
skema mentakrifkan cara keutamaan perlu dilaras berdasarkan maklum balas. Ia termasuk medan seperti favorites dan avoid, dengan pelarasan yang sepadan.adjust_based_on_feedback method): Kaedah ini melaras keutamaan berdasarkan maklum balas pengguna dan skema.adjust_based_on_environment method): Kaedah ini menyesuaikan pelarasan berdasarkan skema dan maklum balas.Dengan menjadikan sistem sedar persekitaran dan menalar berdasarkan skema, ia boleh menjana pertanyaan yang lebih tepat dan relevan, membawa kepada cadangan perjalanan yang lebih baik dan pengalaman pengguna yang lebih diperibadikan.
SQL (Structured Query Language) ialah alat berkuasa untuk berinteraksi dengan pangkalan data. Apabila digunakan sebagai sebahagian daripada pendekatan Penjanaan Tambahan Berdasarkan Pencarian (RAG), SQL boleh mendapatkan data yang relevan dari pangkalan data untuk memaklumkan dan menjana tindak balas atau tindakan dalam ejen AI. Mari kita teroka bagaimana SQL boleh digunakan sebagai teknik RAG dalam konteks Ejen Pelancongan.
Contoh: Ejen analisis data:
Mengumpul Keutamaan Pengguna
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Menjana Pertanyaan 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 Pertanyaan 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
Menjana Cadangan
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)
Pertanyaan Penerbangan
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Pertanyaan Hotel
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Pertanyaan Tarikan
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Dengan memanfaatkan SQL sebagai sebahagian teknik Penjanaan Tambahan Berdasarkan Pencarian (RAG), ejen AI seperti Ejen Pelancongan boleh secara dinamik mendapatkan dan menggunakan data relevan untuk menyediakan cadangan yang tepat dan diperibadikan.
Jadi untuk menunjukkan pelaksanaan metakognisi, mari kita cipta ejen mudah yang merenung proses pengambilan keputusannya semasa menyelesaikan masalah. Untuk contoh ini, kita akan bina sistem di mana ejen cuba mengoptimumkan pilihan hotel, tetapi kemudian menilai penalarannya sendiri dan melaraskan strateginya apabila membuat kesilapan atau pilihan yang tidak optimum.
Kita akan simulasi ini menggunakan contoh asas di mana ejen memilih hotel berdasarkan gabungan harga dan kualiti, tetapi ia akan “merenung” keputusannya dan melaras sewajarnya.
Berikut adalah contoh:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Menyimpan hotel yang dipilih sebelum ini
self.corrected_choices = [] # Menyimpan pilihan yang telah diperbetulkan
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 anggap kita mempunyai maklum balas pengguna yang memberitahu sama ada pilihan terakhir adalah baik atau tidak
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Laraskan 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"
# Mensimulasikan senarai hotel (harga dan kualiti)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Membuat agen
agent = HotelRecommendationAgent()
# Langkah 1: Agen mencadangkan hotel menggunakan strategi "paling murah"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Langkah 2: Agen memikirkan pilihan dan melaraskan strategi jika perlu
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Langkah 3: Agen mencadangkan sekali lagi, kali ini menggunakan strategi yang telah dilaraskan
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Perkara penting di sini ialah keupayaan ejen untuk:
Ini ialah bentuk mudah metakognisi di mana sistem mampu melaras proses penalarannya berdasarkan maklum balas dalaman.
Metakognisi ialah alat yang berkuasa yang boleh meningkatkan kebolehan ejen AI secara signifikan. Dengan menggabungkan proses metakognitif, anda boleh mereka bentuk ejen yang lebih pintar, mudah menyesuaikan diri, dan cekap. Gunakan sumber tambahan untuk meneroka lebih lanjut dunia menarik metakognisi dalam ejen AI.
Sertai Microsoft Foundry Discord untuk bertemu dengan pelajar lain, menghadiri waktu pejabat dan mendapatkan jawapan bagi soalan Ejen AI anda.
Penafian: Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.