إضافة منطق LangChain إلى تطبيق Streamlit الخاص بك
تعلم كيفية دمج LangChain مع Streamlit بناء تطبيق RAG ديناميكي.
لقد تناولنا في الدروس السابقة ماهية LangChain وStreamlit وكيفية عملهما. والآن، حان الوقت لتطبيق هذه المعرفة مباشرةً على تطبيقنا.
تخيل تطبيق Streamlit الخاص بنا كهيكل سيارة، لامع وجديد، لكن بدون محرك. يبدو جيدًا الآن، لكنه لا يؤدي الكثير، أليس كذلك؟ سيكون LangChain هو محركنا، المكون القوي الذي يجعل كل شيء يعمل بسلاسة وكفاءة. يُشبه دمج LangChain في تطبيق Streamlit تفاعل JavaScript مع HTML وCSS في تطوير الويب. يوفر Streamlit البنية الأساسية لواجهة تطبيقنا، مُحددًا عناصر مثل أشرطة التمرير والأزرار وحقول إدخال النصوص، بينما يُضيف LangChain منطقًا ووظائف ديناميكية. يساعدنا ذلك في ربط أجزاء مختلفة من تطبيقنا، ومعالجة البيانات، وإنشاء استجابات بناءً على مدخلات المستخدم.
كيفية إنشاء الدالة الرئيسية لتوليد الاستجابات
سنعرّف دالة تسمىgenerate_response تأخذ هذه الدالة ملفًا مُحمَّلاً، مفتاح API OpenAI ، ونص الاستعلام. تعالج هذه الدالة الملف المُحمَّل، وتقسمه إلى أجزاء، وتُنشئ تمثيلات مضمنة، وتستخدم نموذج استرجاع أسئلة وأجوبة (QA) لإنشاء استجابة. أول ما نحتاج إلى التحقق منه هو ما إذا كانuploaded_file يتم توفيرها. إذا لم يتم توفيرهاNone نقرأ الملف ونفك تشفير محتوياته. تفترض هذه الخطوة أن الملف المرفوع يحتوي على مستند النص الذي نريد معالجته. دعونا نرى كيف سنفعل ذلك:
دعونا نحلل الأمر:
السطر 1: يُعرّف هذا السطر دالة تُسمى
generate_responseيتطلب ذلك ثلاثة حجج:uploaded_file،openai_api_key، وquery_textستقوم هذه الوظيفة بمعالجة الملف الذي تم تحميله باستخدام خدمات OpenAI لإنشاء استجابة لاستعلام المستخدم.السطران 3-4: يتحقق هذان السطران مما إذا كان
uploaded_fileتم توفيرها. إذا تم تحميل ملف (uploaded_fileليسNoneإذا استمرت الدالة في معالجة الملف، وإلا ...