بنية LangChain وLCEL
مكوّنات LangChain، وصياغة الأنابيب في LCEL، والسلاسل، وواجهات runnable، والسلاسل المتدفقة
بنية LangChain وLCEL درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ما هي LangChain؟
LangChain هي إطار عمل لبناء تطبيقات LLM من خلال تركيب مكونات قابلة لإعادة الاستخدام: المطالبات، والنماذج، والمحللات، وأدوات الاسترجاع، والذاكرة. وبدلاً من توصيل استدعاءات API يدوياً، تبنون سلاسل تمرر البيانات من مكوّن إلى آخر.
pip install langchain langchain-openaiالمكوّنات الأساسية
تظهر ثلاثة مكوّنات في كل سلسلة تقريباً: PromptTemplate (ينسّق الإدخال في صورة مطالبة)، ونموذج محادثة (وهو LLM)، ومحلل مخرجات (ينظّف النتيجة). وتصل LangChain بينها في مسار معالجة.
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParserبناء قالب مطالبة
يحتوي قالب المطالبة على عناصر نائبة تُملأ أثناء التشغيل. استخدموا صيغة {variable}. وعند استدعاء السلسلة باستخدام قاموس، تُستبدل هذه المفاتيح بقيمها.
prompt = ChatPromptTemplate.from_template(
"Explain {topic} to a {audience} in two sentences."
)LCEL: صيغة الأنبوب
تُركّب LCEL (لغة تعبيرات LangChain) المكوّنات باستخدام عامل الأنبوب |. وتتدفق مخرجات كل خطوة إلى الخطوة التالية، من اليسار إلى اليمين، كما في مسار معالجة Unix.
model = ChatOpenAI(model="gpt-4o")
chain = prompt | model | StrOutputParser()لماذا نستخدم StrOutputParser؟
يعيد نموذج المحادثة كائن رسالة، وليس سلسلة نصية عادية. تستخرج StrOutputParser() النص الموجود في .content، بحيث تنتج السلسلة نصاً نظيفاً. ومن دونها، ستحصلون على رسالة منظمة.
استدعاء السلسلة
شغّلوا السلسلة باستخدام chain.invoke()، مع تمرير قاموس يملأ متغيرات القالب. وتكون النتيجة هي المخرجات النصية المحللة.
result = chain.invoke({"topic": "vectors", "audience": "beginner"})
print(result)بث السلسلة
للحصول على مخرجات في الوقت الفعلي، استدعوا chain.stream() بدلاً من invoke. فهي تعيد مولّداً ينتج أجزاء المخرجات أثناء إنتاج النموذج لها، تماماً مثل البث المباشر من API الخام.
for chunk in chain.stream({"topic": "RAG", "audience": "engineer"}):
print(chunk, end="", flush=True)معالجة عدة مدخلات دفعة واحدة
عالجوا عدداً كبيراً من المدخلات بكفاءة باستخدام chain.batch(). مرّروا قائمة من قواميس الإدخال، وستشغّلها LangChain بالتزامن، مع إعادة قائمة من النتائج بالترتيب نفسه.
inputs = [
{"topic": "loops", "audience": "kid"},
{"topic": "recursion", "audience": "kid"}
]
results = chain.batch(inputs)RunnablePassthrough
تمرّر RunnablePassthrough إدخالها من دون تغيير. وهي أساسية عندما يجب أن تحافظ السلسلة على الإدخال الأصلي إلى جانب قيمة محوّلة، كما يحدث كثيراً في RAG عند تمرير السؤال والسياق المسترجَع معاً.
from langchain_core.runnables import RunnablePassthrough
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt | model | StrOutputParser()
)التركيب باستخدام القواميس
عندما تكون الخطوة قاموساً، تُشغَّل كل قيمة بالتوازي، وتشكل النتائج إدخال الخطوة التالية. ويتيح ذلك بناء مطالبات متعددة المدخلات التي تشغّل مسارات معالجة الاسترجاع، عبر ربط كل مفتاح بمكوّن قابل للتشغيل أو بتمرير مباشر.
parallel = {
"context": retriever,
"question": RunnablePassthrough()
}
# parallel feeds {"context": ..., "question": ...} downstreamلماذا تُعد LCEL مهمة؟
تحصل سلاسل LCEL تلقائياً على البث، والمعالجة الدفعية، والتنفيذ غير المتزامن، كما يسهل قراءتها وتركيبها مثل قطع Lego. وتتوسع صيغة الأنبوب نفسها من مطالبة في سطر واحد إلى نظام RAG كامل.
تحقق سريع
اختبروا فهمكم لـ LCEL.
مراجعة: البنية وLCEL
ركّبتم مكوّنات LangChain باستخدام عامل الأنبوب: prompt | model | StrOutputParser(). وشغّلتم السلاسل باستخدام invoke، وبثثتم المخرجات باستخدام stream، وعالجتم عدة مدخلات باستخدام batch. ويتيح لكم RunnablePassthrough وتركيب القواميس بناء مسارات معالجة متعددة المدخلات لـ RAG.
الأسئلة الشائعة
هل درس «بنية LangChain وLCEL» مجاني؟
نعم — نص درس «بنية LangChain وLCEL» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «بنية LangChain وLCEL»؟
مكوّنات LangChain، وصياغة الأنابيب في LCEL، والسلاسل، وواجهات runnable، والسلاسل المتدفقة تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «بنية LangChain وLCEL»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بنية LangChain وLCEL
- تحميل المستندات وتقسيمها وتضمينها
- مخازن المتجهات: Chroma وFAISS
- بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية