Search⌘ K
AI Features

إضافة منطق LangChain إلى تطبيق Streamlit الخاص بك

تعلم كيفية دمج LangChain مع Streamlit بناء تطبيق RAG ديناميكي.

لقد تناولنا في الدروس السابقة ماهية LangChain وStreamlit وكيفية عملهما. والآن، حان الوقت لتطبيق هذه المعرفة مباشرةً على تطبيقنا.

تخيل تطبيق Streamlit الخاص بنا كهيكل سيارة، لامع وجديد، لكن بدون محرك. يبدو جيدًا الآن، لكنه لا يؤدي الكثير، أليس كذلك؟ سيكون LangChain هو محركنا، المكون القوي الذي يجعل كل شيء يعمل بسلاسة وكفاءة. يُشبه دمج LangChain في تطبيق Streamlit تفاعل JavaScript مع HTML وCSS في تطوير الويب. يوفر Streamlit البنية الأساسية لواجهة تطبيقنا، مُحددًا عناصر مثل أشرطة التمرير والأزرار وحقول إدخال النصوص، بينما يُضيف LangChain منطقًا ووظائف ديناميكية. يساعدنا ذلك في ربط أجزاء مختلفة من تطبيقنا، ومعالجة البيانات، وإنشاء استجابات بناءً على مدخلات المستخدم.

كيفية إنشاء الدالة الرئيسية لتوليد الاستجابات

سنعرّف دالة تسمىgenerate_response تأخذ هذه الدالة ملفًا مُحمَّلاً، مفتاح API OpenAI ، ونص الاستعلام. تعالج هذه الدالة الملف المُحمَّل، وتقسمه إلى أجزاء، وتُنشئ تمثيلات مضمنة، وتستخدم نموذج استرجاع أسئلة وأجوبة (QA) لإنشاء استجابة. أول ما نحتاج إلى التحقق منه هو ما إذا كانuploaded_file يتم توفيرها. إذا لم يتم توفيرهاNone نقرأ الملف ونفك تشفير محتوياته. تفترض هذه الخطوة أن الملف المرفوع يحتوي على مستند النص الذي نريد معالجته. دعونا نرى كيف سنفعل ذلك:

Python 3.10.4
def generate_response(uploaded_file, openai_api_key, query_text):
# Load document if file is uploaded
if uploaded_file is not None:
documents = [uploaded_file.read().decode()

دعونا نحلل الأمر:

  • السطر 1: يُعرّف هذا السطر دالة تُسمىgenerate_response يتطلب ذلك ثلاثة حجج:uploaded_file ،openai_api_key ، وquery_text ستقوم هذه الوظيفة بمعالجة الملف الذي تم تحميله باستخدام خدمات OpenAI لإنشاء استجابة لاستعلام المستخدم.

  • السطران 3-4: يتحقق هذان السطران مما إذا كانuploaded_file تم توفيرها. إذا تم تحميل ملف (uploaded_file ليسNone إذا استمرت الدالة في معالجة الملف، وإلا ...