التوثيق / LangChain

LangChain

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

Python / JS Open Source LCEL

ما هو LangChain؟

الهدف الرئيسي من LangChain هو توحيد وتبسيط ربط الأجزاء المختلفة لتطبيق الذكاء الاصطناعي ببعضها البعض: نموذج اللغة، المحفّزات (Prompts)، مصادر البيانات الخارجية، الذاكرة، والأدوات. بدلًا من كتابة كود مخصص لكل تكامل، يوفّر LangChain واجهات موحّدة تعمل مع عشرات مزودي النماذج والأدوات المختلفة.

المكوّنات الأساسية

  • Models — واجهة موحّدة لاستدعاء نماذج لغة مختلفة
  • Prompts — قوالب محفّزات قابلة لإعادة الاستخدام وقابلة للمعايرة بالمعاملات
  • Chains — دمج عدة خطوات (محفّز ← نموذج ← معالجة المخرجات) في وحدة واحدة قابلة للاستدعاء
  • Retrievers — واجهة موحّدة للاتصال بقواعد البيانات المتجهية، لتنفيذ RAG
  • Tools / Agents — تعريف الأدوات التي يمكن للنموذج استدعاؤها ومنطق اتخاذ القرار لاستخدامها

LCEL: لغة تركيب السلاسل

لغة تعبير LangChain (LCEL) هي طريقة تصريحية (Declarative) لتركيب المكوّنات باستخدام عامل | (pipe) — شبيهة بأنابيب التوجيه (piping) في سطر أوامر يونكس. يستقبل كل مكوّن مدخلًا، يعالجه، ثم يمرّر المخرج إلى المكوّن التالي.

Prompt Template | Chat Model | Output Parser

نموذج كود

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_anthropic import ChatAnthropic

prompt = ChatPromptTemplate.from_template(
    "لخّص سعر وحالة مخزون المنتج {product}."
)
model = ChatAnthropic(model="claude-sonnet")
chain = prompt | model | StrOutputParser()

result = chain.invoke({"product": "سماعات لاسلكية موديل X"})
print(result)

البث المباشر وCallbacks

انتظار توليد الاستجابة الكاملة للنموذج ليس تجربة جيدة لواجهات المستخدم التفاعلية — لذا يوفّر كل مكوّن من مكوّنات LCEL، إلى جانب invoke()، دالة stream() التي تُعيد الرموز واحدًا تلو الآخر لحظة توليدها (بالضبط تجربة "الكتابة الحية" للاستجابة التي نراها في معظم روبوتات المحادثة اليوم).

إضافةً إلى ذلك، تسمح Callbacks بالربط مع الأحداث الوسيطة لسلسلة ما (بدء استدعاء النموذج، وصول كل رمز، استدعاء أداة، حدوث خطأ) — دون تغيير المنطق الأساسي للسلسلة. تشكّل هذه الآلية أساس عمل أدوات مثل LangSmith للتسجيل والتتبع.

النظام البيئي المرتبط

LangSmith أداة لقابلية الملاحظة (Observability) والتصحيح لتتبّع تنفيذ السلاسل. لبناء عملاء أذكياء أكثر تعقيدًا بتحكّم أدق في تدفق التنفيذ (خاصةً الحلقات والفروع الشرطية)، بنى فريق LangChain إطار عمل LangGraph فوق نفس هذه المكوّنات.

متى يكون LangChain مناسبًا؟

بالنسبة للتطبيقات ذات التدفق الخطي نسبيًا (محفّز ← نموذج ← معالجة، أو خط أنابيب RAG معياري)، يرفع LangChain سرعة التطوير بشكل ملحوظ. أما بالنسبة للسلوك الوكيلي المعقد ذي القرارات متعددة الفروع والحالة الدائمة، فعادةً ما يكون LangGraph الخيار الأفضل.

الأسئلة الشائعة

هل LangChain مخصص لـPython فقط؟

لا، نسخته من JavaScript/TypeScript مدعومة بالكامل أيضًا.

هل يجب أن أستخدم LangChain لاستخدام MCP/UCP؟

لا، فهما مستقلان عن بعضهما. LangChain إطار عمل تطويري؛ MCP وUCP بروتوكولا اتصال معياريان. يمكنك أيضًا استخدام LangChain كعميل لهذين البروتوكولين.