ai-agents-for-beginners

Σχεδίαση Πολλαπλών Πρακτόρων

(Κάντε κλικ στην εικόνα παραπάνω για να δείτε το βίντεο αυτού του μαθήματος)

Μεταγνώση σε Πράκτορες Τεχνητής Νοημοσύνης

Εισαγωγή

Καλώς ήρθατε στο μάθημα για τη μεταγνώση σε πράκτορες τεχνητής νοημοσύνης! Αυτό το κεφάλαιο έχει σχεδιαστεί για αρχάριους που ενδιαφέρονται να μάθουν πώς οι πράκτορες τεχνητής νοημοσύνης μπορούν να σκέφτονται τη δική τους διαδικασία σκέψης. Στο τέλος αυτού του μαθήματος, θα κατανοήσετε βασικές έννοιες και θα είστε εξοπλισμένοι με πρακτικά παραδείγματα για να εφαρμόσετε τη μεταγνώση στο σχεδιασμό πρακτόρων ΤΝ.

Στόχοι Μάθησης

Μετά την ολοκλήρωση αυτού του μαθήματος, θα μπορείτε να:

  1. Κατανοήσετε τις επιπτώσεις των βρόχων συλλογισμού στον ορισμό πρακτόρων.
  2. Χρησιμοποιήσετε τεχνικές σχεδιασμού και αξιολόγησης για τη βοήθεια αυτοδιορθωτικών πρακτόρων.
  3. Δημιουργήσετε δικούς σας πράκτορες ικανούς να χειρίζονται τον κώδικα για την ολοκλήρωση εργασιών.

Εισαγωγή στη Μεταγνώση

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

Στο πλαίσιο των πρακτορικών συστημάτων ΤΝ, η μεταγνώση μπορεί να βοηθήσει στην αντιμετώπιση διαφόρων προκλήσεων, όπως:

Τι είναι η Μεταγνώση;

Η μεταγνώση, ή “σκέψη για τη σκέψη”, είναι μια ανώτερη γνωστική διαδικασία που περιλαμβάνει αυτογνωσία και αυτορρύθμιση των γνωστικών διαδικασιών του ατόμου. Στον τομέα της ΤΝ, η μεταγνώση δίνει τη δυνατότητα στους πράκτορες να αξιολογούν και να προσαρμόζουν τις στρατηγικές και τις ενέργειές τους, οδηγώντας σε βελτιωμένες ικανότητες επίλυσης προβλημάτων και λήψης αποφάσεων. Με την κατανόηση της μεταγνώσης, μπορείτε να σχεδιάσετε πράκτορες ΤΝ που όχι μόνο είναι πιο έξυπνοι αλλά και πιο προσαρμοστικοί και αποδοτικοί. Στην πραγματική μεταγνώση, θα βλέπατε την ΤΝ να συλλογίζεται ρητά τον δικό της συλλογισμό.

Παράδειγμα: «Προτίμησα φθηνότερες πτήσεις επειδή… μπορεί να χάνω απευθείας πτήσεις, οπότε ας επανελέγξω.». Παρακολουθώντας τον τρόπο ή τον λόγο που επέλεξε μια συγκεκριμένη διαδρομή.

Σημασία της Μεταγνώσης στους Πράκτορες ΤΝ

Η μεταγνώση παίζει κρίσιμο ρόλο στο σχεδιασμό πρακτόρων ΤΝ για διάφορους λόγους:

Σημασία της Μεταγνώσης

Συστατικά ενός Πράκτορα ΤΝ

Πριν εμβαθύνετε στις μεταγνωστικές διαδικασίες, είναι σημαντικό να κατανοήσετε τα βασικά συστατικά ενός πράκτορα ΤΝ. Ένας πράκτορας ΤΝ συνήθως αποτελείται από:

Αυτά τα συστατικά συνεργάζονται για να δημιουργήσουν μια “μονάδα ειδικότητας” που μπορεί να εκτελεί συγκεκριμένες εργασίες.

Παράδειγμα: Σκεφτείτε έναν ταξιδιωτικό πράκτορα, μια υπηρεσία πρακτόρων που όχι μόνο σχεδιάζει τις διακοπές σας αλλά και προσαρμόζει τη διαδρομή της βάσει δεδομένων σε πραγματικό χρόνο και προηγούμενων εμπειριών πελατών.

Παράδειγμα: Μεταγνώση σε Υπηρεσία Ταξιδιωτικού Πράκτορα

Φανταστείτε ότι σχεδιάζετε μια υπηρεσία ταξιδιωτικού πράκτορα με δύναμη ΤΝ. Αυτός ο πράκτορας, “Ταξιδιωτικός Πράκτορας”, βοηθά τους χρήστες να σχεδιάσουν τις διακοπές τους. Για να ενσωματώσει τη μεταγνώση, ο Ταξιδιωτικός Πράκτορας πρέπει να αξιολογεί και να προσαρμόζει τις ενέργειές του βάσει αυτογνωσίας και προηγούμενων εμπειριών. Δείτε πώς μπορεί να παίξει ρόλο η μεταγνώση:

Τρέχουσα εργασία

Η τρέχουσα εργασία είναι να βοηθήσει έναν χρήστη να σχεδιάσει ένα ταξίδι στο Παρίσι.

Βήματα για την ολοκλήρωση της εργασίας

  1. Συλλογή προτιμήσεων χρήστη: Ρωτήστε τον χρήστη για τις ημερομηνίες ταξιδιού, τον προϋπολογισμό, τα ενδιαφέροντα (π.χ. μουσεία, κουζίνα, ψώνια) και τυχόν συγκεκριμένες απαιτήσεις.
  2. Ανάκτηση πληροφοριών: Αναζητήστε επιλογές πτήσεων, καταλύματα, αξιοθέατα και εστιατόρια που ταιριάζουν στις προτιμήσεις του χρήστη.
  3. Δημιουργία προτάσεων: Παρέχετε ένα εξατομικευμένο δρομολόγιο με λεπτομέρειες πτήσεων, κρατήσεις ξενοδοχείων και προτεινόμενες δραστηριότητες.
  4. Προσαρμογή βάσει ανάδρασης: Ρωτήστε τον χρήστη για σχόλια σχετικά με τις προτάσεις και κάντε τις απαραίτητες προσαρμογές.

Απαιτούμενοι πόροι

Εμπειρία και Αυτοαντανάκλαση

Ο Ταξιδιωτικός Πράκτορας χρησιμοποιεί τη μεταγνώση για να αξιολογήσει την απόδοσή του και να μάθει από προηγούμενες εμπειρίες. Για παράδειγμα:

  1. Ανάλυση ανατροφοδότησης χρήστη: Ο Ταξιδιωτικός Πράκτορας εξετάζει τα σχόλια των χρηστών για να διαπιστώσει ποιες προτάσεις έγιναν αποδεκτές και ποιες όχι. Τροποποιεί αναλόγως τις μελλοντικές προτάσεις του.
  2. Προσαρμοστικότητα: Εάν ένας χρήστης έχει αναφέρει προηγουμένως ότι δεν του αρέσουν τα πολυσύχναστα μέρη, ο Ταξιδιωτικός Πράκτορας θα αποφεύγει να προτείνει δημοφιλή τουριστικά σημεία κατά τις ώρες αιχμής στο μέλλον.
  3. Διόρθωση σφαλμάτων: Εάν ο Ταξιδιωτικός Πράκτορας έκανε λάθος σε προηγούμενη κράτηση, όπως προτείνοντας ξενοδοχείο που ήταν πλήρως γεμάτο, μαθαίνει να ελέγχει την διαθεσιμότητα πιο αυστηρά πριν κάνει προτάσεις.

Πρακτικό παράδειγμα για προγραμματιστές

Εδώ είναι ένα απλοποιημένο παράδειγμα κώδικα για το πώς μπορεί να μοιάζει ο κώδικας του Ταξιδιωτικού Πράκτορα όταν ενσωματώνει τη μεταγνώση:

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)

Γιατί η Μεταγνώση Έχει Σημασία

Ενσωματώνοντας τη μεταγνώση, ο Ταξιδιωτικός Πράκτορας μπορεί να παρέχει πιο εξατομικευμένες και ακριβείς ταξιδιωτικές προτάσεις, βελτιώνοντας τη συνολική εμπειρία του χρήστη.


2. Προγραμματισμός σε Πράκτορες

Ο προγραμματισμός αποτελεί κρίσιμο συστατικό της συμπεριφοράς ενός πράκτορα ΤΝ. Περιλαμβάνει τον καθορισμό των βημάτων που απαιτούνται για την επίτευξη ενός στόχου, λαμβάνοντας υπόψη την τρέχουσα κατάσταση, τους πόρους και τους πιθανούς εμποδίους.

Στοιχεία Προγραμματισμού

Παράδειγμα: Εδώ είναι τα βήματα που πρέπει να ακολουθήσει ο Ταξιδιωτικός Πράκτορας για να βοηθήσει έναν χρήστη να σχεδιάσει αποτελεσματικά το ταξίδι του:

Βήματα για τον Ταξιδιωτικό Πράκτορα

  1. Συλλογή προτιμήσεων χρήστη
    • Ρωτήστε τον χρήστη για λεπτομέρειες σχετικά με τις ημερομηνίες ταξιδιού, τον προϋπολογισμό, τα ενδιαφέροντα και τυχόν ειδικές απαιτήσεις.
    • Παραδείγματα: “Πότε σκοπεύετε να ταξιδέψετε;” “Ποιος είναι ο προϋπολογισμός σας;” “Τι δραστηριότητες σας αρέσουν στις διακοπές;”
  2. Ανάκτηση πληροφοριών
    • Αναζητήστε σχετικά ταξιδιωτικά επιλογές βάσει των προτιμήσεων του χρήστη.
    • Πτήσεις: Αναζητήστε διαθέσιμες πτήσεις εντός του προϋπολογισμού του χρήστη και των προτιμώμενων ημερομηνιών ταξιδιού.
    • Καταλύματα: Βρείτε ξενοδοχεία ή ενοικιαζόμενα ακίνητα που ταιριάζουν στις προτιμήσεις του χρήστη για τοποθεσία, τιμή και ανέσεις.
    • Αξιοθέατα και εστιατόρια: Προσδιορίστε δημοφιλή αξιοθέατα, δραστηριότητες και επιλογές φαγητού που συνάδουν με τα ενδιαφέροντα του χρήστη.
  3. Δημιουργία προτάσεων
    • Συνθέστε τις ανακτηθείσες πληροφορίες σε ένα εξατομικευμένο δρομολόγιο.
    • Παρέχετε λεπτομέρειες όπως επιλογές πτήσεων, κρατήσεις ξενοδοχείων και προτεινόμενες δραστηριότητες, προσαρμόζοντας τις προτάσεις στις προτιμήσεις του χρήστη.
  4. Παρουσίαση δρομολογίου στον χρήστη
    • Κοινοποιήστε το προτεινόμενο δρομολόγιο στο χρήστη για αξιολόγηση.
    • Παράδειγμα: “Ακολουθεί το προτεινόμενο δρομολόγιο για το ταξίδι σας στο Παρίσι. Περιλαμβάνει λεπτομέρειες πτήσεων, κρατήσεις ξενοδοχείων και λίστα με προτεινόμενες δραστηριότητες και εστιατόρια. Ενημερώστε με τη γνώμη σας!”
  5. Συλλογή ανατροφοδότησης
    • Ζητήστε από τον χρήστη σχόλια σχετικά με το προτεινόμενο δρομολόγιο.
    • Παραδείγματα: “Σας αρέσουν οι επιλογές πτήσεων;” “Είναι το ξενοδοχείο κατάλληλο για τις ανάγκες σας;” “Υπάρχουν δραστηριότητες που θα θέλατε να προσθέσετε ή να αφαιρέσετε;”
  6. Προσαρμογή βάσει ανατροφοδότησης
    • Τροποποιήστε το δρομολόγιο βάσει των σχολίων του χρήστη.
    • Κάντε τις απαραίτητες αλλαγές στις προτάσεις για πτήσεις, καταλύματα και δραστηριότητες ώστε να ταιριάζουν καλύτερα στις προτιμήσεις του χρήστη.
  7. Τελική επιβεβαίωση
    • Παρουσιάστε το ενημερωμένο δρομολόγιο στον χρήστη για τελική επιβεβαίωση.
    • Παράδειγμα: “Έχω κάνει τις αλλαγές βάσει της ανατροφοδότησής σας. Ακολουθεί το ενημερωμένο δρομολόγιο. Είναι όλα εντάξει για εσάς;”
  8. Κράτηση και επιβεβαίωση
    • Μόλις ο χρήστης εγκρίνει το δρομολόγιο, προχωρήστε σε κρατήσεις πτήσεων, καταλυμάτων και τυχόν προγραμματισμένων δραστηριοτήτων.
    • Στείλτε λεπτομέρειες επιβεβαίωσης στον χρήστη.
  9. Παροχή συνεχιζόμενης υποστήριξης
    • Παραμείνετε διαθέσιμοι για να βοηθήσετε τον χρήστη με τυχόν αλλαγές ή επιπλέον αιτήματα πριν και κατά τη διάρκεια του ταξιδιού του.
    • Παράδειγμα: “Εάν χρειαστείτε περαιτέρω βοήθεια κατά τη διάρκεια του ταξιδιού σας, μη διστάσετε να επικοινωνήσετε μαζί μου οποτεδήποτε!”

Παράδειγμα αλληλεπίδρασης

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)

3. Διορθωτικό Σύστημα RAG

Ας ξεκινήσουμε κατανοώντας τη διαφορά μεταξύ του εργαλείου RAG και της Προληπτικής Φόρτωσης Περιεχομένου.

RAG vs Φόρτωση Περιεχομένου

Ανάκτηση-Ενισχυμένη Γενεση (RAG)

Το RAG συνδυάζει ένα σύστημα ανάκτησης με ένα γενετικό μοντέλο. Όταν γίνεται ένα ερώτημα, το σύστημα ανάκτησης φέρνει σχετικά έγγραφα ή δεδομένα από εξωτερική πηγή, και αυτές οι ανακτηθείσες πληροφορίες χρησιμοποιούνται για να ενισχύσουν την είσοδο στο γενετικό μοντέλο. Αυτό βοηθά το μοντέλο να παράγει πιο ακριβείς και σχετικές απαντήσεις με το πλαίσιο.

Σε ένα σύστημα RAG, ο πράκτορας ανακτά σχετικές πληροφορίες από μια βάση γνώσης και τις χρησιμοποιεί για να παράγει κατάλληλες απαντήσεις ή ενέργειες.

Προσέγγιση Διορθωτικού RAG

Η προσέγγιση Διορθωτικού RAG επικεντρώνεται στη χρήση τεχνικών RAG για τη διόρθωση σφαλμάτων και τη βελτίωση της ακρίβειας των πρακτόρων ΤΝ. Αυτό περιλαμβάνει:

  1. Τεχνική διέγερσης: Χρήση συγκεκριμένων εντολών για να καθοδηγήσει τον πράκτορα στην ανάκτηση σχετικών πληροφοριών.
  2. Εργαλείο: Εφαρμογή αλγορίθμων και μηχανισμών που επιτρέπουν στον πράκτορα να αξιολογεί τη συνάφεια των ανακτημένων πληροφοριών και να παράγει ακριβείς απαντήσεις.
  3. Αξιολόγηση: Συνεχής αξιολόγηση της απόδοσης του πράκτορα και λήψη προσαρμογών για τη βελτίωση της ακρίβειας και αποδοτικότητας.

Παράδειγμα: Διορθωτικό RAG σε Πράκτορα Αναζήτησης

Σκεφτείτε έναν πράκτορα αναζήτησης που ανακτά πληροφορίες από τον ιστό για να απαντήσει σε ερωτήματα χρηστών. Η προσέγγιση Διορθωτικού RAG μπορεί να περιλαμβάνει:

  1. Τεχνική διέγερσης: Διατύπωση ερωτημάτων αναζήτησης βάσει της εισαγωγής του χρήστη.
  2. Εργαλείο: Χρήση επεξεργασίας φυσικής γλώσσας και αλγορίθμων μηχανικής μάθησης για την κατάταξη και φιλτράρισμα των αποτελεσμάτων.
  3. Αξιολόγηση: Ανάλυση ανατροφοδότησης χρήστη για τον εντοπισμό και τη διόρθωση ανακρίβειων στις ανακτημένες πληροφορίες.

Διορθωτικό RAG στον Ταξιδιωτικό Πράκτορα

Το Διορθωτικό RAG (Retrieval-Augmented Generation) ενισχύει την ικανότητα μιας ΤΝ να ανακτά και να παράγει πληροφορίες ενώ διορθώνει τυχόν ανακρίβειες. Ας δούμε πώς ο Ταξιδιωτικός Πράκτορας μπορεί να χρησιμοποιήσει την προσέγγιση Διορθωτικού RAG για να παρέχει πιο ακριβείς και σχετικές ταξιδιωτικές προτάσεις.

Αυτό περιλαμβάνει:

Βήματα για την εφαρμογή του Διορθωτικού RAG στον Ταξιδιωτικό Πράκτορα

  1. Αρχική αλληλεπίδραση με τον χρήστη
    • Ο Ταξιδιωτικός Πράκτορας συλλέγει αρχικές προτιμήσεις από τον χρήστη, όπως προορισμό, ημερομηνίες ταξιδιού, προϋπολογισμό και ενδιαφέροντα.
    • Παράδειγμα:

      preferences = {
          "destination": "Paris",
          "dates": "2025-04-01 to 2025-04-10",
          "budget": "moderate",
          "interests": ["museums", "cuisine"]
      }
      
  2. Ανάκτηση πληροφοριών
    • Ο Ταξιδιωτικός Πράκτορας ανακτά πληροφορίες για πτήσεις, καταλύματα, αξιοθέατα και εστιατόρια βάσει των προτιμήσεων του χρήστη.
    • Παράδειγμα:

      flights = search_flights(preferences)
      hotels = search_hotels(preferences)
      attractions = search_attractions(preferences)
      
  3. Δημιουργία αρχικών προτάσεων
    • Ο Ταξιδιωτικός Πράκτορας χρησιμοποιεί τις ανακτημένες πληροφορίες για να δημιουργήσει ένα εξατομικευμένο δρομολόγιο.
    • Παράδειγμα:

      itinerary = create_itinerary(flights, hotels, attractions)
      print("Suggested Itinerary:", itinerary)
      
  4. Συλλογή ανατροφοδότησης χρήστη
    • Ο Ταξιδιωτικός Πράκτορας ζητά σχόλια από τον χρήστη σχετικά με τις αρχικές προτάσεις.
    • Παράδειγμα:

      feedback = {
          "liked": ["Louvre Museum"],
          "disliked": ["Eiffel Tower (too crowded)"]
      }
      
  5. Διαδικασία Διορθωτικού RAG
    • Τεχνική διέγερσης: Ο Ταξιδιωτικός Πράκτορας διαμορφώνει νέα ερωτήματα αναζήτησης βάσει της ανατροφοδότησης του χρήστη.
      • Παράδειγμα:

        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"))

Εξήγηση

  1. Αρχικοποίηση (μέθοδος __init__): Η κλάση TravelAgent προφορτώνει ένα λεξικό που περιέχει πληροφορίες σχετικά με δημοφιλείς προορισμούς όπως το Παρίσι, το Τόκιο, η Νέα Υόρκη και το Σίδνεϊ. Αυτό το λεξικό περιλαμβάνει λεπτομέρειες όπως η χώρα, το νόμισμα, η γλώσσα και τα σημαντικά αξιοθέατα για κάθε προορισμό.

  2. Ανάκτηση Πληροφοριών (μέθοδος get_destination_info): Όταν ένας χρήστης ρωτάει για έναν συγκεκριμένο προορισμό, η μέθοδος get_destination_info αντλεί τις σχετικές πληροφορίες από το προφορτωμένο λεξικό πλαισίου.

Με την προφόρτωση του πλαισίου, η εφαρμογή του ταξιδιωτικού πράκτορα μπορεί να απαντήσει γρήγορα σε ερωτήματα χρηστών χωρίς να χρειάζεται να ανακτήσει αυτές τις πληροφορίες από εξωτερική πηγή σε πραγματικό χρόνο. Αυτό κάνει την εφαρμογή πιο αποδοτική και ανταποκρινόμενη.

Εκκίνηση του Σχεδίου με έναν Στόχο Πριν από την Επανάληψη

Η εκκίνηση ενός σχεδίου με έναν στόχο σημαίνει να ξεκινάμε με έναν σαφή αντικειμενικό σκοπό ή επιδιωκόμενο αποτέλεσμα στο μυαλό. Ορίζοντας αυτόν τον στόχο εξαρχής, το μοντέλο μπορεί να τον χρησιμοποιήσει ως καθοδηγητική αρχή καθ’ όλη τη διάρκεια της επαναληπτικής διαδικασίας. Αυτό βοηθά στο να εξασφαλιστεί ότι κάθε επανάληψη φέρνει πιο κοντά στην επίτευξη του επιθυμητού αποτελέσματος, καθιστώντας τη διαδικασία πιο αποδοτική και εστιασμένη.

Εδώ είναι ένα παράδειγμα του πώς μπορείτε να ξεκινήσετε ένα ταξιδιωτικό σχέδιο με έναν στόχο προτού κάνετε επανάληψη για έναν ταξιδιωτικό πράκτορα σε Python:

Σενάριο

Ένας ταξιδιωτικός πράκτορας θέλει να σχεδιάσει ένα προσαρμοσμένο ταξίδι για έναν πελάτη. Ο στόχος είναι να δημιουργηθεί ένα ταξιδιωτικό δρομολόγιο που μεγιστοποιεί την ικανοποίηση του πελάτη βάσει των προτιμήσεων και του προϋπολογισμού του.

Βήματα

  1. Ορίστε τις προτιμήσεις και τον προϋπολογισμό του πελάτη.
  2. Εξεκινήστε το αρχικό σχέδιο βασισμένο σε αυτές τις προτιμήσεις.
  3. Κάντε επανάληψη για να βελτιώσετε το σχέδιο, βελτιστοποιώντας την ικανοποίηση του πελάτη.

Κώδικας 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)

Εξήγηση Κώδικα

  1. Αρχικοποίηση (μέθοδος __init__): Η κλάση TravelAgent αρχικοποιείται με μια λίστα πιθανών προορισμών, ο καθένας με χαρακτηριστικά όπως όνομα, κόστος και τύπο δραστηριότητας.

  2. Εκκίνηση του Σχεδίου (μέθοδος bootstrap_plan): Αυτή η μέθοδος δημιουργεί ένα αρχικό ταξιδιωτικό σχέδιο βάσει των προτιμήσεων και του προϋπολογισμού του πελάτη. Διασχίζει τη λίστα προορισμών και τους προσθέτει στο σχέδιο αν ταιριάζουν με τις προτιμήσεις του πελάτη και εμπίπτουν στον προϋπολογισμό.

  3. Ταύτιση Προτιμήσεων (μέθοδος match_preferences): Αυτή η μέθοδος ελέγχει αν ένας προορισμός ταιριάζει με τις προτιμήσεις του πελάτη.

  4. Επανάληψη του Σχεδίου (μέθοδος iterate_plan): Αυτή η μέθοδος βελτιώνει το αρχικό σχέδιο προσπαθώντας να αντικαταστήσει κάθε προορισμό στο σχέδιο με μια καλύτερη επιλογή, λαμβάνοντας υπόψη τις προτιμήσεις του πελάτη και τους περιορισμούς του προϋπολογισμού.

  5. Υπολογισμός Κόστους (μέθοδος calculate_cost): Αυτή η μέθοδος υπολογίζει το συνολικό κόστος του τρέχοντος σχεδίου, συμπεριλαμβανομένης μιας πιθανής νέας προσθήκης.

Παράδειγμα Χρήσης

Με την εκκίνηση του σχεδίου με έναν σαφή στόχο (π.χ. μεγιστοποίηση της ικανοποίησης του πελάτη) και την επανάληψη για βελτίωση, ο ταξιδιωτικός πράκτορας μπορεί να δημιουργήσει ένα προσαρμοσμένο και βελτιστοποιημένο ταξιδιωτικό δρομολόγιο για τον πελάτη. Αυτή η προσέγγιση εξασφαλίζει ότι το ταξιδιωτικό σχέδιο ευθυγραμμίζεται με τις προτιμήσεις και τον προϋπολογισμό του πελάτη από την αρχή και βελτιώνεται με κάθε επανάληψη.

Χρησιμοποίηση LLM για Επανακατάταξη και Βαθμολόγηση

Τα Μεγάλα Γλωσσικά Μοντέλα (LLMs) μπορούν να χρησιμοποιηθούν για επανακατάταξη και βαθμολόγηση αξιολογώντας τη συνάφεια και την ποιότητα των ανακτώμενων εγγράφων ή των παραγόμενων απαντήσεων. Δείτε πώς λειτουργεί:

Ανάκτηση: Το αρχικό βήμα ανάκτησης φέρνει ένα σύνολο υποψήφιων εγγράφων ή απαντήσεων βάσει του ερωτήματος.

Επανακατάταξη: Το LLM αξιολογεί αυτούς τους υποψήφιους και τους επανακατατάσσει βάσει της συνάφειας και ποιότητας. Αυτό το βήμα διασφαλίζει ότι οι πιο σχετικές και ποιοτικές πληροφορίες παρουσιάζονται πρώτα.

Βαθμολόγηση: Το LLM αναθέτει βαθμολογίες σε κάθε υποψήφιο, που αντανακλούν τη συνάφεια και την ποιότητά τους. Αυτό βοηθά στην επιλογή της καλύτερης απάντησης ή εγγράφου για τον χρήστη.

Με την αξιοποίηση των LLM για επανακατάταξη και βαθμολόγηση, το σύστημα μπορεί να παρέχει πιο ακριβείς και συμφραζόμενα σχετικές πληροφορίες, βελτιώνοντας τη συνολική εμπειρία χρήστη.

Εδώ είναι ένα παράδειγμα του πώς ένας ταξιδιωτικός πράκτορας μπορεί να χρησιμοποιήσει ένα Μεγάλο Γλωσσικό Μοντέλο (LLM) για επανακατάταξη και βαθμολόγηση ταξιδιωτικών προορισμών βάσει προτιμήσεων χρηστών σε Python:

Σενάριο - Ταξίδι βάσει Προτιμήσεων

Ένας ταξιδιωτικός πράκτορας θέλει να προτείνει τους καλύτερους ταξιδιωτικούς προορισμούς σε έναν πελάτη βάσει των προτιμήσεών του. Το LLM θα βοηθήσει στην επανακατάταξη και βαθμολόγηση των προορισμών για να διασφαλίσει ότι παρουσιάζονται οι πιο σχετικές επιλογές.

Βήματα:

  1. Συλλογή προτιμήσεων χρήστη.
  2. Ανάκτηση μιας λίστας πιθανών ταξιδιωτικών προορισμών.
  3. Χρήση του LLM για επανακατάταξη και βαθμολόγηση των προορισμών βάσει των προτιμήσεων του χρήστη.

Δείτε πώς μπορείτε να ενημερώσετε το προηγούμενο παράδειγμα για να χρησιμοποιήσετε τις Υπηρεσίες Azure OpenAI:

Απαιτήσεις

  1. Πρέπει να έχετε συνδρομή στο Azure.
  2. Δημιουργήστε έναν πόρο Azure OpenAI και λάβετε το κλειδί API σας.

Παράδειγμα Κώδικα Python

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)

Εξήγηση Κώδικα - Preference Booker

  1. Αρχικοποίηση: Η κλάση TravelAgent αρχικοποιείται με μια λίστα πιθανών ταξιδιωτικών προορισμών, ο καθένας με χαρακτηριστικά όπως όνομα και περιγραφή.

  2. Απόκτηση Συστάσεων (μέθοδος get_recommendations): Αυτή η μέθοδος δημιουργεί ένα prompt για την υπηρεσία Azure OpenAI βάσει των προτιμήσεων του χρήστη και κάνει ένα HTTP POST αίτημα προς το API του Azure OpenAI για να λάβει επανακατεταγμένους και βαθμολογημένους προορισμούς.

  3. Δημιουργία Prompt (μέθοδος generate_prompt): Αυτή η μέθοδος κατασκευάζει ένα prompt για το Azure OpenAI, συμπεριλαμβάνοντας τις προτιμήσεις του χρήστη και τη λίστα προορισμών. Το prompt καθοδηγεί το μοντέλο να επανακατατάξει και να βαθμολογήσει τους προορισμούς βάσει των παρεχόμενων προτιμήσεων.

  4. Κλήση API: Η βιβλιοθήκη requests χρησιμοποιείται για να κάνει ένα HTTP POST αίτημα στο API του Azure OpenAI. Η απάντηση περιέχει τους επανακατεταγμένους και βαθμολογημένους προορισμούς.

  5. Παράδειγμα Χρήσης: Ο ταξιδιωτικός πράκτορας συλλέγει τις προτιμήσεις του χρήστη (π.χ. ενδιαφέρον για περιηγήσεις και ποικιλία πολιτισμών) και χρησιμοποιεί την υπηρεσία Azure OpenAI για να λάβει επανακατεταγμένες και βαθμολογημένες προτάσεις για ταξιδιωτικούς προορισμούς.

Φροντίστε να αντικαταστήσετε το your_azure_openai_api_key με το πραγματικό κλειδί API του Azure OpenAI και το https://your-endpoint.com/... με τον πραγματικό URL του endpoint της ανάπτυξης Azure OpenAI σας.

Με την αξιοποίηση του LLM για επανακατάταξη και βαθμολόγηση, ο ταξιδιωτικός πράκτορας μπορεί να παρέχει πιο εξατομικευμένες και σχετικές προτάσεις ταξιδιών στους πελάτες, βελτιώνοντας τη συνολική τους εμπειρία.

RAG: Τεχνική Προτροπής έναντι Εργαλείου

Η Ανάκτηση-Ενισχυμένη Γενιά (RAG) μπορεί να είναι τόσο μια τεχνική προτροπής όσο και ένα εργαλείο στην ανάπτυξη πρακτόρων AI. Η κατανόηση της διάκρισης μεταξύ των δύο μπορεί να σας βοηθήσει να αξιοποιήσετε το RAG πιο αποτελεσματικά στα έργα σας.

RAG ως Τεχνική Προτροπής

Τι είναι;

Πώς λειτουργεί:

  1. Διατύπωση Prompts: Δημιουργία καλά δομημένων prompts ή ερωτημάτων βάσει της εργασίας ή της εισόδου του χρήστη.
  2. Ανάκτηση Πληροφοριών: Χρησιμοποιήστε τα prompts για να αναζητήσετε σχετικά δεδομένα από μια προϋπάρχουσα βάση γνώσης ή σύνολο δεδομένων.
  3. Παραγωγή Απάντησης: Συνδυάστε τις ανακτηθείσες πληροφορίες με μοντέλα γεννητικής AI για να παραχθεί μια ολοκληρωμένη και συνεκτική απάντηση.

Παράδειγμα σε ταξιδιωτικό πράκτορα:

RAG ως Εργαλείο

Τι είναι;

Πώς λειτουργεί:

  1. Ενσωμάτωση: Ενσωματώστε το RAG στην αρχιτεκτονική του πράκτορα AI, επιτρέποντάς του να χειρίζεται αυτόματα τις εργασίες ανάκτησης και παραγωγής.
  2. Αυτοματοποίηση: Το εργαλείο διαχειρίζεται ολόκληρη τη διαδικασία, από την λήψη των δεδομένων χρήστη έως την παραγωγή της τελικής απάντησης, χωρίς να απαιτούνται ρητά prompts για κάθε βήμα.
  3. Αποδοτικότητα: Βελτιώνει τις επιδόσεις του πράκτορα απλοποιώντας τη διαδικασία ανάκτησης και παραγωγής, επιτρέποντας πιο γρήγορες και ακριβείς απαντήσεις.

Παράδειγμα σε ταξιδιωτικό πράκτορα:

Σύγκριση

Χαρακτηριστικό Τεχνική Προτροπής Εργαλείο
Χειροκίνητο 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, συμπεριλαμβανομένων πρακτικών παραδειγμάτων και τεχνικών.

Βασικές Έννοιες στην Αξιολόγηση Συνάφειας

  1. Επίγνωση Πλαισίου:
    • Ο πράκτορας πρέπει να κατανοεί το πλαίσιο του ερωτήματος του χρήστη για να ανακτήσει και να παράγει σχετικές πληροφορίες.
    • Παράδειγμα: Αν ένας χρήστης ζητά για “καλύτερα εστιατόρια στο Παρίσι,” ο πράκτορας πρέπει να λάβει υπόψη τις προτιμήσεις του χρήστη, όπως τύπο κουζίνας και προϋπολογισμό.
  2. Ακρίβεια:
    • Οι πληροφορίες που παρέχονται από τον πράκτορα πρέπει να είναι πραγματικά σωστές και ενημερωμένες.
    • Παράδειγμα: Σύσταση για ανοιχτά εστιατόρια με καλές κριτικές αντί για παρωχημένες ή κλειστές επιλογές.
  3. Σκοπός Χρήστη:
    • Ο πράκτορας πρέπει να ερμηνεύει το σκοπό του χρήστη πίσω από το ερώτημα για να δώσει την πιο σχετική πληροφορία.
    • Παράδειγμα: Αν ένας χρήστης ζητά για “ξενοδοχεία με χαμηλό προϋπολογισμό,” ο πράκτορας πρέπει να δίνει προτεραιότητα σε οικονομικές επιλογές.
  4. Επανατροφοδότηση:
    • Η συνεχής συλλογή και ανάλυση ανατροφοδότησης από χρήστες βοηθά τον πράκτορα να βελτιώσει τη διαδικασία αξιολόγησης συνάφειας.
    • Παράδειγμα: Ενσωμάτωση βαθμολογιών και σχολίων από προηγούμενες προτάσεις για τη βελτίωση μελλοντικών απαντήσεων.

Πρακτικές Τεχνικές για Αξιολόγηση Συνάφειας

  1. Βαθμολόγηση Συνάφειας:
    • Ανάθεση σκορ συνάφειας σε κάθε ανακτηθέν στοιχείο βάσει του πόσο καλά ταιριάζει με το ερώτημα και τις προτιμήσεις του χρήστη.
    • Παράδειγμα:

      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
      
  2. Φιλτράρισμα και Κατάταξη:
    • Απομακρύνετε τα μη σχετιζόμενα στοιχεία και κατατάξτε τα υπόλοιπα βάσει των σκορ συνάφειας.
    • Παράδειγμα:

      def filter_and_rank(items, query):
          ranked_items = sorted(items, key=lambda item: relevance_score(item, query), reverse=True)
          return ranked_items[:10]  # Επιστρέψτε τα 10 πιο σχετικά στοιχεία
      
  3. Επεξεργασία Φυσικής Γλώσσας (NLP):
    • Χρησιμοποιήστε τεχνικές NLP για να κατανοήσετε το ερώτημα του χρήστη και να ανακτήσετε σχετικές πληροφορίες.
    • Παράδειγμα:

      def process_query(query):
          # Χρησιμοποιήστε την Επεξεργασία Φυσικής Γλώσσας για να εξαγάγετε βασικές πληροφορίες από το ερώτημα του χρήστη
          processed_query = nlp(query)
          return processed_query
      
  4. Ενσωμάτωση Ανατροφοδότησης Χρήστη:
    • Συλλέξτε ανατροφοδότηση χρηστών σχετικά με τις παρεχόμενες προτάσεις και χρησιμοποιήστε την για να προσαρμόσετε τις μελλοντικές αξιολογήσεις συνάφειας.
    • Παράδειγμα:

      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)

Αναζήτηση με Σκοπό

Η αναζήτηση με σκοπό περιλαμβάνει την κατανόηση και ερμηνεία του υποκείμενου σκοπού ή στόχου πίσω από το ερώτημα ενός χρήστη, για να ανακτηθούν και να παραχθούν οι πιο σχετικές και χρήσιμες πληροφορίες. Αυτή η προσέγγιση ξεπερνά την απλή αντιστοίχιση λέξεων-κλειδιών και εστιάζει στην κατανόηση των πραγματικών αναγκών και του πλαισίου του χρήστη.

Βασικές Έννοιες στην Αναζήτηση με Σκοπό

  1. Κατανόηση του Σκοπού Χρήστη:
    • Ο σκοπός του χρήστη μπορεί να ταξινομηθεί σε τρεις βασικούς τύπους: πληροφοριακός, πλοηγητικός και συναλλακτικός.
      • Πληροφοριακός Σκοπός: Ο χρήστης αναζητά πληροφορίες για ένα θέμα (π.χ. “Ποια είναι τα καλύτερα μουσεία στο Παρίσι;”).
      • Πλοηγητικός Σκοπός: Ο χρήστης θέλει να πλοηγηθεί σε μια συγκεκριμένη ιστοσελίδα ή σελίδα (π.χ. “Επίσημη ιστοσελίδα Μουσείου Λούβρου”).
      • Συναλλακτικός Σκοπός: Ο χρήστης επιδιώκει να πραγματοποιήσει μια συναλλαγή, όπως κράτηση πτήσης ή αγορά (π.χ. “Κράτηση πτήσης για το Παρίσι”).
  2. Επίγνωση Πλαισίου:
    • Η ανάλυση του πλαισίου του ερωτήματος του χρήστη βοηθά στην ακριβή αναγνώριση του σκοπού του. Αυτό περιλαμβάνει την εξέταση προηγούμενων αλληλεπιδράσεων, των προτιμήσεων χρήστη και των συγκεκριμένων λεπτομερειών του τρέχοντος ερωτήματος.
  3. Επεξεργασία Φυσικής Γλώσσας (NLP):
    • Χρησιμοποιούνται τεχνικές NLP για να κατανοήσουν και να ερμηνεύσουν τα φυσικά γλωσσικά ερωτήματα των χρηστών. Αυτό περιλαμβάνει εργασίες όπως αναγνώριση οντοτήτων, ανάλυση συναισθήματος και ανάλυση ερωτήματος.
  4. Προσωποποίηση:
    • Η προσωποποίηση των αποτελεσμάτων αναζήτησης βασισμένη στο ιστορικό, τις προτιμήσεις και την ανατροφοδότηση του χρήστη αυξάνει τη συνάφεια των ανακτημένων πληροφοριών.

Πρακτικό Παράδειγμα: Αναζήτηση με Σκοπό σε Ταξιδιωτικό Πράκτορα

Ας πάρουμε ως παράδειγμα τον Ταξιδιωτικό Πράκτορα για να δούμε πώς μπορεί να υλοποιηθεί η αναζήτηση με σκοπό.

  1. Συλλογή Προτιμήσεων Χρήστη

    class Travel_Agent:
        def __init__(self):
            self.user_preferences = {}
    
        def gather_preferences(self, preferences):
            self.user_preferences = preferences
    
  2. Κατανόηση Σκοπού Χρήστη

    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"
    
  3. Επίγνωση Πλαισίου

    def analyze_context(query, user_history):
        # Συνδυάστε το τρέχον ερώτημα με το ιστορικό χρήστη για να κατανοήσετε το πλαίσιο
        context = {
            "current_query": query,
            "user_history": user_history
        }
        return context
    
  4. Αναζήτηση και Προσωποποίηση Αποτελεσμάτων

    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 προσωποποιημένων αποτελεσμάτων
    
  5. Παράδειγμα Χρήσης

    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)
    

4. Δημιουργία Κώδικα ως Εργαλείο

Οι πράκτορες δημιουργίας κώδικα χρησιμοποιούν μοντέλα Τεχνητής Νοημοσύνης για να γράφουν και να εκτελούν κώδικα, επιλύοντας σύνθετα προβλήματα και αυτοματοποιώντας εργασίες.

Πράκτορες Δημιουργίας Κώδικα

Οι πράκτορες δημιουργίας κώδικα χρησιμοποιούν γενετικά μοντέλα Τεχνητής Νοημοσύνης για να γράφουν και να εκτελούν κώδικα. Αυτοί οι πράκτορες μπορούν να λύσουν σύνθετα προβλήματα, να αυτοματοποιήσουν εργασίες και να προσφέρουν πολύτιμες γνώσεις μέσω της δημιουργίας και εκτέλεσης κώδικα σε διάφορες γλώσσες προγραμματισμού.

Πρακτικές Εφαρμογές

  1. Αυτόματη Δημιουργία Κώδικα: Δημιουργία αποσπασμάτων κώδικα για συγκεκριμένες εργασίες, όπως ανάλυση δεδομένων, web scraping ή μηχανική μάθηση.
  2. SQL ως RAG: Χρήση ερωτημάτων SQL για ανάκτηση και διαχείριση δεδομένων από βάσεις δεδομένων.
  3. Επίλυση Προβλημάτων: Δημιουργία και εκτέλεση κώδικα για επίλυση συγκεκριμένων προβλημάτων, όπως βελτιστοποίηση αλγορίθμων ή ανάλυση δεδομένων.

Παράδειγμα: Πράκτορας Δημιουργίας Κώδικα για Ανάλυση Δεδομένων

Φανταστείτε ότι σχεδιάζετε έναν πράκτορα δημιουργίας κώδικα. Ιδού πώς θα μπορούσε να λειτουργήσει:

  1. Εργασία: Ανάλυση ενός συνόλου δεδομένων για να εντοπιστούν τάσεις και μοτίβα.
  2. Βήματα:
    • Φόρτωση του συνόλου δεδομένων σε εργαλείο ανάλυσης δεδομένων.
    • Δημιουργία ερωτημάτων SQL για φιλτράρισμα και συγκέντρωση των δεδομένων.
    • Εκτέλεση των ερωτημάτων και ανάκτηση των αποτελεσμάτων.
    • Χρήση των αποτελεσμάτων για δημιουργία οπτικοποιήσεων και συμπερασμάτων.
  3. Απαραίτητοι Πόροι: Πρόσβαση στο σύνολο δεδομένων, εργαλεία ανάλυσης δεδομένων και δυνατότητες SQL.
  4. Εμπειρία: Χρήση προηγούμενων αποτελεσμάτων ανάλυσης για βελτίωση της ακρίβειας και της σχετικότητας μελλοντικών αναλύσεων.

Παράδειγμα: Πράκτορας Δημιουργίας Κώδικα για Ταξιδιωτικό Πράκτορα

Σε αυτό το παράδειγμα, θα σχεδιάσουμε έναν πράκτορα δημιουργίας κώδικα, Traveler Agent, για να βοηθά τους χρήστες στον προγραμματισμό των ταξιδιών τους δημιουργώντας και εκτελώντας κώδικα. Αυτός ο πράκτορας μπορεί να χειρίζεται εργασίες όπως η ανάκτηση επιλογών ταξιδιών, το φιλτράρισμα αποτελεσμάτων και η σύνταξη προγράμματος με χρήση γενετικής Τεχνητής Νοημοσύνης.

Επισκόπηση του Πράκτορα Δημιουργίας Κώδικα

  1. Συλλογή Προτιμήσεων Χρήστη: Συλλέγει εισροές χρήστη όπως προορισμό, ημερομηνίες ταξιδιού, προϋπολογισμό και ενδιαφέροντα.
  2. Δημιουργία Κώδικα για Ανάκτηση Δεδομένων: Δημιουργεί αποσπάσματα κώδικα για ανάκτηση δεδομένων σχετικά με πτήσεις, ξενοδοχεία και αξιοθέατα.
  3. Εκτέλεση Δημιουργημένου Κώδικα: Εκτελεί τον δημιουργημένο κώδικα για λήψη πληροφοριών σε πραγματικό χρόνο.
  4. Δημιουργία Προγράμματος Ταξιδιού: Συνθέτει τα ανακτηθέντα δεδομένα σε ένα εξατομικευμένο ταξιδιωτικό πρόγραμμα.
  5. Προσαρμογή Βάσει Ανατροφοδότησης: Λαμβάνει ανατροφοδότηση χρήστη και δημιουργεί εκ νέου κώδικα αν είναι απαραίτητο για να βελτιώσει τα αποτελέσματα.

Υλοποίηση Βήμα προς Βήμα

  1. Συλλογή Προτιμήσεων Χρήστη

    class Travel_Agent:
        def __init__(self):
            self.user_preferences = {}
    
        def gather_preferences(self, preferences):
            self.user_preferences = preferences
    
  2. Δημιουργία Κώδικα για Ανάκτηση Δεδομένων

    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
    
  3. Εκτέλεση Δημιουργημένου Κώδικα

    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)
    
  4. Δημιουργία Προγράμματος Ταξιδιού

    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)
    
  5. Προσαρμογή Βάσει Ανατροφοδότησης

    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)
    

Αξιοποίηση της περιβαλλοντικής επίγνωσης και της λογικής

Βάσει του σχήματος του πίνακα μπορεί πραγματικά να ενισχύσει τη διαδικασία δημιουργίας ερωτημάτων αξιοποιώντας την περιβαλλοντική επίγνωση και τη λογική.

Ακολουθεί ένα παράδειγμα για το πώς μπορεί να γίνει αυτό:

  1. Κατανόηση του Σχήματος: Το σύστημα θα κατανοήσει το σχήμα του πίνακα και θα χρησιμοποιήσει αυτές τις πληροφορίες για να θεμελιώσει τη δημιουργία του ερωτήματος.
  2. Προσαρμογή Βάσει Ανατροφοδότησης: Το σύστημα θα προσαρμόσει τις προτιμήσεις χρήστη βάσει ανατροφοδότησης και θα αναλογιστεί ποια πεδία στο σχήμα χρειάζεται να ενημερωθούν.
  3. Δημιουργία και Εκτέλεση Ερωτημάτων: Το σύστημα θα δημιουργήσει και θα εκτελέσει ερωτήματα για να ανακτήσει ενημερωμένα δεδομένα πτήσεων και ξενοδοχείων βάσει των νέων προτιμήσεων.

Ακολουθεί ένα ενημερωμένο παράδειγμα κώδικα 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)

Επεξήγηση - Κράτηση βάσει Ανατροφοδότησης

  1. Επίγνωση Σχήματος: Το λεξικό schema ορίζει πώς πρέπει να προσαρμόζονται οι προτιμήσεις βάσει της ανατροφοδότησης. Περιλαμβάνει πεδία όπως favorites και avoid, με τις αντίστοιχες προσαρμογές.
  2. Προσαρμογή Προτιμήσεων (adjust_based_on_feedback μέθοδος): Αυτή η μέθοδος προσαρμόζει τις προτιμήσεις βάσει ανατροφοδότησης χρήστη και του σχήματος.
  3. Προσαρμογές με Βάση το Περιβάλλον (adjust_based_on_environment μέθοδος): Αυτή η μέθοδος προσαρμόζει τις ρυθμίσεις με βάση το σχήμα και την ανατροφοδότηση.
  4. Δημιουργία και Εκτέλεση Ερωτημάτων: Το σύστημα δημιουργεί κώδικα για να ανακτήσει ενημερωμένα δεδομένα πτήσεων και ξενοδοχείων βάσει των προσαρμοσμένων προτιμήσεων και προσομοιώνει την εκτέλεσή τους.
  5. Δημιουργία Προγράμματος Ταξιδιού: Το σύστημα δημιουργεί ένα ενημερωμένο πρόγραμμα βάσει των νέων δεδομένων πτήσεων, ξενοδοχείων και αξιοθέατων.

Με το να καθιστά το σύστημα ευαισθητοποιημένο στο περιβάλλον και να σκέφτεται βάσει του σχήματος, μπορεί να δημιουργεί πιο ακριβή και σχετικά ερωτήματα, οδηγώντας σε καλύτερες ταξιδιωτικές προτάσεις και μια πιο εξατομικευμένη εμπειρία χρήστη.

Χρήση του SQL ως Τεχνική Δημιουργίας Βασισμένη σε Ανάκτηση (RAG)

Το SQL (Structured Query Language) είναι ένα ισχυρό εργαλείο για αλληλεπίδραση με βάσεις δεδομένων. Όταν χρησιμοποιείται ως μέρος της προσέγγισης Retrieval-Augmented Generation (RAG), το SQL μπορεί να ανακτήσει σχετικά δεδομένα από βάσεις δεδομένων για να ενημερώσει και να δημιουργήσει απαντήσεις ή δράσεις σε πράκτορες Τεχνητής Νοημοσύνης. Ας εξερευνήσουμε πώς μπορεί να χρησιμοποιηθεί το SQL ως τεχνική RAG στο πλαίσιο του Travel Agent.

Βασικές Έννοιες

  1. Αλληλεπίδραση με Βάση Δεδομένων:
    • Το SQL χρησιμοποιείται για την εκτέλεση ερωτημάτων σε βάσεις δεδομένων, την ανάκτηση σχετικών πληροφοριών και τη διαχείριση των δεδομένων.
    • Παράδειγμα: Ανάκτηση πληροφοριών πτήσεων, ξενοδοχείων και αξιοθέατων από μια ταξιδιωτική βάση δεδομένων.
  2. Ενσωμάτωση με RAG:
    • Τα ερωτήματα SQL δημιουργούνται βάσει των εισροών και προτιμήσεων χρήστη.
    • Τα ανακτημένα δεδομένα χρησιμοποιούνται στη συνέχεια για τη δημιουργία εξατομικευμένων προτάσεων ή ενεργειών.
  3. Δυναμική Δημιουργία Ερωτημάτων:
    • Ο πράκτορας AI δημιουργεί δυναμικά ερωτήματα SQL βάσει του πλαισίου και των αναγκών του χρήστη.
    • Παράδειγμα: Προσαρμογή ερωτημάτων SQL για φιλτράρισμα αποτελεσμάτων βάσει προϋπολογισμού, ημερομηνιών και ενδιαφερόντων.

Εφαρμογές

Παράδειγμα: Πράκτορας ανάλυσης δεδομένων:

  1. Εργασία: Ανάλυση συνόλου δεδομένων για εύρεση τάσεων.
  2. Βήματα:
    • Φόρτωση του συνόλου δεδομένων.
    • Δημιουργία ερωτημάτων SQL για φιλτράρισμα δεδομένων.
    • Εκτέλεση ερωτημάτων και ανάκτηση αποτελεσμάτων.
    • Δημιουργία οπτικοποιήσεων και συμπερασμάτων.
  3. Πόροι: Πρόσβαση σε σύνολα δεδομένων, δυνατότητες SQL.
  4. Εμπειρία: Χρήση προηγούμενων αποτελεσμάτων για βελτίωση μελλοντικών αναλύσεων.

Πρακτικό Παράδειγμα: Χρήση SQL στο Travel Agent

  1. Συλλογή Προτιμήσεων Χρήστη

    class Travel_Agent:
        def __init__(self):
            self.user_preferences = {}
    
        def gather_preferences(self, preferences):
            self.user_preferences = preferences
    
  2. Δημιουργία Ερωτημάτων 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
    
  3. Εκτέλεση Ερωτημάτων 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
    
  4. Δημιουργία Προτάσεων

    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)
    

Παραδείγματα Ερωτημάτων SQL

  1. Ερώτημα Πτήσης

    SELECT * FROM flights WHERE destination='Paris' AND dates='2025-04-01 to 2025-04-10' AND budget='moderate';
    
  2. Ερώτημα Ξενοδοχείου

    SELECT * FROM hotels WHERE destination='Paris' AND budget='moderate';
    
  3. Ερώτημα Αξιοθέατου

    SELECT * FROM attractions WHERE destination='Paris' AND interests='museums, cuisine';
    

Αξιοποιώντας το SQL ως μέρος της τεχνικής Retrieval-Augmented Generation (RAG), οι πράκτορες AI όπως ο Travel Agent μπορούν να ανακτούν δυναμικά και να χρησιμοποιούν σχετικά δεδομένα για να παρέχουν ακριβείς και εξατομικευμένες προτάσεις.

Παράδειγμα Μεταγνωστικής Σκέψης

Για να δείξουμε μια υλοποίηση μεταγνωστικής σκέψης, ας δημιουργήσουμε έναν απλό πράκτορα που αντανακλά στη διαδικασία λήψης αποφάσεών του κατά τη λύση ενός προβλήματος. Για το παράδειγμα αυτό, θα δημιουργήσουμε ένα σύστημα όπου ένας πράκτορας προσπαθεί να βελτιστοποιήσει την επιλογή ξενοδοχείου, αλλά στη συνέχεια αξιολογεί τη δική του λογική και προσαρμόζει τη στρατηγική του όταν κάνει λάθη ή υποβέλτιστες επιλογές.

Θα το προσομοιώσουμε χρησιμοποιώντας ένα βασικό παράδειγμα όπου ο πράκτορας επιλέγει ξενοδοχεία βάσει του συνδυασμού τιμής και ποιότητας, αλλά θα “αντανακλά” στις αποφάσεις του και θα προσαρμόζεται ανάλογα.

Πώς αυτό απεικονίζει τη μεταγνωστική σκέψη:

  1. Αρχική Απόφαση: Ο πράκτορας θα επιλέξει το φθηνότερο ξενοδοχείο, χωρίς να κατανοεί τον αντίκτυπο της ποιότητας.
  2. Αντανακλαστική Αξιολόγηση: Μετά την αρχική επιλογή, ο πράκτορας θα ελέγξει αν το ξενοδοχείο ήταν “κακή” επιλογή χρησιμοποιώντας ανατροφοδότηση χρήστη. Αν διαπιστώσει ότι η ποιότητα του ξενοδοχείου ήταν πολύ χαμηλή, αντανακλά στη λογική του.
  3. Προσαρμογή Στρατηγικής: Ο πράκτορας προσαρμόζει τη στρατηγική του βάσει της αντανακλαστικής του σκέψης, αλλάζοντας από “φθηνότερο” σε “υψηλότερη ποιότητα”, βελτιώνοντας έτσι τη διαδικασία λήψης αποφάσεων σε μελλοντικές επαναλήψεις.

Ιδού ένα παράδειγμα:

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.

Προηγούμενο Μάθημα

Πρότυπο Σχεδίασης Πολυπράκτορα

Επόμενο Μάθημα

Πράκτορες AI στην Παραγωγή


Αποποίηση ευθυνών: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη Co-op Translator. Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.