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

Πριν εμβαθύνετε στις μεταγνωστικές διαδικασίες, είναι σημαντικό να κατανοήσετε τα βασικά συστατικά ενός πράκτορα ΤΝ. Ένας πράκτορας ΤΝ συνήθως αποτελείται από:
Αυτά τα συστατικά συνεργάζονται για να δημιουργήσουν μια “μονάδα ειδικότητας” που μπορεί να εκτελεί συγκεκριμένες εργασίες.
Παράδειγμα: Σκεφτείτε έναν ταξιδιωτικό πράκτορα, μια υπηρεσία πρακτόρων που όχι μόνο σχεδιάζει τις διακοπές σας αλλά και προσαρμόζει τη διαδρομή της βάσει δεδομένων σε πραγματικό χρόνο και προηγούμενων εμπειριών πελατών.
Φανταστείτε ότι σχεδιάζετε μια υπηρεσία ταξιδιωτικού πράκτορα με δύναμη ΤΝ. Αυτός ο πράκτορας, “Ταξιδιωτικός Πράκτορας”, βοηθά τους χρήστες να σχεδιάσουν τις διακοπές τους. Για να ενσωματώσει τη μεταγνώση, ο Ταξιδιωτικός Πράκτορας πρέπει να αξιολογεί και να προσαρμόζει τις ενέργειές του βάσει αυτογνωσίας και προηγούμενων εμπειριών. Δείτε πώς μπορεί να παίξει ρόλο η μεταγνώση:
Η τρέχουσα εργασία είναι να βοηθήσει έναν χρήστη να σχεδιάσει ένα ταξίδι στο Παρίσι.
Ο Ταξιδιωτικός Πράκτορας χρησιμοποιεί τη μεταγνώση για να αξιολογήσει την απόδοσή του και να μάθει από προηγούμενες εμπειρίες. Για παράδειγμα:
Εδώ είναι ένα απλοποιημένο παράδειγμα κώδικα για το πώς μπορεί να μοιάζει ο κώδικας του Ταξιδιωτικού Πράκτορα όταν ενσωματώνει τη μεταγνώση:
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):
# Δημιουργήστε ένα prompt για το 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 αίτημα προς το API του Azure OpenAI για να λάβει επανακατεταγμένους και βαθμολογημένους προορισμούς.
Δημιουργία Prompt (μέθοδος generate_prompt): Αυτή η μέθοδος κατασκευάζει ένα prompt για το Azure OpenAI, συμπεριλαμβάνοντας τις προτιμήσεις του χρήστη και τη λίστα προορισμών. Το prompt καθοδηγεί το μοντέλο να επανακατατάξει και να βαθμολογήσει τους προορισμούς βάσει των παρεχόμενων προτιμήσεων.
Κλήση API: Η βιβλιοθήκη requests χρησιμοποιείται για να κάνει ένα HTTP POST αίτημα στο API του Azure OpenAI. Η απάντηση περιέχει τους επανακατεταγμένους και βαθμολογημένους προορισμούς.
Παράδειγμα Χρήσης: Ο ταξιδιωτικός πράκτορας συλλέγει τις προτιμήσεις του χρήστη (π.χ. ενδιαφέρον για περιηγήσεις και ποικιλία πολιτισμών) και χρησιμοποιεί την υπηρεσία Azure OpenAI για να λάβει επανακατεταγμένες και βαθμολογημένες προτάσεις για ταξιδιωτικούς προορισμούς.
Φροντίστε να αντικαταστήσετε το your_azure_openai_api_key με το πραγματικό κλειδί API του Azure OpenAI και το https://your-endpoint.com/... με τον πραγματικό URL του endpoint της ανάπτυξης Azure OpenAI σας.
Με την αξιοποίηση του LLM για επανακατάταξη και βαθμολόγηση, ο ταξιδιωτικός πράκτορας μπορεί να παρέχει πιο εξατομικευμένες και σχετικές προτάσεις ταξιδιών στους πελάτες, βελτιώνοντας τη συνολική τους εμπειρία.
Η Ανάκτηση-Ενισχυμένη Γενιά (RAG) μπορεί να είναι τόσο μια τεχνική προτροπής όσο και ένα εργαλείο στην ανάπτυξη πρακτόρων AI. Η κατανόηση της διάκρισης μεταξύ των δύο μπορεί να σας βοηθήσει να αξιοποιήσετε το RAG πιο αποτελεσματικά στα έργα σας.
Τι είναι;
Πώς λειτουργεί:
Παράδειγμα σε ταξιδιωτικό πράκτορα:
Τι είναι;
Πώς λειτουργεί:
Παράδειγμα σε ταξιδιωτικό πράκτορα:
| Χαρακτηριστικό | Τεχνική Προτροπής | Εργαλείο |
|---|---|---|
| Χειροκίνητο vs Αυτόματο | Χειροκίνητη διατύπωση prompts για κάθε ερώτημα. | Αυτοματοποιημένη διαδικασία για ανάκτηση και παραγωγή. |
| Έλεγχος | Παρέχει μεγαλύτερο έλεγχο στη διαδικασία ανάκτησης. | Απλοποιεί και αυτοματοποιεί την ανάκτηση και παραγωγή. |
| Ευελιξία | Επιτρέπει προσαρμοσμένα prompts βάσει συγκεκριμένων αναγκών. | Πιο αποδοτικό για ευρείες εφαρμογές. |
| Περιπλοκότητα | Απαιτεί δημιουργία και προσαρμογή prompts. | Ευκολότερο στην ενσωμάτωση στην αρχιτεκτονική πράκτορα AI. |
Παράδειγμα Τεχνικής Προτροπής:
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):
# Χρησιμοποιήστε την Επεξεργασία Φυσικής Γλώσσας για να εξαγάγετε βασικές πληροφορίες από το ερώτημα του χρήστη
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
Εδώ είναι ένα πρακτικό παράδειγμα του πώς ο Ταξιδιωτικός Πράκτορας μπορεί να αξιολογήσει τη συνάφεια των ταξιδιωτικών προτάσεων:
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)
Η αναζήτηση με σκοπό περιλαμβάνει την κατανόηση και ερμηνεία του υποκείμενου σκοπού ή στόχου πίσω από το ερώτημα ενός χρήστη, για να ανακτηθούν και να παραχθούν οι πιο σχετικές και χρήσιμες πληροφορίες. Αυτή η προσέγγιση ξεπερνά την απλή αντιστοίχιση λέξεων-κλειδιών και εστιάζει στην κατανόηση των πραγματικών αναγκών και του πλαισίου του χρήστη.
Ας πάρουμε ως παράδειγμα τον Ταξιδιωτικό Πράκτορα για να δούμε πώς μπορεί να υλοποιηθεί η αναζήτηση με σκοπό.
Συλλογή Προτιμήσεων Χρήστη
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)
Οι πράκτορες δημιουργίας κώδικα χρησιμοποιούν μοντέλα Τεχνητής Νοημοσύνης για να γράφουν και να εκτελούν κώδικα, επιλύοντας σύνθετα προβλήματα και αυτοματοποιώντας εργασίες.
Οι πράκτορες δημιουργίας κώδικα χρησιμοποιούν γενετικά μοντέλα Τεχνητής Νοημοσύνης για να γράφουν και να εκτελούν κώδικα. Αυτοί οι πράκτορες μπορούν να λύσουν σύνθετα προβλήματα, να αυτοματοποιήσουν εργασίες και να προσφέρουν πολύτιμες γνώσεις μέσω της δημιουργίας και εκτέλεσης κώδικα σε διάφορες γλώσσες προγραμματισμού.
Φανταστείτε ότι σχεδιάζετε έναν πράκτορα δημιουργίας κώδικα. Ιδού πώς θα μπορούσε να λειτουργήσει:
Σε αυτό το παράδειγμα, θα σχεδιάσουμε έναν πράκτορα δημιουργίας κώδικα, Traveler Agent, για να βοηθά τους χρήστες στον προγραμματισμό των ταξιδιών τους δημιουργώντας και εκτελώντας κώδικα. Αυτός ο πράκτορας μπορεί να χειρίζεται εργασίες όπως η ανάκτηση επιλογών ταξιδιών, το φιλτράρισμα αποτελεσμάτων και η σύνταξη προγράμματος με χρήση γενετικής Τεχνητής Νοημοσύνης.
Συλλογή Προτιμήσεων Χρήστη
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 (Structured Query Language) είναι ένα ισχυρό εργαλείο για αλληλεπίδραση με βάσεις δεδομένων. Όταν χρησιμοποιείται ως μέρος της προσέγγισης Retrieval-Augmented Generation (RAG), το SQL μπορεί να ανακτήσει σχετικά δεδομένα από βάσεις δεδομένων για να ενημερώσει και να δημιουργήσει απαντήσεις ή δράσεις σε πράκτορες Τεχνητής Νοημοσύνης. Ας εξερευνήσουμε πώς μπορεί να χρησιμοποιηθεί το SQL ως τεχνική RAG στο πλαίσιο του Travel Agent.
Παράδειγμα: Πράκτορας ανάλυσης δεδομένων:
Συλλογή Προτιμήσεων Χρήστη
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), οι πράκτορες AI όπως ο Travel Agent μπορούν να ανακτούν δυναμικά και να χρησιμοποιούν σχετικά δεδομένα για να παρέχουν ακριβείς και εξατομικευμένες προτάσεις.
Για να δείξουμε μια υλοποίηση μεταγνωστικής σκέψης, ας δημιουργήσουμε έναν απλό πράκτορα που αντανακλά στη διαδικασία λήψης αποφάσεών του κατά τη λύση ενός προβλήματος. Για το παράδειγμα αυτό, θα δημιουργήσουμε ένα σύστημα όπου ένας πράκτορας προσπαθεί να βελτιστοποιήσει την επιλογή ξενοδοχείου, αλλά στη συνέχεια αξιολογεί τη δική του λογική και προσαρμόζει τη στρατηγική του όταν κάνει λάθη ή υποβέλτιστες επιλογές.
Θα το προσομοιώσουμε χρησιμοποιώντας ένα βασικό παράδειγμα όπου ο πράκτορας επιλέγει ξενοδοχεία βάσει του συνδυασμού τιμής και ποιότητας, αλλά θα “αντανακλά” στις αποφάσεις του και θα προσαρμόζεται ανάλογα.
Ιδού ένα παράδειγμα:
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. Ενσωματώνοντας μεταγνωστικές διαδικασίες, μπορείτε να σχεδιάσετε πράκτορες που είναι πιο έξυπνοι, προσαρμόσιμοι και αποδοτικοί. Χρησιμοποιήστε τους επιπλέον πόρους για να εξερευνήσετε περαιτέρω τον συναρπαστικό κόσμο της μεταγνωστικής σκέψης στους πράκτορες AI.
Εγγραφείτε στο Microsoft Foundry Discord για να συναντήσετε άλλους μαθητευόμενους, να παρακολουθήσετε ώρες γραφείου και να λύσετε τις απορίες σας σχετικά με τους Πράκτορες AI.
Πρότυπο Σχεδίασης Πολυπράκτορα
Αποποίηση ευθυνών: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη Co-op Translator. Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.