logo
0
0
WeChat Login
amynic<amynic@users.noreply.github.com>
🌐 Update translations via Co-op Translator

Πώς να Σχεδιάσετε Καλούς Πράκτορες AI

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

Σχέδιο Σχεδιασμού Χρήσης Εργαλείων

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

Εισαγωγή

Σε αυτό το μάθημα, θα προσπαθήσουμε να απαντήσουμε στις παρακάτω ερωτήσεις:

  • Τι είναι το σχέδιο σχεδιασμού χρήσης εργαλείων;
  • Σε ποιες περιπτώσεις χρήσης μπορεί να εφαρμοστεί;
  • Ποια είναι τα στοιχεία/δομικά μπλοκ που απαιτούνται για την υλοποίηση του σχεδίου σχεδιασμού;
  • Ποιες είναι οι ειδικές εκτιμήσεις για τη χρήση του Σχεδίου Σχεδιασμού Χρήσης Εργαλείων για τη δημιουργία αξιόπιστων πρακτόρων AI;

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

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

  • Ορίσετε το Σχέδιο Σχεδιασμού Χρήσης Εργαλείων και τον σκοπό του.
  • Αναγνωρίσετε περιπτώσεις χρήσης όπου το Σχέδιο Σχεδιασμού Χρήσης Εργαλείων είναι εφαρμόσιμο.
  • Κατανοήσετε τα βασικά στοιχεία που απαιτούνται για την υλοποίηση του σχεδίου σχεδιασμού.
  • Αναγνωρίσετε εκτιμήσεις για τη διασφάλιση της αξιοπιστίας στους πράκτορες AI που χρησιμοποιούν αυτό το σχέδιο σχεδιασμού.

Τι είναι το Σχέδιο Σχεδιασμού Χρήσης Εργαλείων;

Το Σχέδιο Σχεδιασμού Χρήσης Εργαλείων επικεντρώνεται στο να δώσει στα LLMs τη δυνατότητα να αλληλεπιδρούν με εξωτερικά εργαλεία για την επίτευξη συγκεκριμένων στόχων. Τα εργαλεία είναι κώδικας που μπορεί να εκτελεστεί από έναν πράκτορα για να πραγματοποιήσει ενέργειες. Ένα εργαλείο μπορεί να είναι μια απλή συνάρτηση, όπως ένας υπολογιστής, ή μια κλήση API σε μια υπηρεσία τρίτου μέρους, όπως η αναζήτηση τιμών μετοχών ή η πρόβλεψη καιρού. Στο πλαίσιο των πρακτόρων AI, τα εργαλεία σχεδιάζονται για να εκτελούνται από πράκτορες σε απάντηση σε κλήσεις συναρτήσεων που δημιουργούνται από το μοντέλο.

Σε ποιες περιπτώσεις χρήσης μπορεί να εφαρμοστεί;

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

  • Δυναμική Ανάκτηση Πληροφοριών: Οι πράκτορες μπορούν να κάνουν ερωτήματα σε εξωτερικά APIs ή βάσεις δεδομένων για να ανακτήσουν ενημερωμένα δεδομένα (π.χ., ερώτημα σε βάση δεδομένων SQLite για ανάλυση δεδομένων, ανάκτηση τιμών μετοχών ή πληροφοριών καιρού).
  • Εκτέλεση και Ερμηνεία Κώδικα: Οι πράκτορες μπορούν να εκτελούν κώδικα ή σενάρια για να λύσουν μαθηματικά προβλήματα, να δημιουργήσουν αναφορές ή να πραγματοποιήσουν προσομοιώσεις.
  • Αυτοματοποίηση Ροών Εργασίας: Αυτοματοποίηση επαναλαμβανόμενων ή πολυβηματικών ροών εργασίας με την ενσωμάτωση εργαλείων όπως προγραμματιστές εργασιών, υπηρεσίες email ή αγωγούς δεδομένων.
  • Υποστήριξη Πελατών: Οι πράκτορες μπορούν να αλληλεπιδρούν με συστήματα CRM, πλατφόρμες εισιτηρίων ή βάσεις γνώσεων για να επιλύουν ερωτήματα χρηστών.
  • Δημιουργία και Επεξεργασία Περιεχομένου: Οι πράκτορες μπορούν να αξιοποιούν εργαλεία όπως ελεγκτές γραμματικής, συνοψιστές κειμένων ή αξιολογητές ασφάλειας περιεχομένου για να βοηθήσουν σε εργασίες δημιουργίας περιεχομένου.

Ποια είναι τα στοιχεία/δομικά μπλοκ που απαιτούνται για την υλοποίηση του σχεδίου σχεδιασμού χρήσης εργαλείων;

Αυτά τα δομικά μπλοκ επιτρέπουν στον πράκτορα AI να εκτελεί ένα ευρύ φάσμα εργασιών. Ας δούμε τα βασικά στοιχεία που απαιτούνται για την υλοποίηση του Σχεδίου Σχεδιασμού Χρήσης Εργαλείων:

  • Σχήματα Συναρτήσεων/Εργαλείων: Λεπτομερείς ορισμοί των διαθέσιμων εργαλείων, συμπεριλαμβανομένων του ονόματος της συνάρτησης, του σκοπού, των απαιτούμενων παραμέτρων και των αναμενόμενων εξόδων. Αυτά τα σχήματα επιτρέπουν στο LLM να κατανοήσει ποια εργαλεία είναι διαθέσιμα και πώς να κατασκευάσει έγκυρα αιτήματα.

  • Λογική Εκτέλεσης Συναρτήσεων: Καθορίζει πώς και πότε καλούνται τα εργαλεία με βάση την πρόθεση του χρήστη και το πλαίσιο της συνομιλίας. Αυτό μπορεί να περιλαμβάνει μονάδες σχεδιασμού, μηχανισμούς δρομολόγησης ή συνθήκες που καθορίζουν τη χρήση εργαλείων δυναμικά.

  • Σύστημα Διαχείρισης Μηνυμάτων: Συστατικά που διαχειρίζονται τη ροή της συνομιλίας μεταξύ εισόδων χρηστών, απαντήσεων LLM, κλήσεων εργαλείων και εξόδων εργαλείων.

  • Πλαίσιο Ενσωμάτωσης Εργαλείων: Υποδομή που συνδέει τον πράκτορα με διάφορα εργαλεία, είτε είναι απλές συναρτήσεις είτε σύνθετες εξωτερικές υπηρεσίες.

  • Διαχείριση Σφαλμάτων & Επικύρωση: Μηχανισμοί για τη διαχείριση αποτυχιών στην εκτέλεση εργαλείων, την επικύρωση παραμέτρων και τη διαχείριση απροσδόκητων απαντήσεων.

  • Διαχείριση Κατάστασης: Παρακολουθεί το πλαίσιο της συνομιλίας, προηγούμενες αλληλεπιδράσεις εργαλείων και επίμονα δεδομένα για να διασφαλίσει τη συνέπεια σε πολυγυρισμένες αλληλεπιδράσεις.

Στη συνέχεια, ας δούμε την Κλήση Συναρτήσεων/Εργαλείων με περισσότερες λεπτομέρειες.

Κλήση Συναρτήσεων/Εργαλείων

Η κλήση συναρτήσεων είναι ο κύριος τρόπος με τον οποίο επιτρέπουμε στα Μεγάλα Γλωσσικά Μοντέλα (LLMs) να αλληλεπιδρούν με εργαλεία. Συχνά θα δείτε τους όρους 'Συνάρτηση' και 'Εργαλείο' να χρησιμοποιούνται εναλλακτικά, επειδή οι 'συναρτήσεις' (μπλοκ επαναχρησιμοποιήσιμου κώδικα) είναι τα 'εργαλεία' που χρησιμοποιούν οι πράκτορες για να εκτελούν εργασίες. Για να κληθεί ο κώδικας μιας συνάρτησης, το LLM πρέπει να συγκρίνει το αίτημα του χρήστη με την περιγραφή της συνάρτησης. Για να γίνει αυτό, ένα σχήμα που περιέχει τις περιγραφές όλων των διαθέσιμων συναρτήσεων αποστέλλεται στο LLM. Το LLM στη συνέχεια επιλέγει την πιο κατάλληλη συνάρτηση για την εργασία και επιστρέφει το όνομά της και τα επιχειρήματα. Η επιλεγμένη συνάρτηση καλείται, η απάντησή της αποστέλλεται πίσω στο LLM, το οποίο χρησιμοποιεί τις πληροφορίες για να απαντήσει στο αίτημα του χρήστη.

Για να υλοποιήσουν οι προγραμματιστές την κλήση συναρτήσεων για πράκτορες, θα χρειαστείτε:

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

Ας χρησιμοποιήσουμε το παράδειγμα της λήψης της τρέχουσας ώρας σε μια πόλη για να το εξηγήσουμε:

  1. Αρχικοποίηση ενός LLM που υποστηρίζει την κλήση συναρτήσεων:

    Δεν υποστηρίζουν όλα τα μοντέλα την κλήση συναρτήσεων, οπότε είναι σημαντικό να ελέγξετε αν το LLM που χρησιμοποιείτε το κάνει. Το Azure OpenAI υποστηρίζει την κλήση συναρτήσεων. Μπορούμε να ξεκινήσουμε με την έναρξη του Azure OpenAI client.

    # Initialize the Azure OpenAI client
    client = AzureOpenAI(
        azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
        api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
        api_version="2024-05-01-preview"
    )
    
  2. Δημιουργία Σχήματος Συνάρτησης:

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

    # Function description for the model to read
    tools = [
        {
            "type": "function",
            "function": {
                "name": "get_current_time",
                "description": "Get the current time in a given location",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "location": {
                            "type": "string",
                            "description": "The city name, e.g. San Francisco",
                        },
                    },
                    "required": ["location"],
                },
            }
        }
    ]
    
    
    # Initial user message
    messages = [{"role": "user", "content": "What's the current time in San Francisco"}] 
    
    # First API call: Ask the model to use the function
      response = client.chat.completions.create(
          model=deployment_name,
          messages=messages,
          tools=tools,
          tool_choice="auto",
      )
    
      # Process the model's response
      response_message = response.choices[0].message
      messages.append(response_message)
    
      print("Model's response:")  
    
      print(response_message)
    
    
    Model's response:
    ChatCompletionMessage(content=None, role='assistant', function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_pOsKdUlqvdyttYB67MOj434b', function=Function(arguments='{"location":"San Francisco"}', name='get_current_time'), type='function')])
    
  3. Ο κώδικας της συνάρτησης που απαιτείται για την εκτέλεση της εργασίας:

    Τώρα που το LLM έχει επιλέξει ποια συνάρτηση πρέπει να εκτελεστεί, ο κώδικας που εκτελεί την εργασία πρέπει να υλοποιηθεί και να εκτελεστεί. Μπορούμε να υλοποιήσουμε τον κώδικα για να πάρουμε την τρέχουσα ώρα σε Python. Θα χρειαστεί επίσης να γράψουμε τον κώδικα για να εξάγουμε το όνομα και τα επιχειρήματα από το response_message για να πάρουμε το τελικό αποτέλεσμα.

      def get_current_time(location):
        """Get the current time for a given location"""
        print(f"get_current_time called with location: {location}")  
        location_lower = location.lower()
        
        for key, timezone in TIMEZONE_DATA.items():
            if key in location_lower:
                print(f"Timezone found for {key}")  
                current_time = datetime.now(ZoneInfo(timezone)).strftime("%I:%M %p")
                return json.dumps({
                    "location": location,
                    "current_time": current_time
                })
      
        print(f"No timezone data found for {location_lower}")  
        return json.dumps({"location": location, "current_time": "unknown"})
    
    # Handle function calls
     if response_message.tool_calls:
         for tool_call in response_message.tool_calls:
             if tool_call.function.name == "get_current_time":
    
                 function_args = json.loads(tool_call.function.arguments)
    
                 time_response = get_current_time(
                     location=function_args.get("location")
                 )
    
                 messages.append({
                     "tool_call_id": tool_call.id,
                     "role": "tool",
                     "name": "get_current_time",
                     "content": time_response,
                 })
     else:
         print("No tool calls were made by the model.")  
    
     # Second API call: Get the final response from the model
     final_response = client.chat.completions.create(
         model=deployment_name,
         messages=messages,
     )
    
     return final_response.choices[0].message.content
    
     get_current_time called with location: San Francisco
     Timezone found for san francisco
     The current time in San Francisco is 09:24 AM.
    

Η Κλήση Συναρτήσεων βρίσκεται στην καρδιά του σχεδιασμού χρήσης εργαλείων για πράκτορες, αν και η υλοποίησή της από την αρχή μπορεί μερικές φορές να είναι δύσκολη. Όπως μάθαμε στο Μάθημα 2, τα agentic frameworks μας παρέχουν προ-κατασκευασμένα δομικά μπλοκ για την υλοποίηση της χρήσης εργαλείων.

Παραδείγματα Χρήσης Εργαλείων με Agentic Frameworks

Ακολουθούν μερικά παραδείγματα για το πώς μπορείτε να υλοποιήσετε το Σχέδιο Σχεδιασμού Χρήσης Εργαλείων χρησιμοποιώντας διαφορετικά agentic frameworks:

Semantic Kernel

Το Semantic Kernel είναι ένα ανοιχτού κώδικα AI framework για προγραμματιστές .NET, Python και Java που εργάζονται με Μεγάλα Γλωσσικά Μοντέλα (LLMs). Απλοποιεί τη διαδικασία χρήσης κλήσεων συναρτήσεων περιγράφοντας αυτόματα τις συναρτήσεις σας και τις παραμέτρους τους στο μοντέλο μέσω μιας διαδικασίας που ονομάζεται serializing. Διαχειρίζεται επίσης την επικοινωνία μεταξύ του μοντέλου και του κώδικά σας. Ένα άλλο πλεονέκτημα της χρήσης ενός agentic framework όπως το Semantic Kernel είναι ότι σας επιτρέπει να έχετε πρόσβαση σε προ-κατασκευασμένα εργαλεία όπως το File Search και το Code Interpreter.

Το παρακάτω διάγραμμα απεικονίζει τη διαδικασία κλήσης συναρτήσεων με το Semantic Kernel:

function calling

Στο Semantic Kernel οι συναρτήσεις/εργαλεία ονομάζονται Plugins. Μπορούμε να μετατρέψουμε τη συνάρτηση get_current_time που είδαμε νωρίτερα σε plugin μετατρέποντάς την σε κλάση με τη συνάρτηση μέσα της. Μπορούμε επίσης να εισάγουμε τον διακοσμητή kernel_function, ο οποίος λαμβάνει την περιγραφή της συνάρτησης. Όταν στη συνέχεια δημιουργείτε έναν kernel με το GetCurrentTimePlugin, ο kernel θα κάνει αυτόματα serialize τη συνάρτηση και τις παραμέτρους της, δημιουργώντας το σχήμα για αποστολή στο LLM στη διαδικασία.

from semantic_kernel.functions import kernel_function

class GetCurrentTimePlugin:
    async def __init__(self, location):
        self.location = location

    @kernel_function(
        description="Get the current time for a given location"
    )
    def get_current_time(location: str = ""):
        ...

from semantic_kernel import Kernel

# Create the kernel
kernel = Kernel()

# Create the plugin
get_current_time_plugin = GetCurrentTimePlugin(location)

# Add the plugin to the kernel
kernel.add_plugin(get_current_time_plugin)

Azure AI Agent Service

Η Azure AI Agent Service είναι ένα νεότερο agentic framework που έχει σχεδιαστεί για να δίνει τη δυνατότητα στους προγραμματιστές να δημιουργούν, να αναπτύσσουν και να κλιμακώνουν υψηλής ποιότητας και επεκτάσιμους πράκτορες AI με ασφάλεια, χωρίς να χρειάζεται να διαχειρίζονται τους υποκείμενους πόρους υπολογισμού και αποθήκευσης. Είναι ιδιαίτερα χρήσιμο για εφαρμογές επιχειρήσεων, καθώς είναι μια πλήρως διαχειριζόμενη υπηρεσία με ασφάλεια επιπέδου επιχείρησης.

Σε σύγκριση με την ανάπτυξη με το LLM API απευθείας, η Azure AI Agent Service παρέχει ορισμένα πλεονεκτήματα, όπως:

  • Αυτόματη κλήση εργαλείων – δεν χρειάζεται να αναλύσετε μια κλήση εργαλείου, να καλέσετε το εργαλείο και να διαχειριστείτε την απάντηση· όλα αυτά γίνονται πλέον από την πλευρά του διακομιστή.
  • Διαχειριζόμενα δεδομένα με ασφάλεια – αντί να διαχειρίζεστε τη δική σας κατάσταση συνομιλίας, μπορείτε να βασιστείτε σε threads για να αποθηκεύσετε όλες τις απαραίτητες πληροφορίες.
  • Εργαλεία έτοιμα προς χρήση – Εργαλεία που μπορείτε να χρησιμοποιήσετε για να αλληλεπιδράσετε με τις πηγές δεδομένων σας, όπως το Bing, το Azure AI Search και οι Azure Functions.

Τα εργαλεία που είναι διαθέσιμα στην Azure AI Agent Service μπορούν να χωριστούν σε δύο κατηγορίες:

  1. Εργαλεία Γνώσης:

Πρόσθετοι Πόροι

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

Κατανόηση Σχεδιαστικών Προτύπων Πρακτόρων

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

Agentic RAG


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