(Klik imej di atas untuk menonton video pelajaran ini)
Metakognisi dalam Ejen AI
Selamat datang ke pelajaran tentang metakognisi dalam ejen AI! Bab ini direka untuk pemula yang ingin tahu bagaimana ejen AI boleh memikirkan tentang proses pemikiran mereka sendiri. Pada akhir pelajaran ini, anda akan memahami konsep utama dan dilengkapi dengan contoh praktikal untuk menerapkan metakognisi dalam rekabentuk ejen AI.
Selepas menyelesaikan pelajaran ini, anda akan dapat:
Metakognisi merujuk kepada proses kognitif aras-tinggi yang melibatkan berfikir tentang pemikiran sendiri. Bagi ejen AI, ini bermakna mampu menilai dan menyesuaikan tindakan mereka berdasarkan kesedaran diri dan pengalaman lalu. Metakognisi, atau “berfikir tentang berfikir,” adalah konsep penting dalam pembangunan sistem AI beragen. Ia melibatkan sistem AI yang sedar tentang proses dalaman mereka sendiri dan mampu memantau, mengawal, dan menyesuaikan tingkah laku mereka sewajarnya. Serupa seperti yang kita lakukan apabila kita membaca suasana atau melihat pada satu masalah. Kesedaran diri ini dapat membantu sistem AI membuat keputusan yang lebih baik, mengenal pasti kesilapan, dan meningkatkan prestasi mereka dari masa ke masa — sekali lagi merujuk kepada ujian Turing dan perdebatan sama ada AI akan mengambil alih.
Dalam konteks sistem AI beragen, metakognisi boleh membantu menangani beberapa cabaran, seperti:
Metakognisi, atau “berfikir tentang berfikir,” adalah proses kognitif aras-tinggi yang melibatkan kesedaran diri dan pengawalan diri terhadap proses kognitif seseorang. Dalam domain AI, metakognisi memberi kuasa kepada ejen untuk menilai dan menyesuaikan strategi dan tindakan mereka, membawa kepada peningkatan penyelesaian masalah dan kemampuan membuat keputusan. Dengan memahami metakognisi, anda boleh mereka ejen AI yang bukan sahaja lebih pintar tetapi juga lebih mudah menyesuaikan diri dan cekap. Dalam metakognisi sejati, anda akan melihat AI secara eksplisit berfikir tentang penaakulan sendiri.
Contoh: “Saya mengutamakan penerbangan yang lebih murah kerana… Saya mungkin terlepas penerbangan terus, jadi biar saya semak semula.”. Menjejak bagaimana atau mengapa ia memilih laluan tertentu.
Metakognisi memainkan peranan penting dalam rekabentuk ejen AI atas beberapa sebab:

Sebelum menyelami proses metakognitif, adalah penting untuk memahami komponen asas ejen AI. Satu ejen AI biasanya terdiri daripada:
Komponen-komponen ini bekerja bersama untuk mencipta “unit kepakaran” yang boleh melaksanakan tugasan tertentu.
Contoh: Pertimbangkan seorang ejen pelancongan, perkhidmatan ejen yang bukan sahaja merancang percutian anda tetapi juga menyesuaikan laluan berdasarkan data masa nyata dan pengalaman perjalanan pelanggan lalu.
Bayangkan anda sedang mereka 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:
Tugas semasa adalah membantu pengguna merancang perjalanan ke Paris.
Ejen Pelancongan menggunakan metakognisi untuk menilai prestasinya dan belajar daripada pengalaman lalu. Sebagai contoh:
Berikut contoh ringkas bagaimana kod Ejen Pelancongan mungkin kelihatan apabila memasukkan 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 tarikan berdasarkan pilihan
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 maklum balas dan laraskan cadangan masa hadapan
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 dapat memberikan cadangan perjalanan yang lebih peribadi dan tepat, meningkatkan pengalaman keseluruhan pengguna.
Perancangan adalah komponen kritikal tingkah laku ejen AI. Ia melibatkan merangka langkah-langkah yang diperlukan untuk mencapai sesuatu matlamat, mengambil kira keadaan semasa, sumber, dan halangan yang mungkin.
Contoh: Berikut langkah yang perlu diambil oleh Ejen Pelancongan untuk membantu pengguna merancang perjalanan mereka 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 mengejek
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 sekali mari kita mulakan dengan memahami perbezaan antara Alat RAG dan Pemuatan Konteks Awal

RAG menggabungkan sistem pengambilan dengan model generatif. Apabila satu pertanyaan dibuat, sistem pengambilan mengambil dokumen atau data yang relevan dari sumber luaran, dan maklumat yang diambil ini digunakan untuk memperkayakan input kepada model generatif. Ini membantu model menghasilkan respons yang lebih tepat dan sesuai konteks.
Dalam sistem RAG, ejen mendapatkan maklumat relevan dari pangkalan pengetahuan dan menggunakannya untuk menghasilkan respons atau tindakan yang sesuai.
Pendekatan RAG Korektif fokus pada penggunaan teknik RAG untuk membetulkan ralat dan meningkatkan ketepatan ejen AI. Ini melibatkan:
Pertimbangkan ejen carian yang mengambil maklumat dari web untuk menjawab pertanyaan pengguna. Pendekatan RAG Korektif mungkin melibatkan:
RAG Korektif (Retrieval-Augmented Generation) meningkatkan keupayaan AI untuk mengambil dan menghasilkan maklumat sambil membetulkan sebarang ketidaktepatan. Mari lihat bagaimana Ejen Pelancongan boleh menggunakan pendekatan RAG Korektif 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 contoh kod Python yang dipermudahkan yang memasukkan pendekatan RAG Korektif 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)
Pre-emptive Context Load involves loading relevant context or background information into the model before processing a query. This means the model has access to this information from the start, which can help it generate more informed responses without needing to retrieve additional data during the process.
Here’s a simplified example of how a pre-emptive context load might look for a travel agent application in Python:
class TravelAgent:
def __init__(self):
# Pramuat destinasi popular dan maklumatnya
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):
# Dapatkan maklumat destinasi daripada konteks yang telah dimuatkan terlebih dahulu
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"))
Initialization (__init__ method): The TravelAgent class pre-loads a dictionary containing information about popular destinations such as Paris, Tokyo, New York, and Sydney. This dictionary includes details like the country, currency, language, and major attractions for each destination.
Retrieving Information (get_destination_info method): When a user queries about a specific destination, the get_destination_info method fetches the relevant information from the pre-loaded context dictionary.
By pre-loading the context, the travel agent application can quickly respond to user queries without having to retrieve this information from an external source in real-time. This makes the application more efficient and responsive.
Bootstrapping a plan with a goal involves starting with a clear objective or target outcome in mind. By defining this goal upfront, the model can use it as a guiding principle throughout the iterative process. This helps ensure that each iteration moves closer to achieving the desired outcome, making the process more efficient and focused.
Here’s an example of how you might bootstrap a travel plan with a goal before iterating for a travel agent in Python:
A travel agent wants to plan a customized vacation for a client. The goal is to create a travel itinerary that maximizes the client’s satisfaction based on their preferences and budget.
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)
Initialization (__init__ method): The TravelAgent class is initialized with a list of potential destinations, each having attributes like name, cost, and activity type.
Bootstrapping the Plan (bootstrap_plan method): This method creates an initial travel plan based on the client’s preferences and budget. It iterates through the list of destinations and adds them to the plan if they match the client’s preferences and fit within the budget.
Matching Preferences (match_preferences method): This method checks if a destination matches the client’s preferences.
Iterating the Plan (iterate_plan method): This method refines the initial plan by trying to replace each destination in the plan with a better match, considering the client’s preferences and budget constraints.
Calculating Cost (calculate_cost method): This method calculates the total cost of the current plan, including a potential new destination.
By bootstrapping the plan with a clear goal (e.g., maximizing client satisfaction) and iterating to refine the plan, the travel agent can create a customized and optimized travel itinerary for the client. This approach ensures that the travel plan aligns with the client’s preferences and budget from the start and improves with each iteration.
Large Language Models (LLMs) can be used for re-ranking and scoring by evaluating the relevance and quality of retrieved documents or generated responses. Here’s how it works:
Retrieval: The initial retrieval step fetches a set of candidate documents or responses based on the query.
Re-ranking: The LLM evaluates these candidates and re-ranks them based on their relevance and quality. This step ensures that the most relevant and high-quality information is presented first.
Scoring: The LLM assigns scores to each candidate, reflecting their relevance and quality. This helps in selecting the best response or document for the user.
By leveraging LLMs for re-ranking and scoring, the system can provide more accurate and contextually relevant information, improving the overall user experience.
Here’s an example of how a travel agent might use a Large Language Model (LLM) for re-ranking and scoring travel destinations based on user preferences in Python:
A travel agent wants to recommend the best travel destinations to a client based on their preferences. The LLM will help re-rank and score the destinations to ensure the most relevant options are presented.
Here’s how you can update the previous example to use Azure OpenAI Services:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Jana prompt untuk Azure OpenAI
prompt = self.generate_prompt(preferences)
# Tentukan header 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 destinasi yang disusun semula dan dinilai
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)
Initialization: The TravelAgent class is initialized with a list of potential travel destinations, each having attributes like name and description.
Getting Recommendations (get_recommendations method): This method generates a prompt for the Azure OpenAI service based on the user’s preferences and makes an HTTP POST request to the Azure OpenAI API to get re-ranked and scored destinations.
Generating Prompt (generate_prompt method): This method constructs a prompt for the Azure OpenAI, including the user’s preferences and the list of destinations. The prompt guides the model to re-rank and score the destinations based on the provided preferences.
API Call: The requests library is used to make an HTTP POST request to the Azure OpenAI API endpoint. The response contains the re-ranked and scored destinations.
Example Usage: The travel agent collects user preferences (e.g., interest in sightseeing and diverse culture) and uses the Azure OpenAI service to get re-ranked and scored recommendations for travel destinations.
Make sure to replace your_azure_openai_api_key with your actual Azure OpenAI API key and https://your-endpoint.com/... with the actual endpoint URL of your Azure OpenAI deployment.
By leveraging the LLM for re-ranking and scoring, the travel agent can provide more personalized and relevant travel recommendations to clients, enhancing their overall experience.
Retrieval-Augmented Generation (RAG) can be both a prompting technique and a tool in the development of AI agents. Understanding the distinction between the two can help you leverage RAG more effectively in your projects.
Apakah ia?
Bagaimana ia berfungsi:
Contoh dalam Ejen Pelancongan:
Apakah ia?
Bagaimana ia berfungsi:
Contoh dalam Ejen Pelancongan:
| Aspect | Prompting Technique | Tool |
|---|---|---|
| Manual vs Automatic | Formulasi prompt secara manual untuk setiap pertanyaan. | Proses automatik untuk pengambilan dan penjanaan. |
| Control | Menawarkan lebih kawalan ke atas proses pengambilan. | Menyelaraskan dan mengautomasikan proses pengambilan dan penjanaan. |
| Flexibility | Membenarkan prompt yang disesuaikan berdasarkan keperluan tertentu. | Lebih cekap untuk implementasi skala besar. |
| Complexity | Memerlukan perumusan dan penyelarasan prompt. | Lebih mudah untuk diintegrasikan dalam seni bina ejen 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)
Evaluating relevancy is a crucial aspect of AI agent performance. It ensures that the information retrieved and generated by the agent is appropriate, accurate, and useful to the user. Let’s explore how to evaluate relevancy in AI agents, including practical examples and techniques.
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] # Kembalikan 10 item paling relevan
Contoh:
def process_query(query):
# Gunakan NLP untuk mengekstrak maklumat utama 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
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] # Kembalikan 10 item paling relevan
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)
Searching with intent involves understanding and interpreting the underlying purpose or goal behind a user’s query to retrieve and generate the most relevant and useful information. This approach goes beyond simply matching keywords and focuses on grasping the user’s actual needs and context.
Mari ambil Travel Agent sebagai contoh untuk melihat bagaimana carian dengan niat boleh dilaksanakan.
Mengumpulkan 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"
def analyze_context(query, user_history):
# Gabungkan pertanyaan semasa dengan sejarah pengguna untuk memahami konteks
context = {
"current_query": query,
"user_history": user_history
}
return context
Cari dan Peribadikan 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] # Kembalikan 10 keputusan teratas yang diperibadikan
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 penjana kod menggunakan model AI untuk menulis dan menjalankan kod, menyelesaikan masalah kompleks dan mengautomasikan tugas.
Ejen penjana kod menggunakan model AI generatif untuk menulis dan menjalankan kod. Ejen-ejen ini boleh menyelesaikan masalah kompleks, mengautomasikan tugas, dan memberikan pandangan yang berharga dengan menjana dan menjalankan kod dalam pelbagai bahasa pengaturcaraan.
Bayangkan anda mereka ejen penjana kod. Begini cara ia mungkin berfungsi:
Dalam contoh ini, kita akan mereka sebuah ejen penjana kod, Ejen Perjalanan, untuk membantu pengguna 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 Mengambil 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 yang Dijana
def execute_code(code):
# Jalankan kod 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)
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)
Melaraskan Berdasarkan Maklum Balas
def adjust_based_on_feedback(feedback, preferences):
# Laraskan keutamaan 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)
# Jana semula dan jalankan kod dengan keutamaan yang dikemas kini
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 dikemas kini yang menggabungkan konsep-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 tersuai 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):
# Hasilkan kod untuk mendapatkan data penerbangan berdasarkan keutamaan yang dikemas kini
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Hasilkan kod untuk mendapatkan data hotel berdasarkan keutamaan yang dikemas kini
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Mensimulasikan pelaksanaan kod dan mengembalikan data tiruan
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Hasilkan 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 jalankan kod dengan keutamaan yang dikemas kini
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 mentakrifkan bagaimana keutamaan harus disesuaikan berdasarkan maklum balas. Ia merangkumi medan seperti favorites dan avoid, dengan penyesuaian yang sepadan.adjust_based_on_feedback method): Kaedah ini melaraskan keutamaan berdasarkan maklum balas pengguna dan skema.adjust_based_on_environment method): Kaedah ini menyesuaikan penyesuaian berdasarkan skema dan maklum balas.Dengan menjadikan sistem peka kepada persekitaran dan melakukan penalaran berdasarkan skema, ia boleh menjana pertanyaan yang lebih tepat dan relevan, yang membawa kepada cadangan perjalanan yang lebih baik dan pengalaman pengguna yang lebih diperibadikan.
SQL (Structured Query Language) adalah alat yang berkuasa untuk berinteraksi dengan pangkalan data. Apabila digunakan sebagai sebahagian daripada pendekatan Retrieval-Augmented Generation (RAG), SQL boleh mengambil data yang relevan daripada pangkalan data untuk memaklumkan dan menjana respons atau tindakan dalam ejen AI. Mari kita terokai bagaimana SQL boleh digunakan sebagai teknik RAG dalam konteks Ejen Perjalanan.
Contoh: Seorang 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 daripada teknik Retrieval-Augmented Generation (RAG), ejen AI seperti Ejen Perjalanan dapat secara dinamik mengambil dan menggunakan data yang relevan untuk memberikan cadangan yang tepat dan diperibadikan.
Untuk menunjukkan pelaksanaan metakognisi, mari kita cipta sebuah ejen ringkas yang merenungkan proses pembuatan keputusannya semasa menyelesaikan sesuatu masalah. Untuk contoh ini, kita akan bina sistem di mana ejen cuba mengoptimumkan pemilihan hotel, tetapi kemudian menilai proses pemikirannya sendiri dan melaraskan strateginya apabila ia membuat kesilapan atau pilihan yang tidak optimum.
Kita akan mensimulasikannya menggunakan contoh asas di mana ejen memilih hotel berdasarkan gabungan harga dan kualiti, tetapi ia akan “merenung” ke atas keputusannya dan melaraskan sewajarnya.
Berikut adalah contoh:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Menyimpan hotel yang dipilih sebelum ini
self.corrected_choices = [] # Menyimpan pilihan yang 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]
# Anggap kita mempunyai maklum balas pengguna yang memberitahu sama ada pilihan terakhir bagus 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}
]
# Cipta ejen
agent = HotelRecommendationAgent()
# Langkah 1: Ejen mencadangkan sebuah hotel menggunakan strategi "paling murah"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Langkah 2: Ejen menilai semula pilihan dan melaraskan strategi jika perlu
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Langkah 3: Ejen mencadangkan semula, kali ini menggunakan strategi yang dilaraskan
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Kunci di sini ialah keupayaan ejen untuk:
Ini adalah bentuk ringkas metakognisi di mana sistem mampu melaraskan proses penalarannya berdasarkan maklum balas dalaman.
Metakognisi adalah alat yang berkuasa yang boleh meningkatkan keupayaan ejen AI dengan ketara. Dengan memasukkan proses metakognitif, anda boleh mereka ejen yang lebih pintar, mudah menyesuaikan diri, dan cekap. Gunakan sumber tambahan untuk terus meneroka dunia metakognisi yang menarik dalam ejen AI.
Sertai the Microsoft Foundry Discord untuk bertemu dengan pelajar lain, menghadiri sesi waktu pejabat dan mendapatkan jawapan kepada soalan Ejen AI anda.
ELEMENTS AI Agents in Production
Penafian: Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co‑op Translator (https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi ralat atau ketidaktepatan. Dokumen asal dalam bahasa ibundanya hendaklah dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, disyorkan terjemahan profesional oleh penterjemah manusia. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.