سيوضح هذا الدليل عملية إضافة الذاكرة إلى سلسلة ذات مدخلات متعددة في LangChain.
كيفية إضافة ذاكرة إلى سلسلة ذات مدخلات متعددة في LangChain؟
يمكن إضافة الذاكرة إلى LLMs أو chatbots لتخزين أحدث الرسائل أو البيانات حتى يتمكن النموذج من فهم سياق الأمر. لمعرفة عملية إضافة الذاكرة إلى سلسلة ذات مدخلات متعددة في LangChain، ما عليك سوى اتباع الخطوات التالية:
الخطوة 1: تثبيت الوحدات
أولاً، قم بتثبيت إطار عمل LangChain لأنه يحتوي على مجموعة متنوعة من التبعيات لبناء نماذج اللغة:
نقطة تثبيت لانجشين
قم بتثبيت chromadb لتخزين البيانات التي تستخدمها الذاكرة في متجر Chroma Vector:
نقطة تثبيت chromadb
Tiktoken هو الرمز المميز المستخدم لإنشاء أجزاء صغيرة من المستندات الكبيرة بحيث يمكن إدارتها بسهولة:
نقطة تثبيت tiktoken
OpenAI هي الوحدة التي يمكن استخدامها لبناء السلاسل وLLMs باستخدام طريقة OpenAI():
نقطة تثبيت openai
الخطوة 2: إعداد البيئة وتحميل البيانات
الخطوة التالية بعد تثبيت جميع الوحدات المطلوبة لهذه العملية هي تهيئة البيئة باستخدام مفتاح API من حساب OpenAI:
يستورد أنتيستورد com.getpass
أنت . تقريبًا [ 'OPENAI_API_KEY' ] = com.getpass . com.getpass ( 'مفتاح واجهة برمجة تطبيقات OpenAI:' )
قم بتحميل المستندات باستخدام مكتبة الملفات لبناء السلاسل في إطار عمل LangChain:
من جوجل. وآخرون يستورد ملفاتتم الرفع = ملفات. رفع ( )
الخطوة 3: استيراد المكتبات
بمجرد تحميل المستند بنجاح، ما عليك سوى استيراد المكتبات المطلوبة من وحدة Langchain:
من com.langchain. التضمينات . openai يستورد OpenAIEmbeddingsمن com.langchain. التضمينات . التحم يستورد CohereEmbeddings
من com.langchain. text_splitter يستورد CharacterTextSplitter
من com.langchain. com.vectorstores . elastic_vector_search يستورد ElasticVectorSearch
من com.langchain. com.vectorstores يستورد صفاء
من com.langchain. docstore . وثيقة يستورد وثيقة
الخطوة 4: بناء الذاكرة باستخدام قاعدة بيانات Chroma
الآن، ابدأ في إنشاء مساحة متجهة لتخزين التضمينات والرموز المميزة للمستند الذي تم تحميله مسبقًا:
مع يفتح ( 'state_of_the_union.txt' ) مثل F:State_of_the_union = F. يقرأ ( )
text_splitter = CharacterTextSplitter ( حجم قطعة = 1000 , Chunk_overlap = 0 )
النصوص = text_splitter. Split_text ( State_of_the_union )
التضمينات = OpenAIEmbeddings ( )
قم بتكوين قاعدة بيانات Chroma لتخزين النص والتضمينات من المستند:
com.docsearch = صفاء. from_texts (النصوص , التضمينات , البيانات الوصفية = [ { 'مصدر' : أنا } ل أنا في يتراوح ( فقط ( النصوص ) ) ]
)
اختبر الذاكرة عن طريق طرح الأمر في متغير الاستعلام ثم قم بتنفيذ طريقة التشابه_البحث ():
استفسار = 'متى تم تشكيل الناتو'مستندات = com.docsearch. تشابه_بحث ( استفسار )
الخطوة 5: تكوين قالب المطالبة
تشرح هذه الخطوة عملية تكوين القالب للمطالبات عن طريق استيراد المكتبات التالية:
من com.langchain. السلاسل . question_answering يستورد Load_qa_chainمن com.langchain. llms يستورد OpenAI
من com.langchain. حث يستورد قالب موجه
من com.langchain. ذاكرة يستورد ذاكرة المخزن المؤقت للمحادثة
بعد ذلك، ما عليك سوى تكوين القالب أو البنية للاستعلام وتشغيل السلسلة بمجرد إضافة الذاكرة إلى النموذج:
نموذج = '''أنت عارضة أزياء تجري محادثة مع إنسانبالنظر إلى الأجزاء المستخرجة من مستند طويل وسؤال، قم بإنشاء إجابة نهائية
{سياق}
{اصمت}
إنسان: {إدخال}
الشات بوت:'''
اِسْتَدْعَى = قالب موجه (
input_variables = [ 'اصمت' , 'مدخل' , 'سياق' ] , نموذج = نموذج
)
ذاكرة = ذاكرة المخزن المؤقت للمحادثة ( Memory_key = 'اصمت' , input_key = 'مدخل' )
سلسلة = Load_qa_chain (
OpenAI ( درجة حرارة = 0 ) , chain_type = 'أشياء' , ذاكرة = ذاكرة , اِسْتَدْعَى = اِسْتَدْعَى
)
الخطوة 6: اختبار الذاكرة
هذا هو الوقت المناسب لاختبار النموذج عن طريق طرح السؤال باستخدام متغير الاستعلام ثم تنفيذ طريقة chain() مع معلماتها:
استفسار = 'متى تم تشكيل الناتو'سلسلة ( { 'input_documents' : المستندات , 'مدخل' : استفسار } , return_only_outputs = حقيقي )
قم بطباعة البيانات المخزنة في الذاكرة العازلة حيث يتم تخزين الإجابة المقدمة من النموذج مؤخرًا في الذاكرة:
مطبعة ( سلسلة. ذاكرة . متعادل )
يتعلق الأمر كله بإضافة ذاكرة إلى سلسلة ذات مدخلات متعددة في LangChain.
خاتمة
لإضافة ذاكرة إلى سلسلة ذات مدخلات متعددة في LangChain، ما عليك سوى تثبيت الوحدات ومخزن المتجهات لتخزين النص والتضمينات. بعد ذلك، قم بتحميل البيانات/الوثيقة من النظام المحلي ثم قم باستيراد المكتبات المطلوبة لتخزين البيانات لبناء الذاكرة الخاصة بـ LLM. قم بتكوين قالب المطالبة لتخزين أحدث الرسائل في الذاكرة المؤقتة ثم قم بإرسال رسالة نصية إلى السلسلة. لقد تناول هذا الدليل بالتفصيل عملية إضافة الذاكرة إلى سلسلة ذات مدخلات متعددة في LangChain.