כיצד להוסיף סוג זיכרון מותאם אישית ב-LangChain?

Kyzd Lhwsyp Swg Zykrwn Mwt M Ysyt B Langchain



LangChain משמש כדי להגדיר/לעצב מודלים של שפה או צ'טבוטים שיכולים ליצור אינטראקציה עם בני אדם כמו צ'אט. הודעות צ'אט אלו מקושרות באמצעות שרשראות כפי שהשם LangChain מציע והמשתמש יכול גם לאחסן אותן בזיכרון. ה-LangChain מאפשר למפתחים להשתמש בספריות זיכרון המספקות שימוש במחלקות מובנות או התאמה אישית של הזיכרון שלהם.

מתאר מהיר

פוסט זה יציג:







כיצד להוסיף סוג זיכרון מותאם אישית ב-LangChain



סיכום



כיצד להוסיף סוג זיכרון מותאם אישית ב-LangChain?

הוספת סוג זיכרון מותאם אישית ב-LangChain מאפשרת למשתמש לקבל את מירב הביצועים כמו הזיכרון. המשתמש יכול להגדיר את סוג הזיכרון בהתאם לדרישותיו. כדי להוסיף סוג זיכרון מותאם אישית ב-LangChain, פשוט עברו על השלבים הבאים:





שלב 1: התקנת מסגרות

ראשית, התקן את מסגרת LangChain כדי להתחיל בתהליך של הוספת סוג זיכרון מותאם אישית:

pip להתקין langchain

הפעלת הפקודה לעיל ב-Python Notebook תתקין את התלות עבור ה-LangChain כפי שמוצג בקטע הבא:



התקן את מודול OpenAI כדי לקבל את הספריות שלו שניתן להשתמש בהן כדי להגדיר את ה-LLMs:

pip להתקין openai

מדריך זה ישתמש במסגרת spaCy כדי לעצב את סוג הזיכרון המותאם אישית ב-LangChain והקוד הבא משמש להתקנת המודול:

התקנת pip מרווחת

מודל spaCy משתמש בטבלת ה-hash כדי לאחסן את המידע כתצפית כמו הודעות צ'אט קודמות. הקוד הבא משמש להורדת מודל השפה הגדולה או LLM מספריית spaCy כדי לבנות מודל NLP מתקדם:

! הורדה של python -m spacy en_core_web_lg

מייבא ' אתה ' ו' getpass 'ספריות מיועדות להזנת מפתח ה-API מהחשבון של OpenAI ל להקים את הסביבה שלו :

יְבוּא אתה
יְבוּא getpass

אתה . בְּעֵרֶך [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'מפתח API של OpenAI:' )

שלב 2: ייבוא ​​ספריות

השלב הבא הוא לייבא את הספריות הנדרשות להתאמה אישית של סוג הזיכרון בהתאם למודל הצ'אט:

מ langchain. סכֵימָה יְבוּא BaseMemory

מ langchain. שרשראות יְבוּא ConversationChain

מ פידנטי יְבוּא דגם בסיס

מ langchain. llms יְבוּא OpenAI

מ הקלדה יְבוּא רשימה , דיקט , כל

מייבא את ' spaCy ספריית ' כדי לטעון את ' en_core_web_lg ' מודל ולהקצות אותו ל' nlp משתנה כפי שהוא מודל עיבוד השפה הטבעית:

יְבוּא מרווח

nlp = מרווח. לִטעוֹן ( 'en_core_web_lg' )

שלב 3: בניית זיכרון מותאם אישית

לאחר מכן, פשוט בנה את הזיכרון המותאם אישית באמצעות ארגומנטים BaseMemory ו-BaseModel במחלקה Memory. לאחר מכן, הגדר ישויות (נאספות/מאוחסנות מהנתונים) שניתן לאחסן בזיכרון כמידע מלא או כיחידה אחת. הזיכרון מוגדר להכיל את כל הישויות מהמסמך כדי לייעל את הביצועים של הזיכרון והדגם:

מעמד SpacyEntityMemory ( BaseMemory , דגם בסיס ) :
''' מחלקת זיכרון לאחסון מידע על ישויות'''
ישויות: כתיב = { }
זיכרון_מפתח: str = 'ישויות'
def ברור ( עצמי ) :
עצמי . ישויות = { }
@ תכונה
def זיכרון_משתני ( עצמי ) - > רשימה [ str ] :
''' אתחול המשתנים שסופקו לשאילתה'''
לַחֲזוֹר [ עצמי . זיכרון_מפתח ]
#הגדר את משתני הזיכרון באמצעות הארגומנטים
def load_memory_variables ( עצמי , כניסות: Dict [ str , כל ] ) - > דיקט [ str , str ] :
''' קרא למשתנים עבור הזיכרון, כלומר מפתח ישות'''
דוק = nlp ( תשומות [ רשימה ( תשומות. מפתחות ( ) ) [ 0 ] ] )
#configure ישויות שיישמרו בזיכרון עבור יחידה בודדת
ישויות = [
עצמי . ישויות [ str ( ent ) ] ל ent ב דוק. תוצאות אם str ( ent ) ב עצמי . ישויות
]
לַחֲזוֹר { עצמי . זיכרון_מפתח : ' \n ' . לְהִצְטַרֵף ( ישויות ) }
#define את save_context() כדי להשתמש בזיכרון
def save_context ( עצמי , כניסות: Dict [ str , כל ] , יציאות: Dict [ str , str ] ) - > אף אחד :
'''אחסן תצפית מהצ'אט הזה לזיכרון'''
טֶקסט = תשומות [ רשימה ( תשומות. מפתחות ( ) ) [ 0 ] ]
דוק = nlp ( טֶקסט )
ל ent ב דוק. תוצאות :
ent_str = str ( ent )
אם ent_str ב עצמי . ישויות :
עצמי . ישויות [ ent_str ] + = ו ' \n {טֶקסט}'
אַחֵר :
עצמי . ישויות [ ent_str ] = טֶקסט

שלב 4: הגדרת תבנית הנחיות

לאחר מכן, פשוט הגדר את תבנית ההנחיה שמסבירה את מבנה הקלט שסופק על ידי המשתמש/האדם:

מ langchain. הנחיות . מיידי יְבוּא PromptTemplate

תבנית = '''להלן אינטראקציה בין מכונה לאדם זה אומר שהיא לא יודעת אם המכונה לא יודעת את התשובה המכונה (AI) מספקת פרטים מההקשר שלה ואם היא לא מבינה את התשובה לכל שאלה שהיא פשוט אומר סליחה

מידע על הישות:

{ישויות}

תִקשׁוֹרֶת:

אנושי: {קלט}

AI:'''


מיידי = PromptTemplate ( משתני_קלט = [ 'ישויות' , 'קֶלֶט' ] , תבנית = תבנית )

שלב 5: בדיקת המודל

לפני בדיקת המודל, פשוט הגדר את ה-LLM באמצעות שיטת OpenAI() והגדר את הפונקציה ConversationChain() עם ארגומנטים:

llm = OpenAI ( טֶמפֶּרָטוּרָה = 0 )

שִׂיחָה = ConversationChain (

llm = llm , מיידי = מיידי , מִלוּלִי = נָכוֹן , זיכרון = SpacyEntityMemory ( )

)

תן מידע למודל באמצעות ארגומנט הקלט תוך קריאה למתודה predict() עם משתנה השיחה:

שִׂיחָה. לנבא ( קֶלֶט = 'הריסון אוהב למידת מכונה' )

תְפוּקָה

המודל קלט את המידע ואחסן אותו בזיכרון וגם הציג את השאלה הקשורה למידע להמשך השיחה:

המשתמש יכול להגיב לשאלה מהמודל כדי להוסיף מידע נוסף לזיכרון או לבדוק את הזיכרון על ידי שאילת השאלה על המידע:

שִׂיחָה. לנבא (

קֶלֶט = 'מהו הנושא האהוב על האריסון'

)

הדגם נותן את הפלט על סמך המידע הקודם ומציג אותו על המסך כפי שמראה הקטע הבא:

זה הכל על הוספת סוג זיכרון מותאם אישית ב-LangChain.

סיכום

כדי להוסיף סוג זיכרון מותאם אישית ב-LangChain, פשוט התקן את המודולים הנדרשים לייבוא ​​ספריות כדי לבנות את הזיכרון המותאם אישית. ה- spaCy היא הספרייה החשובה שנמצאת בשימוש במדריך זה כדי להוסיף זיכרון מותאם אישית באמצעות מודל ה-NLP שלו. לאחר מכן, הגדר את הזיכרון המותאם אישית ואת תבנית ההנחיה כדי לתת את המבנה של ממשק הצ'אט. לאחר ביצוע התצורה, פשוט בדוק את הזיכרון של המודל על ידי בקשת מידע הקשור לנתונים מאוחסנים.