מדריך זה ימחיש את התהליך של הוספת זיכרון לשרשרת עם מספר כניסות ב-LangChain.
כיצד להוסיף זיכרון לשרשרת עם מספר כניסות ב-LangChain?
ניתן להוסיף את הזיכרון ל-LLMs או Chatbots כדי לאחסן את ההודעות או הנתונים העדכניים ביותר, כך שהמודל יוכל להבין את ההקשר של הפקודה. כדי ללמוד את התהליך של הוספת זיכרון לשרשרת עם מספר כניסות ב-LangChain, פשוט עברו על השלבים הבאים:
שלב 1: התקן מודולים
ראשית, התקן את מסגרת LangChain מכיוון שיש לה מגוון תלות לבניית מודלים של שפה:
pip להתקין langchain
התקן את chromadb כדי לאחסן את הנתונים המשמשים את הזיכרון במאגר הווקטורים של Chroma:
pip להתקין chromadb
Tiktoken הוא הטוקנייזר המשמש ליצירת נתחים קטנים של מסמכים גדולים כך שניתן לנהל אותם בקלות:
pip להתקין tiktoken
OpenAI הוא המודול שניתן להשתמש בו לבניית רשתות ו-LLMs בשיטת OpenAI():
pip להתקין openai
שלב 2: הגדר את הסביבה והעלאת נתונים
השלב הבא לאחר התקנת כל המודולים הנדרשים לתהליך זה הוא הקמת הסביבה באמצעות מפתח ה-API מחשבון OpenAI:
יְבוּא אתהיְבוּא getpass
אתה . בְּעֵרֶך [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'מפתח API של OpenAI:' )
העלה את המסמכים באמצעות ספריית הקבצים לבניית השרשראות במסגרת LangChain:
מ גוגל. ET AL יְבוּא קבציםהועלה = קבצים. להעלות ( )
שלב 3: ייבוא ספריות
לאחר העלאת המסמך בהצלחה, פשוט ייבא את הספריות הנדרשות ממודול Langchain:
מ langchain. הטבעות . openai יְבוּא OpenAIEbeddingsמ langchain. הטבעות . לִדבּוֹק יָחָד יְבוּא Cohere Embeddings
מ langchain. text_splitter יְבוּא CharacterTextSplitter
מ langchain. חנויות וקטורים . חיפוש_וקטור אלסטי יְבוּא ElasticVectorSearch
מ langchain. חנויות וקטורים יְבוּא Chroma
מ langchain. דוקסטור . מסמך יְבוּא מסמך
שלב 4: בניית זיכרון באמצעות מאגר נתונים Chroma
כעת, התחל לבנות את המרחב הווקטורי כדי לאחסן את ההטמעות והאסימונים של המסמך שהועלה קודם לכן:
עם לִפְתוֹחַ ( 'state_of_the_union.txt' ) כפי ש ו:מצב האומה = ו. לקרוא ( )
text_splitter = CharacterTextSplitter ( chunk_size = 1000 , chunk_overlap = 0 )
טקסטים = text_splitter. split_text ( מצב האומה )
הטבעות = OpenAIEbeddings ( )
הגדר את מסד הנתונים של Chroma לאחסון הטקסט וההטבעות מהמסמך:
docsearch = Chroma. from_texts (טקסטים , הטבעות , מטא נתונים = [ { 'מָקוֹר' : אני } ל אני ב טווח ( רק ( טקסטים ) ) ]
)
בדוק את הזיכרון על ידי שאילת הפקודה במשתנה השאילתה ולאחר מכן הפעל את שיטת similarity_search():
שאילתא = 'מתי הוקמה נאט'ו'מסמכים = docsearch. חיפוש_דמיון ( שאילתא )
שלב 5: הגדרת תבנית הנחיות
שלב זה מסביר את תהליך קביעת התצורה של התבנית עבור ההנחיות על ידי ייבוא הספריות הבאות:
מ langchain. שרשראות . שאלה_תשובה יְבוּא load_qa_chainמ langchain. llms יְבוּא OpenAI
מ langchain. הנחיות יְבוּא PromptTemplate
מ langchain. זיכרון יְבוּא ConversationBufferMemory
לאחר מכן, פשוט הגדר את התבנית או המבנה עבור השאילתה והפעל את השרשרת לאחר הוספת הזיכרון למודל:
תבנית = '''את דוגמנית שמדברת עם בן אדםבהתחשב בנתחים שחולצו ממסמך ארוך ושאלה, צור תשובה סופית
{הֶקשֵׁר}
{היסט}
אנושי: {קלט}
צ'אטבוט:'''
מיידי = PromptTemplate (
משתני_קלט = [ 'היסט' , 'קֶלֶט' , 'הֶקשֵׁר' ] , תבנית = תבנית
)
זיכרון = ConversationBufferMemory ( זיכרון_מפתח = 'היסט' , input_key = 'קֶלֶט' )
שַׁרשֶׁרֶת = load_qa_chain (
OpenAI ( טֶמפֶּרָטוּרָה = 0 ) , סוג_שרשרת = 'דברים' , זיכרון = זיכרון , מיידי = מיידי
)
שלב 6: בדיקת הזיכרון
זה הזמן לבדוק את המודל על ידי שאילת השאלה באמצעות משתנה השאילתה ולאחר מכן ביצוע שיטת chain() עם הפרמטרים שלה:
שאילתא = 'מתי הוקמה נאט'ו'שַׁרשֶׁרֶת ( { 'מסמכי_קלט' : מסמכים , 'קֶלֶט' : שאילתא } , החזר_בלבד_פלטים = נָכוֹן )
הדפס את הנתונים המאוחסנים בזיכרון המאגר שכן התשובה שניתנה על ידי המודל מאוחסנת לאחרונה בזיכרון:
הדפס ( שַׁרשֶׁרֶת. זיכרון . בַּלָם )
זה הכל על הוספת זיכרון לשרשרת עם כניסות מרובות ב-LangChain.
סיכום
כדי להוסיף זיכרון לשרשרת עם מספר כניסות ב-LangChain, פשוט התקן את המודולים ומאגר הווקטורים כדי לאחסן את הטקסט וההטבעות. לאחר מכן, העלה את הנתונים/מסמך מהמערכת המקומית ולאחר מכן ייבא את הספריות הנדרשות לאחסון הנתונים לבניית הזיכרון עבור ה-LLM. הגדר את תבנית ההנחיה לאחסן את ההודעות העדכניות ביותר בזיכרון המאגר ולאחר מכן הוסף טקסט לשרשרת. מדריך זה הרחיב את התהליך של הוספת זיכרון לשרשרת עם מספר כניסות ב-LangChain.