Πώς να προσθέσετε μνήμη τόσο σε έναν πράκτορα όσο και στα εργαλεία του στο LangChain;

Pos Na Prosthesete Mneme Toso Se Enan Praktora Oso Kai Sta Ergaleia Tou Sto Langchain



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

Γρήγορο περίγραμμα

Αυτή η ανάρτηση θα δείξει τα εξής:

Πώς να προσθέσετε μνήμη τόσο σε έναν πράκτορα όσο και στα εργαλεία του στο LangChain;

Η προσθήκη μνήμης στους πράκτορες και τα εργαλεία τους επιτρέπει να λειτουργούν καλύτερα με τη δυνατότητα χρήσης του ιστορικού συνομιλίας του μοντέλου. Με τη μνήμη, ο πράκτορας μπορεί να αποφασίσει αποτελεσματικά ποιο εργαλείο θα αναπτύξει και πότε. Προτιμάται η χρήση του « ReadOnlyMemory ” τόσο για πράκτορες όσο και για εργαλεία, ώστε να μην μπορούν να το τροποποιήσουν. Για να μάθετε τη διαδικασία προσθήκης μνήμης τόσο σε πράκτορες όσο και σε εργαλεία στο LangChain, ακολουθήστε τα βήματα που αναφέρονται:







Βήμα 1: Εγκατάσταση Frameworks

Πρώτα απ 'όλα, εγκαταστήστε το langchain-πειραματικό μονάδα για να πάρει τις εξαρτήσεις της για τη δημιουργία μοντέλων γλώσσας και εργαλείων για τον πράκτορα. Το LangChain πειραματικό είναι το module που λαμβάνει τις εξαρτήσεις για την κατασκευή μοντέλων που χρησιμοποιούνται κυρίως για πειράματα και δοκιμές:



pip install langchain - πειραματικός



Να πάρει το google-αποτελέσματα αναζήτησης ενότητες με τις εξαρτήσεις OpenAI για να λαμβάνετε τις πιο σχετικές απαντήσεις από το διαδίκτυο:





pip install openai google - Αναζήτηση - Αποτελέσματα

Βήμα 2: Ρύθμιση Περιβάλλοντος

Για τη δημιουργία του μοντέλου που λαμβάνει απαντήσεις από το Διαδίκτυο, απαιτείται να ρυθμίσετε τα περιβάλλοντα χρησιμοποιώντας το OpenAI και SerpAPi κλειδιά:



εισαγωγή εσείς
εισαγωγή getpass

εσείς. κατά προσέγγιση [ 'OPENAI_API_KEY' ] = getpass. getpass ( 'Κλειδί OpenAI API:' )
εσείς. κατά προσέγγιση [ 'SERPAPI_API_KEY' ] = getpass. getpass ( 'Κλειδί API Serpapi:' )

Βήμα 3: Εισαγωγή Βιβλιοθηκών

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

από langchain. πράκτορες εισαγωγή ZeroShotAgent , Εργαλείο , AgentExecutor
από langchain. μνήμη εισαγωγή ConversationBufferMemory , ReadOnlySharedMemory
από langchain. llms εισαγωγή OpenAI
#πάρτε τη βιβλιοθήκη Για κατασκευή της αλυσίδας χρησιμοποιώντας LangChain
από langchain. αλυσίδες εισαγωγή LLMCchain
από langchain. προτρέπει εισαγωγή PromptTemplate
#πάρτε τη βιβλιοθήκη Για λήψη πληροφοριών από το διαδίκτυο
από langchain. υπηρεσίες κοινής ωφέλειας εισαγωγή SerpAPIWrapper

Βήμα 4: Προσθήκη ReadOnlyMemory

Διαμορφώστε το πρότυπο ώστε ο πράκτορας να ξεκινήσει με την εκτέλεση εργασιών μόλις ο χρήστης δώσει τα δεδομένα εισόδου. Μετά από αυτό, προσθέστε το 'ConversationBufferMemory()' για να αποθηκεύσετε το ιστορικό συνομιλιών του μοντέλου και να αρχικοποιήσετε το 'ReadOnlyMemory' για τους πράκτορες και τα εργαλεία του:

πρότυπο = '' 'Αυτή είναι μια συνομιλία μεταξύ ενός ανθρώπου και ενός bot:

{chat_history}
#ρυθμίστε τη δομή για την εξαγωγή της ακριβούς και εύκολης περίληψης
Συνοψίστε τη συνομιλία για το {input}:
'
''

προτροπή = PromptTemplate ( input_variables = [ 'εισαγωγή' , 'chat_history' ] , πρότυπο = πρότυπο )
μνήμη = ConversationBufferMemory ( μνήμη_κλειδί = 'chat_history' )
μνήμη μόνο για ανάγνωση = ReadOnlySharedMemory ( μνήμη = μνήμη )
#summary chain για την ενσωμάτωση όλων των στοιχείων Για λήψη της περίληψης της συνομιλίας
σύνοψη_αλυσίδα = LLMCchain (
llm = OpenAI ( ) ,
προτροπή = προτροπή ,
πολύλογος = Αληθής ,
μνήμη = μνήμη μόνο για ανάγνωση ,
)

Βήμα 5: Ρύθμιση εργαλείων

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

Αναζήτηση = SerpAPIWrapper ( )
εργαλεία = [
Εργαλείο (
όνομα = 'Αναζήτηση' ,
func = Αναζήτηση. τρέξιμο ,
περιγραφή = 'κατάλληλες απαντήσεις στα στοχευμένα ερωτήματα σχετικά με τα πρόσφατα γεγονότα' ,
) ,
Εργαλείο (
όνομα = 'Περίληψη' ,
func = σύνοψη_αλυσίδα. τρέξιμο ,
περιγραφή = 'χρήσιμο για τη σύνοψη της συνομιλίας και η εισαγωγή σε αυτό το εργαλείο θα πρέπει να είναι μια συμβολοσειρά, που αντιπροσωπεύει ποιος θα διαβάσει αυτήν τη σύνοψη' ,
) ,
]

Βήμα 6: Δημιουργία του πράκτορα

Διαμορφώστε τον πράκτορα μόλις τα εργαλεία είναι έτοιμα να εκτελέσουν τις απαιτούμενες εργασίες και εξαγάγετε τις απαντήσεις από το διαδίκτυο. Ο ' πρόθεμα Η μεταβλητή ' εκτελείται πριν οι πράκτορες αναθέσουν οποιαδήποτε εργασία στα εργαλεία και το ' κατάληξη ' εκτελείται αφού τα εργαλεία εξαγάγουν την απάντηση:

πρόθεμα = '' 'Κάντε μια συνομιλία με έναν άνθρωπο, απαντώντας στις ακόλουθες ερωτήσεις όσο καλύτερα μπορείτε, έχοντας πρόσβαση στα ακόλουθα εργαλεία:' ''
κατάληξη = '' 'Αρχίζουν!'
#δομή Για ο πράκτορας να αρχίσει να χρησιμοποιεί τα εργαλεία κατά τη χρήση της μνήμης
{ chat_history }
Ερώτηση : { εισαγωγή }
{ agent_scratchpad } '' '

prompt = ZeroShotAgent.create_prompt(
#configure πρότυπα προτροπής για να κατανοήσετε το πλαίσιο της ερώτησης
εργαλεία,
πρόθεμα=πρόθεμα,
επίθημα=επίθημα,
input_variables=['
εισαγωγή ',' chat_history ',' agent_scratchpad '],
)

Μέθοδος 1: Χρήση ReadOnlyMemory

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

Βήμα 1: Χτίζοντας την Αλυσίδα

Το πρώτο βήμα σε αυτή τη μέθοδο είναι η κατασκευή της αλυσίδας και του εκτελεστή για το 'ZeroShotAgent()' με τα επιχειρήματά του. ο 'LLMChain()' χρησιμοποιείται για τη δημιουργία της σύνδεσης μεταξύ όλων των συνομιλιών στο μοντέλο γλώσσας χρησιμοποιώντας τα ορίσματα llm και prompt. Ο πράκτορας χρησιμοποιεί τα llm_chain, tools και verbose ως επιχείρημά του και δημιουργεί agent_chain για να εκτελέσει και τους πράκτορες και τα εργαλεία του με τη μνήμη:

llm_chain = LLMCchain ( llm = OpenAI ( θερμοκρασία = 0 ) , προτροπή = προτροπή )
μέσο = ZeroShotAgent ( llm_chain = llm_chain , εργαλεία = εργαλεία , πολύλογος = Αληθής )
agent_chain = AgentExecutor. from_agent_and_tools (
μέσο = μέσο , εργαλεία = εργαλεία , πολύλογος = Αληθής , μνήμη = μνήμη
)

Βήμα 2: Δοκιμή της αλυσίδας

Καλέστε το agent_chain χρησιμοποιώντας τη μέθοδο run() για να κάνετε την ερώτηση από το διαδίκτυο:

agent_chain. τρέξιμο ( εισαγωγή = 'Τι είναι το LangChain' )

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

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

agent_chain. τρέξιμο ( εισαγωγή = «Ποιος το ανέπτυξε;» )

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

Ο πράκτορας χρησιμοποιεί το εργαλείο(summary_chain) για να εξαγάγει μια σύνοψη όλων των απαντήσεων που είχαν εξαχθεί προηγουμένως χρησιμοποιώντας τη μνήμη του πράκτορα:

agent_chain. τρέξιμο (
εισαγωγή = 'Ευχαριστώ! Συνοψίστε τη συζήτηση, για τα 5 μου χρόνια'
)

Παραγωγή
Η περίληψη των ερωτήσεων που τέθηκαν προηγουμένως έχει εμφανιστεί για ένα παιδί 5 ετών στο ακόλουθο στιγμιότυπο οθόνης:

Βήμα 3: Δοκιμή της μνήμης

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

Τυπώνω ( agent_chain. μνήμη . ρυθμιστής )

Οι συνομιλίες με τη σωστή σειρά τους χωρίς καμία τροποποίηση έχουν εμφανιστεί στο ακόλουθο απόσπασμα:

Μέθοδος 2: Χρήση της ίδιας μνήμης και για τον παράγοντα και για τα εργαλεία

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

Βήμα 1: Χτίζοντας την Αλυσίδα

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

πρότυπο = '' 'Αυτή είναι μια συνομιλία μεταξύ ενός ανθρώπου και ενός bot:

{chat_history}

Γράψτε μια περίληψη της συνομιλίας για το {input}:
'
''
#χτίστε τη δομή της συνομιλίας διεπαφή χρησιμοποιώντας το πρότυπο προτροπής προσθέτοντας τη μνήμη με την αλυσίδα
προτροπή = PromptTemplate ( input_variables = [ 'εισαγωγή' , 'chat_history' ] , πρότυπο = πρότυπο )
μνήμη = ConversationBufferMemory ( μνήμη_κλειδί = 'chat_history' )
σύνοψη_αλυσίδα = LLMCchain (
llm = OpenAI ( ) ,
προτροπή = προτροπή ,
πολύλογος = Αληθής ,
μνήμη = μνήμη ,
)
#χτίστε τα εργαλεία ( αναζήτηση και περίληψη ) Για διαμόρφωση των πρακτόρων
Αναζήτηση = SerpAPIWrapper ( )
εργαλεία = [
Εργαλείο (
όνομα = 'Αναζήτηση' ,
func = Αναζήτηση. τρέξιμο ,
περιγραφή = 'κατάλληλες απαντήσεις στα στοχευμένα ερωτήματα σχετικά με τα πρόσφατα γεγονότα' ,
) ,
Εργαλείο (
όνομα = 'Περίληψη' ,
func = σύνοψη_αλυσίδα. τρέξιμο ,
περιγραφή = 'χρήσιμο για τη λήψη της σύνοψης της συνομιλίας και χρειάζεται η εισαγωγή συμβολοσειράς σε αυτό το εργαλείο που αντιπροσωπεύει ποιος θα διαβάσει αυτήν τη σύνοψη' ,
) ,
]
#εξηγήστε τα βήματα Για ο πράκτορας να χρησιμοποιήσει τα εργαλεία για την εξαγωγή πληροφοριών Για η συνομιλία
πρόθεμα = '' 'Κάντε μια συνομιλία με έναν άνθρωπο, απαντώντας στα ερωτήματα με τον καλύτερο δυνατό τρόπο, έχοντας πρόσβαση στα ακόλουθα εργαλεία:' ''
κατάληξη = '' 'Αρχίζουν!'
#δομή Για ο πράκτορας να αρχίσει να χρησιμοποιεί τα εργαλεία κατά τη χρήση της μνήμης
{ chat_history }
Ερώτηση : { εισαγωγή }
{ agent_scratchpad } '' '

prompt = ZeroShotAgent.create_prompt(
#configure πρότυπα προτροπής για να κατανοήσετε το πλαίσιο της ερώτησης
εργαλεία,
πρόθεμα=πρόθεμα,
επίθημα=επίθημα,
input_variables=['
εισαγωγή ',' chat_history ',' agent_scratchpad '],
)
#ενσωματώστε όλα τα στοιχεία κατά τη δημιουργία του εκτελεστή πράκτορα
llm_chain = LLMChain(llm=OpenAI(θερμοκρασία=0), prompt=prompt)
agent = ZeroShotAgent(llm_chain=llm_chain, tools=tools, verbose=True)
agent_chain = AgentExecutor.from_agent_and_tools(
agent=agent, tools=tools, verbose=True, memory=memory
)

Βήμα 2: Δοκιμή της αλυσίδας

Εκτελέστε τον ακόλουθο κώδικα:

agent_chain. τρέξιμο ( εισαγωγή = 'Τι είναι το LangChain' )

Η απάντηση εμφανίζεται με επιτυχία και αποθηκεύεται στη μνήμη:

Κάντε την επόμενη ερώτηση χωρίς να δώσετε μεγάλο μέρος του πλαισίου:

agent_chain. τρέξιμο ( εισαγωγή = «Ποιος το ανέπτυξε;» )

Ο πράκτορας χρησιμοποιεί τη μνήμη για να κατανοήσει την ερώτηση μεταμορφώνοντάς την και στη συνέχεια εκτυπώνει την απάντηση:

Λάβετε τη σύνοψη της συνομιλίας χρησιμοποιώντας τη μνήμη που είναι συνδεδεμένη στον πράκτορα:

agent_chain. τρέξιμο (
εισαγωγή = 'Ευχαριστώ! Συνοψίστε τη συζήτηση, για τα 5 μου χρόνια'
)

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

Βήμα 3: Δοκιμή της μνήμης

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

Τυπώνω ( agent_chain. μνήμη . ρυθμιστής )

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

Αυτα για τωρα.

συμπέρασμα

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