كيفية إضافة ذاكرة إلى سلسلة ذات مدخلات متعددة في LangChain؟

Kyfyt Adaft Dhakrt Aly Slslt Dhat Mdkhlat Mt Ddt Fy Langchain



يتم استخدام Chatbots ونماذج اللغات الكبيرة من قبل الملايين في جميع أنحاء العالم ويمكن لهذه النماذج إنشاء نص عند الطلب. يعد LangChain أحد أكثر الأطر فعالية وكفاءة والتي تمكن المطورين من بناء مثل هذه النماذج والروبوتات. يقدم المستخدم مطالبات أو استعلامات كمدخلات ويفهم النموذج الأمر قبل إنشاء النص الذي يبدو أكثر صلة بالأمر أو يشبهه.

سيوضح هذا الدليل عملية إضافة الذاكرة إلى سلسلة ذات مدخلات متعددة في 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.