(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτής της ενότητας)
Μεταγνώση σε Πράκτορες Τεχνητής Νοημοσύνης
Καλώς ήρθατε στο μάθημα σχετικά με τη μεταγνώση σε πράκτορες τεχνητής νοημοσύνης! Αυτό το κεφάλαιο έχει σχεδιαστεί για αρχάριους που ενδιαφέρονται για το πώς οι πράκτορες ΤΝ μπορούν να σκέφτονται για τις δικές τους διαδικασίες σκέψης. Μέχρι το τέλος αυτού του μαθήματος, θα κατανοείτε βασικές έννοιες και θα είστε εξοπλισμένοι με πρακτικά παραδείγματα για να εφαρμόσετε τη μεταγνώση στο σχεδιασμό πρακτόρων ΤΝ.
Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να:
Η μεταγνώση αναφέρεται στις ανώτερες γνωστικές διαδικασίες που περιλαμβάνουν το να σκέφτεται κανείς για τη δική του σκέψη. Για τους πράκτορες ΤΝ, αυτό σημαίνει την ικανότητα να αξιολογούν και να προσαρμόζουν τις ενέργειές τους βάσει αυτογνωσίας και προηγούμενων εμπειριών. Η μεταγνώση, ή “σκέψη για τη σκέψη,” είναι μια σημαντική έννοια στην ανάπτυξη συστημάτων πρακτόρων τεχνητής νοημοσύνης. Περιλαμβάνει τα συστήματα ΤΝ που είναι ενήμερα για τις εσωτερικές διαδικασίες τους και μπορούν να παρακολουθούν, να ρυθμίζουν και να προσαρμόζουν τη συμπεριφορά τους ανάλογα. Όπως κάνουμε όταν διαβάζουμε τον χώρο ή εξετάζουμε ένα πρόβλημα. Αυτή η αυτογνωσία μπορεί να βοηθήσει τα συστήματα ΤΝ να λαμβάνουν καλύτερες αποφάσεις, να εντοπίζουν λάθη και να βελτιώνουν την απόδοσή τους με την πάροδο του χρόνου - επιστρέφοντας ξανά στη δοκιμασία Turing και τη συζήτηση για το αν η ΤΝ θα κυριαρχήσει.
Στο πλαίσιο των συστημάτων πρακτόρων ΤΝ, η μεταγνώση μπορεί να βοηθήσει στην αντιμετώπιση αρκετών προκλήσεων, όπως:
Η μεταγνώση, ή “σκέψη για τη σκέψη,” είναι μια γνωστική διαδικασία ανώτερου επιπέδου που περιλαμβάνει αυτογνωσία και αυτορρύθμιση των γνωστικών διαδικασιών. Στο πεδίο της ΤΝ, η μεταγνώση δίνει τη δυνατότητα στους πράκτορες να αξιολογούν και να προσαρμόζουν τις στρατηγικές και τις ενέργειές τους, οδηγώντας σε βελτιωμένες ικανότητες επίλυσης προβλημάτων και λήψης αποφάσεων. Με την κατανόηση της μεταγνώσης, μπορείτε να σχεδιάσετε πράκτορες ΤΝ που είναι όχι μόνο πιο έξυπνοι αλλά και πιο προσαρμοστικοί και αποδοτικοί. Στην αληθινή μεταγνώση, θα βλέπατε την ΤΝ να συλλογίζεται ρητά για τη δική της λογική.
Παράδειγμα: «Προτεραιοποίησα τα φθηνότερα αεροπορικά γιατί… ίσως χάνω απευθείας πτήσεις, οπότε ας κάνω ξανά έλεγχο.» Παρακολουθεί πώς ή γιατί επέλεξε μια συγκεκριμένη διαδρομή.
Η μεταγνώση παίζει κρίσιμο ρόλο στο σχεδιασμό πρακτόρων ΤΝ για αρκετούς λόγους:

Πριν εισέλθουμε σε μεταγνωστικές διεργασίες, είναι σημαντικό να κατανοήσουμε τις βασικές συνιστώσες ενός πράκτορα ΤΝ. Ένας πράκτορας ΤΝ συνήθως αποτελείται από:
Αυτές οι συνιστώσες συνεργάζονται για να δημιουργήσουν μια “μονάδα εμπειρογνωμοσύνης” που μπορεί να εκτελεί συγκεκριμένες εργασίες.
Παράδειγμα: Σκεφτείτε έναν ταξιδιωτικό πράκτορα, υπηρεσίες πρακτόρων που όχι μόνο προγραμματίζουν τις διακοπές σας αλλά και προσαρμόζουν τη διαδρομή βάσει πραγματικών δεδομένων και προηγούμενων εμπειριών πελατών.
Φανταστείτε ότι σχεδιάζετε μια υπηρεσία ταξιδιωτικού πράκτορα με τεχνητή νοημοσύνη. Αυτός ο πράκτορας, “Ταξιδιωτικός Πράκτορας,” βοηθά τους χρήστες στον προγραμματισμό των διακοπών τους. Για να ενσωματώσετε τη μεταγνώση, ο Ταξιδιωτικός Πράκτορας πρέπει να αξιολογεί και να προσαρμόζει τις ενέργειές του βάσει αυτογνωσίας και προηγούμενων εμπειριών. Δείτε πώς η μεταγνώση μπορεί να παίξει ρόλο:
Η τρέχουσα εργασία είναι να βοηθήσει έναν χρήστη να προγραμματίσει ένα ταξίδι στο Παρίσι.
Ο Ταξιδιωτικός Πράκτορας χρησιμοποιεί τη μεταγνώση για να αξιολογήσει τις επιδόσεις του και να μάθει από προηγούμενες εμπειρίες. Για παράδειγμα:
Εδώ είναι ένα απλοποιημένο παράδειγμα κώδικα που ενσωματώνει τη μεταγνώση στον Ταξιδιωτικό Πράκτορα:
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)
# Παράδειγμα χρήσης
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)
Ενσωματώνοντας τη μεταγνώση, ο Ταξιδιωτικός Πράκτορας μπορεί να παρέχει πιο προσωποποιημένες και ακριβείς ταξιδιωτικές προτάσεις, βελτιώνοντας τη συνολική εμπειρία χρήστη.
Ο προγραμματισμός είναι μια κρίσιμη συνιστώσα της συμπεριφοράς ενός πράκτορα ΤΝ. Περιλαμβάνει το σχεδιασμό των βημάτων που απαιτούνται για την επίτευξη ενός στόχου, λαμβάνοντας υπόψη την τρέχουσα κατάσταση, τους πόρους και πιθανά εμπόδια.
Παράδειγμα: Ακολουθούν τα βήματα που πρέπει να ακολουθήσει ο Ταξιδιωτικός Πράκτορας για να βοηθήσει αποτελεσματικά έναν χρήστη στον προγραμματισμό του ταξιδιού του:
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)
# Παράδειγμα χρήσης μέσα σε ένα αίτημα 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)
Αρχικά, ας ξεκινήσουμε κατανοώντας τη διαφορά μεταξύ Εργαλείου RAG και Προληπτικού Φορτώματος Πλαισίου

Το RAG συνδυάζει ένα σύστημα ανάκτησης με ένα γεννητικό μοντέλο. Όταν γίνεται ένα ερώτημα, το σύστημα ανάκτησης αντλεί σχετικά έγγραφα ή δεδομένα από εξωτερική πηγή και αυτή η ανακτημένη πληροφορία χρησιμοποιείται για την ενίσχυση της εισόδου στο γεννητικό μοντέλο. Αυτό βοηθά το μοντέλο να παράγει πιο ακριβείς και σχετικές απαντήσεις.
Σε ένα σύστημα RAG, ο πράκτορας ανακτά σχετικές πληροφορίες από μια βάση γνώσης και τις χρησιμοποιεί για να δημιουργήσει κατάλληλες απαντήσεις ή ενέργειες.
Η προσέγγιση Διορθωτικού RAG εστιάζει στη χρήση τεχνικών RAG για τη διόρθωση λαθών και τη βελτίωση της ακρίβειας των πρακτόρων ΤΝ. Αυτό περιλαμβάνει:
Σκεφτείτε έναν πράκτορα αναζήτησης που αντλεί πληροφορίες από το διαδίκτυο για να απαντήσει σε ερωτήματα χρηστών. Η προσέγγιση Διορθωτικού RAG μπορεί να περιλαμβάνει:
Η Διορθωτική RAG (Retrieval-Augmented Generation) ενισχύει την ικανότητα της ΤΝ να ανακτά και να παράγει πληροφορίες διορθώνοντας τυχόν ανακρίβειες. Ας δούμε πώς ο Ταξιδιωτικός Πράκτορας μπορεί να χρησιμοποιήσει την προσέγγιση Διορθωτικού RAG για να παρέχει πιο ακριβείς και σχετικές ταξιδιωτικές προτάσεις.
Αυτό περιλαμβάνει:
Παράδειγμα:
preferences = {
"destination": "Paris",
"dates": "2025-04-01 to 2025-04-10",
"budget": "moderate",
"interests": ["museums", "cuisine"]
}
Παράδειγμα:
flights = search_flights(preferences)
hotels = search_hotels(preferences)
attractions = search_attractions(preferences)
Παράδειγμα:
itinerary = create_itinerary(flights, hotels, attractions)
print("Suggested Itinerary:", itinerary)
Παράδειγμα:
feedback = {
"liked": ["Louvre Museum"],
"disliked": ["Eiffel Tower (too crowded)"]
}
Παράδειγμα:
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
Παράδειγμα:
new_attractions = search_attractions(preferences)
new_itinerary = create_itinerary(flights, hotels, new_attractions)
print("Updated Itinerary:", new_itinerary)
Παράδειγμα:
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)
Εδώ είναι ένα απλοποιημένο παράδειγμα Python που ενσωματώνει την προσέγγιση Διορθωτικού RAG στον Ταξιδιωτικό Πράκτορα:
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
# Παράδειγμα χρήσης
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)
Η Προληπτική Φόρτωση Πλαισίου περιλαμβάνει τη φόρτωση σχετικού πλαισίου ή πληροφοριών υπόβαθρου στο μοντέλο πριν από την επεξεργασία ενός αιτήματος. Αυτό σημαίνει ότι το μοντέλο έχει πρόσβαση σε αυτές τις πληροφορίες από την αρχή, κάτι που μπορεί να το βοηθήσει να παράγει πιο ενημερωμένες απαντήσεις χωρίς να χρειάζεται να ανακτήσει επιπλέον δεδομένα κατά τη διάρκεια της διαδικασίας.
Εδώ είναι ένα απλοποιημένο παράδειγμα για το πώς μπορεί να μοιάζει μια προληπτική φόρτωση πλαισίου για μια εφαρμογή ταξιδιωτικού πράκτορα σε Python:
class TravelAgent:
def __init__(self):
# Προφορτώστε δημοφιλείς προορισμούς και τις πληροφορίες τους
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):
# Ανάκτηση πληροφοριών προορισμού από το προφορτωμένο πλαίσιο
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}."
# Παράδειγμα χρήσης
travel_agent = TravelAgent()
print(travel_agent.get_destination_info("Paris"))
print(travel_agent.get_destination_info("Tokyo"))
Αρχικοποίηση (__init__ μέθοδος): Η κλάση TravelAgent προφορτώνει ένα λεξικό που περιέχει πληροφορίες για δημοφιλείς προορισμούς όπως το Παρίσι, το Τόκιο, η Νέα Υόρκη και το Σίδνεϊ. Αυτό το λεξικό περιλαμβάνει λεπτομέρειες όπως η χώρα, το νόμισμα, η γλώσσα και τα κύρια αξιοθέατα για κάθε προορισμό.
Ανάκτηση Πληροφοριών (get_destination_info μέθοδος): Όταν ένας χρήστης κάνει ερώτηση για έναν συγκεκριμένο προορισμό, η μέθοδος get_destination_info αναζητεί τις σχετικές πληροφορίες από το προφορτωμένο λεξικό πλαισίου.
Με την προφόρτωση του πλαισίου, η εφαρμογή ταξιδιωτικού πράκτορα μπορεί να απαντά γρήγορα στα ερωτήματα των χρηστών χωρίς να χρειάζεται να ανακτήσει αυτές τις πληροφορίες από εξωτερική πηγή σε πραγματικό χρόνο. Αυτό κάνει την εφαρμογή πιο αποδοτική και ανταποκρινόμενη.
Η εκκίνηση ενός σχεδίου με έναν στόχο περιλαμβάνει την αρχική καθορισμένη επιδίωξη ή τον επιθυμητό αποτέλεσμα στο μυαλό. Με τον ορισμό αυτού του στόχου εκ των προτέρων, το μοντέλο μπορεί να τον χρησιμοποιήσει ως κατευθυντήρια αρχή καθ’ όλη τη διάρκεια της διαδικασίας επανάληψης. Αυτό βοηθά να εξασφαλιστεί ότι κάθε επανάληψη πλησιάζει στην επίτευξη του επιθυμητού αποτελέσματος, καθιστώντας τη διαδικασία πιο αποτελεσματική και εστιασμένη.
Εδώ είναι ένα παράδειγμα για το πώς μπορείτε να εκκινήσετε ένα ταξιδιωτικό σχέδιο με στόχο πριν την επανάληψη για έναν ταξιδιωτικό πράκτορα σε Python:
Ένας ταξιδιωτικός πράκτορας θέλει να προγραμματίσει μια εξατομικευμένη διακοπή για έναν πελάτη. Ο στόχος είναι να δημιουργηθεί ένα πρόγραμμα ταξιδιού που μεγιστοποιεί την ικανοποίηση του πελάτη βάσει των προτιμήσεων και του προϋπολογισμού του.
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']
# Παράδειγμα χρήσης
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)
Αρχικοποίηση (__init__ μέθοδος): Η κλάση TravelAgent αρχικοποιείται με μια λίστα πιθανών προορισμών, καθένας με χαρακτηριστικά όπως όνομα, κόστος και τύπος δραστηριότητας.
Εκκίνηση Σχεδίου (bootstrap_plan μέθοδος): Αυτή η μέθοδος δημιουργεί ένα αρχικό σχέδιο ταξιδιού βάσει των προτιμήσεων και του προϋπολογισμού του πελάτη. Διατρέχει τη λίστα προορισμών και προσθέτει αυτούς στο σχέδιο εάν ταιριάζουν με τις προτιμήσεις του πελάτη και είναι εντός προϋπολογισμού.
Ταιριάσματα Προτιμήσεων (match_preferences μέθοδος): Αυτή η μέθοδος ελέγχει εάν ένας προορισμός ταιριάζει με τις προτιμήσεις του πελάτη.
Επανάληψη Σχεδίου (iterate_plan μέθοδος): Αυτή η μέθοδος βελτιστοποιεί το αρχικό σχέδιο προσπαθώντας να αντικαταστήσει κάθε προορισμό στο σχέδιο με έναν καλύτερο ταίριασμα, λαμβάνοντας υπόψη τις προτιμήσεις και τους περιορισμούς προϋπολογισμού του πελάτη.
Υπολογισμός Κόστους (calculate_cost μέθοδος): Αυτή η μέθοδος υπολογίζει το συνολικό κόστος του τρέχοντος σχεδίου, συμπεριλαμβανομένου και ενός πιθανώς νέου προορισμού.
Με την εκκίνηση του σχεδίου με έναν σαφή στόχο (π.χ., μεγιστοποίηση της ικανοποίησης του πελάτη) και την επανάληψη για την βελτίωση του σχεδίου, ο ταξιδιωτικός πράκτορας μπορεί να δημιουργήσει ένα εξατομικευμένο και βελτιστοποιημένο πρόγραμμα ταξιδιού για τον πελάτη. Αυτή η προσέγγιση εγγυάται ότι το ταξιδιωτικό σχέδιο ευθυγραμμίζεται με τις προτιμήσεις και τον προϋπολογισμό του πελάτη από την αρχή και βελτιώνεται με κάθε επανάληψη.
Τα Μεγάλα Γλωσσικά Μοντέλα (LLMs) μπορούν να χρησιμοποιηθούν για επαναταξινόμηση και βαθμολόγηση αξιολογώντας τη σχετικότητα και την ποιότητα των ανακτηθέντων εγγράφων ή των παραγόμενων απαντήσεων. Δείτε πώς λειτουργεί:
Ανάκτηση: Το αρχικό βήμα ανάκτησης φέρνει ένα σύνολο υποψήφιων εγγράφων ή απαντήσεων με βάση το ερώτημα.
Επαναταξινόμηση: Το LLM αξιολογεί αυτούς τους υποψήφιους και τους επαναταξινομεί βάσει της σχετικότητας και ποιότητας. Αυτό το βήμα διασφαλίζει ότι η πιο σχετική και υψηλής ποιότητας πληροφορία παρουσιάζεται πρώτη.
Βαθμολόγηση: Το LLM αποδίδει βαθμολογίες σε κάθε υποψήφιο, αντανακλώντας τη σχετικότητα και την ποιότητα τους. Αυτό βοηθά στην επιλογή της καλύτερης απάντησης ή εγγράφου για τον χρήστη.
Με την αξιοποίηση των LLM για επαναταξινόμηση και βαθμολόγηση, το σύστημα μπορεί να παρέχει πιο ακριβείς και σχετικές πληροφορίες στο πλαίσιο, βελτιώνοντας τη συνολική εμπειρία του χρήστη.
Εδώ είναι ένα παράδειγμα για το πώς ένας ταξιδιωτικός πράκτορας μπορεί να χρησιμοποιήσει ένα Μεγάλο Γλωσσικό Μοντέλο (LLM) για επαναταξινόμηση και βαθμολόγηση ταξιδιωτικών προορισμών βάσει των προτιμήσεων χρήστη σε Python:
Ένας ταξιδιωτικός πράκτορας θέλει να προτείνει τους καλύτερους ταξιδιωτικούς προορισμούς σε έναν πελάτη βάσει των προτιμήσεών του. Το LLM θα βοηθήσει στην επαναταξινόμηση και βαθμολόγηση των προορισμών ώστε να παρουσιάζονται οι πιο σχετικές επιλογές.
Εδώ μπορείτε να ενημερώσετε το προηγούμενο παράδειγμα ώστε να χρησιμοποιεί τις Υπηρεσίες Azure OpenAI:
import requests
import json
class TravelAgent:
def __init__(self, destinations):
self.destinations = destinations
def get_recommendations(self, preferences, api_key, endpoint):
# Δημιουργήστε ένα προτροπή για το Azure OpenAI
prompt = self.generate_prompt(preferences)
# Ορίστε κεφαλίδες και περιεχόμενο για το αίτημα
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
payload = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7
}
# Καλέστε το API του Azure OpenAI για να λάβετε τους αναμεταταγμένους και βαθμολογημένους προορισμούς
response = requests.post(endpoint, headers=headers, json=payload)
response_data = response.json()
# Εξαγάγετε και επιστρέψτε τις προτάσεις
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
# Παράδειγμα χρήσης
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)
Αρχικοποίηση: Η κλάση TravelAgent αρχικοποιείται με μια λίστα πιθανών ταξιδιωτικών προορισμών, καθένας με χαρακτηριστικά όπως όνομα και περιγραφή.
Λήψη Προτάσεων (get_recommendations μέθοδος): Αυτή η μέθοδος δημιουργεί ένα prompt για την υπηρεσία Azure OpenAI βάσει των προτιμήσεων του χρήστη και κάνει ένα HTTP POST αίτημα στο Azure OpenAI API για να λάβει επαναταξινομημένους και βαθμολογημένους προορισμούς.
Δημιουργία Prompt (generate_prompt μέθοδος): Αυτή η μέθοδος κατασκευάζει ένα prompt για το Azure OpenAI, συμπεριλαμβανομένων των προτιμήσεων του χρήστη και της λίστας προορισμών. Το prompt καθοδηγεί το μοντέλο να επαναταξινομήσει και να βαθμολογήσει τους προορισμούς βάσει των παρεχόμενων προτιμήσεων.
Κλήση API: Η βιβλιοθήκη requests χρησιμοποιείται για να κάνει ένα HTTP POST αίτημα στο endpoint του Azure OpenAI API. Η απάντηση περιέχει τους επαναταξινομημένους και βαθμολογημένους προορισμούς.
Παράδειγμα Χρήσης: Ο ταξιδιωτικός πράκτορας συλλέγει τις προτιμήσεις χρήστη (π.χ., ενδιαφέρον για αξιοθέατα και ποικιλία πολιτισμών) και χρησιμοποιεί την υπηρεσία Azure OpenAI για να λάβει επαναταξινομημένες και βαθμολογημένες προτάσεις για ταξιδιωτικούς προορισμούς.
Βεβαιωθείτε ότι έχετε αντικαταστήσει το your_azure_openai_api_key με το πραγματικό κλειδί API Azure OpenAI και το https://your-endpoint.com/... με το πραγματικό URL του endpoint της ανάπτυξης Azure OpenAI.
Με την αξιοποίηση του LLM για επαναταξινόμηση και βαθμολόγηση, ο ταξιδιωτικός πράκτορας μπορεί να προσφέρει πιο εξατομικευμένες και σχετικές ταξιδιωτικές προτάσεις στους πελάτες, ενισχύοντας τη συνολική εμπειρία τους.
Το Retrieval-Augmented Generation (RAG) μπορεί να είναι τόσο μια τεχνική prompting όσο και ένα εργαλείο στην ανάπτυξη πρακτόρων AI. Η κατανόηση της διάκρισης μεταξύ των δύο μπορεί να σας βοηθήσει να αξιοποιήσετε το RAG πιο αποτελεσματικά στα έργα σας.
Τι είναι;
Πώς λειτουργεί:
Παράδειγμα σε Ταξιδιωτικό Πράκτορα:
Τι είναι;
Πώς λειτουργεί:
Παράδειγμα σε Ταξιδιωτικό Πράκτορα:
| Στοιχείο | Τεχνική Prompting | Εργαλείο |
|---|---|---|
| Χειροκίνητη έναντι Αυτόματης | Χειροκίνητη διαμόρφωση prompts για κάθε ερώτημα. | Αυτοματοποιημένη διαδικασία ανάκτησης και παραγωγής. |
| Έλεγχος | Προσφέρει περισσότερο έλεγχο στη διαδικασία ανάκτησης. | Απλοποιεί και αυτοματοποιεί τη διαδικασία ανάκτησης και παραγωγής. |
| Ευελιξία | Επιτρέπει εξατομικευμένα prompts βάσει συγκεκριμένων αναγκών. | Αποδοτικότερο για υλοποιήσεις μεγάλης κλίμακας. |
| Πολυπλοκότητα | Απαιτεί δημιουργία και ρύθμιση των prompts. | Πιο εύκολο στην ενσωμάτωση σε αρχιτεκτονική πράκτορα AI. |
Παράδειγμα Τεχνικής 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)
Παράδειγμα Εργαλείου:
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)
Η αξιολόγηση της σχετικότητας είναι ένας κρίσιμος τομέας απόδοσης ενός πράκτορα AI. Διασφαλίζει ότι οι πληροφορίες που ανακτώνται και παράγονται από τον πράκτορα είναι κατάλληλες, ακριβείς και χρήσιμες για τον χρήστη. Ας εξερευνήσουμε πώς να αξιολογούμε τη σχετικότητα στους πράκτορες AI, συμπεριλαμβανομένων πρακτικών παραδειγμάτων και τεχνικών.
Παράδειγμα:
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
Παράδειγμα:
def filter_and_rank(items, query):
ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
return ranked_items[:10] # Επιστρέψτε τα 10 κορυφαία σχετικά αντικείμενα
Παράδειγμα:
def process_query(query):
# Χρησιμοποιήστε την Επεξεργασία Φυσικής Γλώσσας (NLP) για να εξαγάγετε βασικές πληροφορίες από το ερώτημα του χρήστη
processed_query = nlp(query)
return processed_query
Παράδειγμα:
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
Εδώ είναι ένα πρακτικό παράδειγμα του πώς ο Travel Agent μπορεί να αξιολογήσει τη σχετικότητα των ταξιδιωτικών προτάσεων:
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] # Επιστρέψτε τα 10 πιο σχετικά στοιχεία
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
# Παράδειγμα χρήσης
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)
Η αναζήτηση με δόλο περιλαμβάνει την κατανόηση και ερμηνεία του υποβόσκοντος σκοπού ή στόχου πίσω από το ερώτημα του χρήστη, ώστε να ανακτηθούν και να παραχθούν οι πιο σχετικές και χρήσιμες πληροφορίες. Αυτή η προσέγγιση ξεπερνά την απλή αντιστοίχιση όρων και εστιάζει στην κατανόηση των πραγματικών αναγκών και του πλαισίου του χρήστη.
Ας δούμε τον Travel Agent ως παράδειγμα για το πώς μπορεί να υλοποιηθεί η αναζήτηση με δόλο.
Συλλογή Προτιμήσεων Χρήστη
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Κατανόηση Δόλου Χρήστη
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):
# Συνδυάστε το τρέχον ερώτημα με το ιστορικό χρήστη για να κατανοήσετε το πλαίσιο
context = {
"current_query": query,
"user_history": user_history
}
return context
Αναζήτηση και Προσωποποίηση Αποτελεσμάτων
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):
# Παράδειγμα λογικής αναζήτησης για ενημερωτικό σκοπό
results = search_web(f"best {preferences['interests']} in {preferences['destination']}")
return results
def search_navigation(query):
# Παράδειγμα λογικής αναζήτησης για πλοηγητικό σκοπό
results = search_web(query)
return results
def search_transaction(query, preferences):
# Παράδειγμα λογικής αναζήτησης για συναλλακτικό σκοπό
results = search_web(f"book {query} to {preferences['destination']}")
return results
def personalize_results(results, user_history):
# Παράδειγμα λογικής εξατομίκευσης
personalized = [result for result in results if result not in user_history]
return personalized[:10] # Επιστροφή των 10 κορυφαίων εξατομικευμένων αποτελεσμάτων
Παράδειγμα Χρήσης
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)
Οι πράκτορες δημιουργίας κώδικα χρησιμοποιούν μοντέλα τεχνητής νοημοσύνης για να γράφουν και να εκτελούν κώδικα, επιλύοντας σύνθετα προβλήματα και αυτοματοποιώντας εργασίες.
Οι πράκτορες δημιουργίας κώδικα χρησιμοποιούν γενετικά μοντέλα τεχνητής νοημοσύνης για να γράφουν και να εκτελούν κώδικα. Αυτοί οι πράκτορες μπορούν να επιλύουν σύνθετα προβλήματα, να αυτοματοποιούν εργασίες και να παρέχουν πολύτιμες γνώσεις μέσω της δημιουργίας και εκτέλεσης κώδικα σε διάφορες γλώσσες προγραμματισμού.
Φανταστείτε ότι σχεδιάζετε έναν πράκτορα δημιουργίας κώδικα. Να πώς μπορεί να λειτουργεί:
Σε αυτό το παράδειγμα, θα σχεδιάσουμε έναν πράκτορα δημιουργίας κώδικα, Τουριστικό Πράκτορα, για να βοηθήσουμε τους χρήστες στον προγραμματισμό των ταξιδιών τους δημιουργώντας και εκτελώντας κώδικα. Αυτός ο πράκτορας μπορεί να χειρίζεται εργασίες όπως αναζήτηση επιλογών ταξιδιού, φιλτράρισμα αποτελεσμάτων και σύνταξη προγράμματος χρησιμοποιώντας γενετική τεχνητή νοημοσύνη.
Συλλογή Προτιμήσεων Χρήστη
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Δημιουργία Κώδικα για Ανάκτηση Δεδομένων
def generate_code_to_fetch_data(preferences):
# Παράδειγμα: Δημιουργία κώδικα για αναζήτηση πτήσεων βάσει προτιμήσεων χρήστη
code = f"""
def search_flights():
import requests
response = requests.get('https://api.example.com/flights', params={preferences})
return response.json()
"""
return code
def generate_code_to_fetch_hotels(preferences):
# Παράδειγμα: Δημιουργία κώδικα για αναζήτηση ξενοδοχείων
code = f"""
def search_hotels():
import requests
response = requests.get('https://api.example.com/hotels', params={preferences})
return response.json()
"""
return code
Εκτέλεση Δημιουργημένου Κώδικα
def execute_code(code):
# Εκτέλεσε τον παραγόμενο κώδικα χρησιμοποιώντας 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)
Δημιουργία Προγράμματος Ταξιδιού
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)
Προσαρμογή Βάσει Ανατροφοδότησης
def adjust_based_on_feedback(feedback, preferences):
# Προσαρμόστε τις προτιμήσεις βάσει των σχολίων του χρήστη
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)
# Αναδημιουργήστε και εκτελέστε τον κώδικα με τις ενημερωμένες προτιμήσεις
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)
Η κατανόηση του σχήματος του πίνακα μπορεί να βελτιώσει τη διαδικασία δημιουργίας ερωτημάτων αξιοποιώντας την περιβαλλοντική επίγνωση και τη λογική.
Παρακάτω ένα παράδειγμα για το πώς μπορεί να γίνει αυτό:
Παρακάτω ακολουθεί ένα ενημερωμένο παράδειγμα σε Python που ενσωματώνει αυτές τις έννοιες:
def adjust_based_on_feedback(feedback, preferences, schema):
# Προσαρμόστε τις προτιμήσεις με βάση τα σχόλια των χρηστών
if "liked" in feedback:
preferences["favorites"] = feedback["liked"]
if "disliked" in feedback:
preferences["avoid"] = feedback["disliked"]
# Λογική βασισμένη σε σχήμα για την προσαρμογή άλλων σχετικών προτιμήσεων
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):
# Προσαρμοσμένη λογική για την προσαρμογή προτιμήσεων με βάση το σχήμα και τα σχόλια
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):
# Δημιουργία κώδικα για λήψη δεδομένων πτήσεων με βάση τις ενημερωμένες προτιμήσεις
return f"fetch_flights(preferences={preferences})"
def generate_code_to_fetch_hotels(preferences):
# Δημιουργία κώδικα για λήψη δεδομένων ξενοδοχείων με βάση τις ενημερωμένες προτιμήσεις
return f"fetch_hotels(preferences={preferences})"
def execute_code(code):
# Προσομοίωση εκτέλεσης κώδικα και επιστροφή δοκιμαστικών δεδομένων
return {"data": f"Executed: {code}"}
def generate_itinerary(flights, hotels, attractions):
# Δημιουργία προγράμματος ταξιδιού με βάση πτήσεις, ξενοδοχεία και αξιοθέατα
return {"flights": flights, "hotels": hotels, "attractions": attractions}
# Παράδειγμα σχήματος
schema = {
"favorites": {"positive_adjustment": "increase", "negative_adjustment": "decrease", "default": "neutral"},
"avoid": {"positive_adjustment": "decrease", "negative_adjustment": "increase", "default": "neutral"}
}
# Παράδειγμα χρήσης
preferences = {"favorites": "sightseeing", "avoid": "crowded places"}
feedback = {"liked": ["Louvre Museum"], "disliked": ["Eiffel Tower (too crowded)"]}
updated_preferences = adjust_based_on_feedback(feedback, preferences, schema)
# Αναδημιουργία και εκτέλεση κώδικα με ενημερωμένες προτιμήσεις
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 ορίζει πώς θα πρέπει να προσαρμοστούν οι προτιμήσεις βάσει της ανατροφοδότησης. Περιλαμβάνει πεδία όπως favorites και avoid, με αντίστοιχες προσαρμογές.adjust_based_on_feedback): Αυτή η μέθοδος προσαρμόζει τις προτιμήσεις με βάση την ανατροφοδότηση του χρήστη και το σχήμα.adjust_based_on_environment): Αυτή η μέθοδος εξατομικεύει τις προσαρμογές με βάση το σχήμα και την ανατροφοδότηση.Με τον τρόπο που το σύστημα γίνεται περιβαλλοντικά επίγνωστο και χρησιμοποιεί τη λογική βάσει του σχήματος, μπορεί να δημιουργεί πιο ακριβή και σχετιζόμενα ερωτήματα, οδηγώντας σε καλύτερες ταξιδιωτικές προτάσεις και μια πιο προσωποποιημένη εμπειρία για τον χρήστη.
Η SQL (Δομημένη Γλώσσα Ερωτήσεων) είναι ένα ισχυρό εργαλείο για την αλληλεπίδραση με βάσεις δεδομένων. Όταν χρησιμοποιείται ως μέρος μιας προσέγγισης Retrieval-Augmented Generation (RAG), η SQL μπορεί να ανακτά σχετικά δεδομένα από βάσεις δεδομένων για να ενημερώνει και να δημιουργεί απαντήσεις ή ενέργειες σε πράκτορες τεχνητής νοημοσύνης. Ας εξερευνήσουμε πώς η SQL μπορεί να χρησιμοποιηθεί ως τεχνική RAG στο πλαίσιο του Τουριστικού Πράκτορα.
Παράδειγμα: Πράκτορας ανάλυσης δεδομένων:
Συλλογή Προτιμήσεων Χρήστη
class Travel_Agent:
def __init__(self):
self.user_preferences = {}
def gather_preferences(self, preferences):
self.user_preferences = preferences
Δημιουργία Ερωτημάτων 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
Εκτέλεση Ερωτημάτων 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
Δημιουργία Προτάσεων
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)
Ερώτημα Πτήσης
SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
Ερώτημα Ξενοδοχείου
SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
Ερώτημα Αξιοθέατων
SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
Αξιοποιώντας τη SQL ως μέρος της τεχνικής Retrieval-Augmented Generation (RAG), πράκτορες τεχνητής νοημοσύνης όπως ο Τουριστικός Πράκτορας μπορούν να ανακτούν δυναμικά και να χρησιμοποιούν σχετικά δεδομένα για να παρέχουν ακριβείς και προσωποποιημένες προτάσεις.
Για να επιδείξουμε μια υλοποίηση μεταγνωστικής, ας δημιουργήσουμε έναν απλό πράκτορα που αντανακλά στη διαδικασία λήψης αποφάσεών του ενώ επιλύει ένα πρόβλημα. Σε αυτό το παράδειγμα, θα κατασκευάσουμε ένα σύστημα όπου ένας πράκτορας προσπαθεί να βελτιστοποιήσει την επιλογή ξενοδοχείου, αλλά στη συνέχεια αξιολογεί τη λογική του και προσαρμόζει τη στρατηγική του όταν κάνει λάθη ή υποβέλτιστες επιλογές.
Θα το προσομοιώσουμε με ένα βασικό παράδειγμα όπου ο πράκτορας επιλέγει ξενοδοχεία βάσει συνδυασμού τιμής και ποιότητας, αλλά “αντανακλά” στις αποφάσεις του και προσαρμόζεται κατάλληλα.
Ακολουθεί ένα παράδειγμα:
class HotelRecommendationAgent:
def __init__(self):
self.previous_choices = [] # Αποθηκεύει τα ξενοδοχεία που επιλέχθηκαν προηγουμένως
self.corrected_choices = [] # Αποθηκεύει τις διορθωμένες επιλογές
self.recommendation_strategies = ['cheapest', 'highest_quality'] # Διαθέσιμες στρατηγικές
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]
# Ας υποθέσουμε ότι έχουμε κάποια ανατροφοδότηση χρήστη που μας λέει αν η τελευταία επιλογή ήταν καλή ή όχι
user_feedback = self.get_user_feedback(last_choice)
if user_feedback == "bad":
# Προσαρμόζει τη στρατηγική αν η προηγούμενη επιλογή ήταν ανεπαρκής
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"
# Προσομοιώνει μια λίστα ξενοδοχείων (τιμή και ποιότητα)
hotels = [
{'name': 'Budget Inn', 'price': 80, 'quality': 6},
{'name': 'Comfort Suites', 'price': 120, 'quality': 8},
{'name': 'Luxury Stay', 'price': 200, 'quality': 9}
]
# Δημιουργεί έναν πράκτορα
agent = HotelRecommendationAgent()
# Βήμα 1: Ο πράκτορας προτείνει ένα ξενοδοχείο χρησιμοποιώντας τη στρατηγική "το φθηνότερο"
recommended_hotel = agent.recommend_hotel(hotels, 'cheapest')
print(f"Recommended hotel (cheapest): {recommended_hotel['name']}")
# Βήμα 2: Ο πράκτορας εξετάζει την επιλογή και προσαρμόζει τη στρατηγική αν χρειαστεί
reflection_result = agent.reflect_on_choice()
print(reflection_result)
# Βήμα 3: Ο πράκτορας προτείνει ξανά, αυτή τη φορά χρησιμοποιώντας τη ρυθμισμένη στρατηγική
adjusted_recommendation = agent.recommend_hotel(hotels, 'highest_quality')
print(f"Adjusted hotel recommendation (highest_quality): {adjusted_recommendation['name']}")
Το κλειδί εδώ είναι η ικανότητα του πράκτορα να:
Αυτή είναι μια απλή μορφή μεταγνωστικής όπου το σύστημα μπορεί να προσαρμόζει τη διαδικασία λογικής του βάσει εσωτερικής ανατροφοδότησης.
Η μεταγνωστική είναι ένα ισχυρό εργαλείο που μπορεί να ενισχύσει σημαντικά τις δυνατότητες των πρακτόρων τεχνητής νοημοσύνης. Ενσωματώνοντας μεταγνωστικές διαδικασίες, μπορείτε να σχεδιάσετε πράκτορες που είναι πιο έξυπνοι, προσαρμοστικοί και αποδοτικοί. Χρησιμοποιήστε τους πρόσθετους πόρους για να εξερευνήσετε περαιτέρω τον συναρπαστικό κόσμο της μεταγνωστικής στους πράκτορες AI.
Ενταχθείτε στον Microsoft Foundry Discord για να γνωρίσετε άλλους μαθητευόμενους, να παρακολουθήσετε ώρες γραφείου και να λύσετε τις απορίες σας σχετικά με τους Πράκτορες AI.
Πολυπρακτορικό Πρότυπο Σχεδιασμού
Αποποίηση ευθυνών:
Το παρόν έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI Co-op Translator. Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η επίσημη πηγή. Για κρίσιμες πληροφορίες συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.