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

Pos Na Prosthesete Mneme Se Mia Alysida Me Pollaples Eisodous Sto Langchain



Τα chatbot και τα μοντέλα μεγάλων γλωσσών χρησιμοποιούνται από εκατομμύρια σε όλο τον κόσμο και αυτά τα μοντέλα μπορούν να δημιουργήσουν κείμενο κατόπιν εντολής. Το LangChain είναι ένα από τα πιο αποτελεσματικά και αποδοτικά πλαίσια που επιτρέπουν στους προγραμματιστές να δημιουργήσουν τέτοια μοντέλα και bots. Ο χρήστης δίνει προτροπές ή ερωτήματα ως είσοδο και το μοντέλο κατανοεί την εντολή πριν δημιουργήσει το κείμενο που φαίνεται πιο σχετικό ή σαν την εντολή.

Αυτός ο οδηγός θα απεικονίσει τη διαδικασία προσθήκης μνήμης σε μια αλυσίδα με πολλαπλές εισόδους στο LangChain.

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

Η μνήμη μπορεί να προστεθεί στα LLM ή στα chatbot για να αποθηκεύσει τα πιο πρόσφατα μηνύματα ή δεδομένα, ώστε το μοντέλο να μπορεί να κατανοήσει το πλαίσιο της εντολής. Για να μάθετε τη διαδικασία προσθήκης μνήμης σε μια αλυσίδα με πολλαπλές εισόδους στο LangChain, απλώς ακολουθήστε τα παρακάτω βήματα:







Βήμα 1: Εγκατάσταση μονάδων

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



pip install langchain



Εγκαταστήστε το chromadb για να αποθηκεύσετε τα δεδομένα που χρησιμοποιεί η μνήμη στο χώρο αποθήκευσης του διανύσματος Chroma:





pip εγκατάσταση chromadb

Το Tiktoken είναι το tokenizer που χρησιμοποιείται για τη δημιουργία μικρών κομματιών μεγάλων εγγράφων, ώστε να μπορούν να διαχειρίζονται εύκολα:



pip εγκατάσταση tiktoken

Το OpenAI είναι το module που μπορεί να χρησιμοποιηθεί για τη δημιουργία αλυσίδων και LLM χρησιμοποιώντας τη μέθοδο OpenAI():

pip εγκατάσταση openai

Βήμα 2: Ρύθμιση Περιβάλλοντος και Μεταφόρτωση Δεδομένων

Το επόμενο βήμα μετά την εγκατάσταση όλων των απαιτούμενων μονάδων για αυτή τη διαδικασία είναι στήσιμο του περιβάλλοντος χρησιμοποιώντας το κλειδί API από το λογαριασμό OpenAI:

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

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

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

από google. ET AL εισαγωγή αρχεία

ανέβηκε = αρχεία. μεταφόρτωση ( )

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

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

από langchain. ενσωματώσεις . openai εισαγωγή OpenAIEmbeddings

από langchain. ενσωματώσεις . διατηρώ συνέπεια εισαγωγή CohereEmbeddings

από langchain. text_splitter εισαγωγή CharacterTextSplitter

από langchain. διανυσματικά καταστήματα . elastic_vector_search εισαγωγή ElasticVectorSearch

από langchain. διανυσματικά καταστήματα εισαγωγή Χρώμα

από langchain. docstore . έγγραφο εισαγωγή Εγγραφο

Βήμα 4: Δημιουργία μνήμης με χρήση βάσης δεδομένων Chroma

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

με Άνοιξε ( 'state_of_the_union.txt' ) όπως και φά:
state_of_the_union = φά. ανάγνωση ( )
text_splitter = CharacterTextSplitter ( τεμάχιο_μέγεθος = 1000 , chunk_overlap = 0 )
κείμενα = text_splitter. split_text ( state_of_the_union )

ενσωματώσεις = OpenAIEmbeddings ( )

Διαμορφώστε τη βάση δεδομένων Chroma για την αποθήκευση του κειμένου και των ενσωματώσεων από το έγγραφο:

docsearch = Χρώμα. από_κείμενα (

κείμενα , ενσωματώσεις , μεταδεδομένα = [ { 'πηγή' : Εγώ } Για Εγώ σε εύρος ( μόνο ( κείμενα ) ) ]

)

Ελέγξτε τη μνήμη ρωτώντας την εντολή στη μεταβλητή του ερωτήματος και, στη συνέχεια, εκτελέστε τη μέθοδο similarity_search():

ερώτηση = «Πότε δημιουργήθηκε το ΝΑΤΟ»

έγγραφα = docsearch. ομοιότητα_αναζήτησης ( ερώτηση )

Βήμα 5: Διαμόρφωση προτύπου προτροπής

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

από langchain. αλυσίδες . ερώτηση_απάντηση εισαγωγή load_qa_chain

από langchain. llms εισαγωγή OpenAI

από langchain. προτρέπει εισαγωγή PromptTemplate

από langchain. μνήμη εισαγωγή ConversationBufferMemory

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

πρότυπο = '''Είσαι μοντέλο που συνομιλεί με έναν άνθρωπο
Λαμβάνοντας υπόψη τα κομμάτια που εξάγονται από ένα μεγάλο έγγραφο και μια ερώτηση, δημιουργήστε μια τελική απάντηση

{συμφραζόμενα}

{ιστορία}
Άνθρωπος: {input}
Chatbot: '''


προτροπή = PromptTemplate (
input_variables = [ 'ιστορία' , 'εισαγωγή' , 'συμφραζόμενα' ] , πρότυπο = πρότυπο
)
μνήμη = ConversationBufferMemory ( μνήμη_κλειδί = 'ιστορία' , κλειδί_εισόδου = 'εισαγωγή' )
αλυσίδα = load_qa_chain (
OpenAI ( θερμοκρασία = 0 ) , chain_type = 'υλικό' , μνήμη = μνήμη , προτροπή = προτροπή
)

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

Εδώ είναι ο χρόνος για να δοκιμάσετε το μοντέλο θέτοντας την ερώτηση χρησιμοποιώντας τη μεταβλητή query και στη συνέχεια εκτελώντας τη μέθοδο chain() με τις παραμέτρους της:

ερώτηση = «Πότε δημιουργήθηκε το ΝΑΤΟ»

αλυσίδα ( { 'input_documents' : έγγραφα , 'εισαγωγή' : ερώτηση } , επιστροφή_μόνο_εξόδων = Αληθής )

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

Τυπώνω ( αλυσίδα. μνήμη . ρυθμιστής )

Αυτό αφορά την προσθήκη μνήμης σε μια αλυσίδα με πολλαπλές εισόδους στο LangChain.

συμπέρασμα

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