LangChain: دليل شامل للمبتدئين

تعتبر النماذج اللغوية الكبيرة قوية، ولكن لها حدود في حد ذاتها. لا يمكنهم الوصول إلى البيانات المباشرة، أو الاحتفاظ بالسياق طويل المدى من المحادثات السابقة، أو تنفيذ إجراءات مثل استدعاء واجهات برمجة التطبيقات أو الاستعلام عن قواعد البيانات. LangChain هو إطار عمل مصمم لمعالجة هذه الفجوات ومساعدة المطورين على بناء تطبيقات واقعية باستخدام نماذج اللغة.
LangChain هو إطار عمل مفتوح المصدر يوفر وحدات بناء منظمة للعمل مع LLMs. فهو يوفر مكونات موحدة مثل المطالبات والنماذج والسلاسل والأدوات، مما يقلل الحاجة إلى كتابة تعليمات برمجية لاصقة مخصصة حول واجهات برمجة التطبيقات النموذجية. وهذا يجعل إنشاء التطبيقات وصيانتها وتوسيعها أسهل مع مرور الوقت.
ما هو LangChain ولماذا هو موجود؟
ومن الناحية العملية، نادرًا ما تعتمد التطبيقات على موجه واحد واستجابة واحدة فقط. غالبًا ما تتضمن خطوات متعددة ومنطقًا شرطيًا وإمكانية الوصول إلى مصادر البيانات الخارجية. في حين أنه من الممكن التعامل مع كل هذا مباشرة باستخدام واجهات برمجة تطبيقات LLM الخام، إلا أن القيام بذلك بسرعة يصبح معقدًا وعرضة للأخطاء.
تساعد LangChain في معالجة هذه التحديات عن طريق إضافة هيكل. فهو يسمح للمطورين بتحديد المطالبات القابلة لإعادة الاستخدام، وموفري النماذج المجردة، وتنظيم سير العمل، ودمج الأنظمة الخارجية بأمان. لا يحل LangChain محل نماذج اللغة. وبدلاً من ذلك، فهو يجلس فوقهم ويوفر التنسيق والاتساق.
تثبيت وإعداد LangChain
كل ما تحتاجه لاستخدام LangChain هو تثبيت المكتبة الأساسية وأي عمليات تكامل محددة للموفر تنوي استخدامها.
الخطوة 1: تثبيت حزمة LangChain الأساسية
pip install -U langchain
في حال كنت تنوي استخدام نماذج OpenAI، قم بتثبيت تكامل OpenAI أيضًا:
pip install -U langchain-openai openai
مطلوب Python 3.10 أو أعلى في LangChain.
الخطوة 2: إعداد مفاتيح API
إذا كنت تستخدم نماذج OpenAI، فقم بتعيين مفتاح API الخاص بك كمتغير بيئة:
export OPENAI_API_KEY="your-openai-key"
أو داخل بايثون:
import os
os.environ("OPENAI_API_KEY") = "your-openai-key"
يقرأ LangChain هذا المفتاح تلقائيًا عند إنشاء مثيلات النموذج.
المفاهيم الأساسية لـ LangChain
تعتمد تطبيقات LangChain على مجموعة صغيرة من المكونات الأساسية. يخدم كل مكون غرضًا محددًا، ويمكن للمطورين دمجها لبناء أنظمة أكثر تعقيدًا.
اللبنات الأساسية هي:

إنه أكثر أهمية من حفظ واجهات برمجة تطبيقات معينة لفهم هذه المفاهيم.
العمل مع القوالب السريعة في LangChain
يمكن وصف المطالبة بأنها المدخلات التي يتم تغذيتها لنموذج اللغة. في الاستخدام العملي، يمكن أن يحتوي الموجه على متغيرات وأمثلة وقواعد وقيود التنسيق. تضمن القوالب المحددة في الوقت المناسب أن هذه المطالبات قابلة لإعادة الاستخدام ويسهل التحكم فيها.
مثال:
من langchain.prompts قم باستيراد PromptTemplate
prompt = PromptTemplate.from_template(
"Explain {topic} in simple terms."
) text = prompt.format(topic="machine learning")
print(text)
تعمل القوالب السريعة على التخلص من الترميز الصعب للسلاسل وتقليل عدد الأخطاء التي تنشأ عن تنسيق التعليمات البرمجية اليدوي للسلاسل. ومن السهل أيضًا تحديث المطالبات مع نمو تطبيقك.
قوالب الدردشة الفورية
تعمل النماذج المستندة إلى الدردشة مع الرسائل المنظمة بدلاً من كتلة نصية واحدة. تتضمن هذه الرسائل عادةً أدوار النظام والبشر والذكاء الاصطناعي. يستخدم LangChain قوالب مطالبات الدردشة لتحديد هذه البنية بوضوح.
مثال:
from langchain.prompts import ChatPromptTemplate
chat_prompt = ChatPromptTemplate.from_messages((
("system", "You are a helpful teacher."),
("human", "Explain {topic} to a beginner.")
))
تمنحك هذه البنية تحكمًا أفضل في سلوك النموذج وأولوية التعليمات.
استخدام نماذج اللغة مع LangChain
LangChain هي واجهة توفر واجهات برمجة التطبيقات لنموذج اللغة بتنسيق موحد. يمكّنك هذا من تغيير النماذج أو مقدمي الخدمات مع الحد الأدنى من التعديلات.
باستخدام نموذج الدردشة OpenAI:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o-mini",
temperature=0
)
تتحكم معلمة درجة الحرارة في العشوائية في مخرجات النموذج. تنتج القيم المنخفضة نتائج أكثر قابلية للتنبؤ بها، وهو ما يعمل بشكل جيد مع البرامج التعليمية وأنظمة الإنتاج. توفر كائنات نموذج LangChain أيضًا طرقًا بسيطة، مثل استدعاء، بدلاً من طلب استدعاءات واجهة برمجة التطبيقات (API) ذات المستوى المنخفض.
شرح السلاسل في LangChain
أسهل وحدة تنفيذ في LangChain هي السلاسل. السلسلة هي ربط المدخلات بالمخرجات في خطوة واحدة أو أكثر. LLMChain هي السلسلة الأكثر شعبية. فهو يدمج قالبًا سريعًا ونموذج لغة في سير عمل قابل لإعادة الاستخدام.
مثال:
from langchain.chains import LLMChain
chain = LLMChain(
llm=llm,
prompt=prompt
)
response = chain.run(topic="neural networks")
print(response)
يمكنك استخدام السلاسل عندما تريد سلوكًا قابلاً للتكرار بتسلسل معروف من الخطوات. يمكنك دمج سلاسل متعددة بحيث يتم تغذية مخرجات إحدى السلاسل مباشرة إلى السلسلة التالية مع نمو التطبيق.
الأدوات في LangChain وتكامل API
نماذج اللغة لا تعمل من تلقاء نفسها. توفر لهم الأدوات حرية التواصل مع الأنظمة الخارجية مثل واجهات برمجة التطبيقات أو قواعد البيانات أو خدمات الحساب. يمكن لأي وظيفة بايثون أن تكون أداة بشرط أن تحتوي على مدخلات ومخرجات محددة جيدًا.
مثال لأداة الطقس البسيطة:
from langchain.tools import tool
import requests
@tool
def get_weather(city: str) -> str:
"""Get the current weather in a city."""
url = f"http://wttr.in/{city}?format=3"
return requests.get(url).text
وصف واسم الأداة ضرورية. يفسرها النموذج لفهم متى سيتم استخدام الأداة وماذا تفعل. هناك أيضًا عدد من الأدوات المضمنة في LangChain، على الرغم من انتشار الأدوات المخصصة، نظرًا لأنها غالبًا ما تكون منطقًا خاصًا بالتطبيق.
وكلاء في LangChain وصنع القرار الديناميكي
تعمل السلاسل بشكل جيد عندما تعرف ترتيب المهام وتستطيع التنبؤ به. ومع ذلك، فإن العديد من مشاكل العالم الحقيقي لا تزال مفتوحة. في هذه الحالات، يجب أن يقرر النظام الإجراء التالي بناءً على سؤال المستخدم أو النتائج الوسيطة أو الأدوات المتاحة. هذا هو المكان الذي يصبح فيه الوكلاء مفيدًا.
يستخدم الوكيل نموذج اللغة كمحرك المنطق الخاص به. بدلاً من اتباع مسار ثابت، يقرر الوكيل الإجراء الذي يجب اتخاذه في كل خطوة. يمكن أن تتضمن الإجراءات استدعاء أداة أو جمع المزيد من المعلومات أو إنتاج إجابة نهائية.
يتبع الوكلاء دورة تفكير تسمى غالبًا السبب والفعل. النموذج يفكر في المشكلة، ويتخذ إجراءً، ويلاحظ النتيجة، ثم يفكر مرة أخرى حتى يصل إلى الاستجابة النهائية.
لمعرفة المزيد يمكنك الخروج:
إنشاء وكيل LangChain الأول الخاص بك
تقدم LangChain تنفيذًا عالي المستوى للوكلاء دون كتابة حلقة التفكير.
مثال:
from langchain_openai import ChatOpenAI
from langchain.agents import create_agent
model = ChatOpenAI(
model="gpt-4o-mini",
temperature=0
)
agent = create_agent(
model=model,
tools=(get_weather),
system_prompt="You are a helpful assistant that can use tools when needed."
)
# Using the agent
response = agent.invoke(
{
"input": "What is the weather in London right now?"
}
)
print(response)
يقوم الوكيل بفحص السؤال، ويدرك أنه يحتاج إلى بيانات في الوقت الفعلي، ويختار أداة الطقس، ويسترجع النتيجة، ثم ينتج استجابة باللغة الطبيعية. كل هذا يحدث تلقائيًا من خلال إطار عمل وكيل LangChain.
الذاكرة وسياق المحادثة
نماذج اللغة هي بشكل افتراضي عديمة الحالة. ينسون الاتصالات الماضية. تتيح الذاكرة لتطبيقات LangChain توفير السياق في أكثر من دورة. إن Chatbots والمساعدين وأي نظام آخر يقدم فيه المستخدمون أسئلة للمتابعة تتطلب ذاكرة.
التنفيذ الأساسي للذاكرة هو مخزن مؤقت للمحادثة، وهو عبارة عن مخزن للذاكرة للرسائل السابقة.
مثال:
from langchain.memory import ConversationBufferMemory
from langchain.chains import LLMChain
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
chat_chain = LLMChain(
llm=llm,
prompt=chat_prompt,
memory=memory
)
كلما قمت بتشغيل سلسلة، يقوم LangChain بإدخال سجل المحادثة المخزن في الموجه وتحديث الذاكرة بأحدث استجابة.
تقدم LangChain العديد من إستراتيجيات الذاكرة، بما في ذلك النوافذ المنزلقة للحد من حجم السياق، والذاكرة المختصرة للمحادثات الطويلة، والذاكرة طويلة المدى مع الاستدعاء القائم على المتجهات. يجب عليك اختيار الإستراتيجية المناسبة بناءً على حدود طول السياق وقيود التكلفة.
الاسترجاع والمعرفة الخارجية
تتدرب نماذج اللغة على البيانات العامة بدلاً من المعلومات الخاصة بالمجال. يعمل الجيل المعزز للاسترجاع على حل هذه المشكلة عن طريق حقن البيانات الخارجية ذات الصلة في الموجه في وقت التشغيل.
يدعم LangChain خط الاسترجاع بأكمله.
- تحميل المستندات من ملفات PDF وصفحات الويب وقواعد البيانات
- تقسيم المستندات إلى أجزاء يمكن التحكم فيها
- إنشاء التضمينات لكل قطعة
- تخزين التضمينات في قاعدة بيانات المتجهات
- استرداد الأجزاء الأكثر صلة بالاستعلام
ستظهر عملية الاسترجاع المتوسطة على النحو التالي:
- تحميل المستندات ومعالجتها مسبقًا
- تقسيمها إلى قطع
- تضمينها وتخزينها
- استرداد القطع ذات الصلة بناءً على استعلام المستخدم
- قم بتمرير المحتوى المسترد إلى النموذج كسياق
اقرأ أيضًا: إتقان الهندسة السريعة لتطبيقات LLM باستخدام LangChain
تحليل المخرجات والاستجابات المنظمة
توفر نماذج اللغة نصًا، إلا أن التطبيقات تتطلب عادةً نصًا منظمًا مثل القوائم أو القواميس أو JSON الذي تم التحقق من صحته. يساعد موزعو المخرجات في تحويل النص الحر إلى هياكل بيانات يمكن الاعتماد عليها.
مثال أساسي يعتمد على محلل قائمة مفصولة بفواصل:
from langchain.output_parsers import CommaSeparatedListOutputParser
parser = CommaSeparatedListOutputParser()
يمكن فرض حالات الاستخدام الأكثر تحديًا باستخدام النماذج المكتوبة باستخدام موزعي المخرجات المنظمين. يأمر هؤلاء المحللون النموذج بالرد بتنسيق JSON محدد مسبقًا وتطبيق فحص على الاستجابة قبل سقوطها في اتجاه مجرى النهر.
يعد تحليل المخرجات المنظم مفيدًا بشكل خاص عندما يتم استهلاك مخرجات النموذج بواسطة أنظمة أخرى أو وضعها في قواعد البيانات.
اعتبارات الإنتاج
عندما تنتقل من التجريب إلى الإنتاج، فإنك تحتاج إلى التفكير فيما هو أبعد من السلسلة الأساسية أو منطق الوكلاء.
توفر LangChain أدوات جاهزة للإنتاج لدعم هذا التحول. باستخدام LangServe، يمكنك الكشف عن السلاسل والوكلاء كواجهات برمجة تطبيقات مستقرة ودمجها بسهولة مع خدمات الويب أو الهاتف المحمول أو الواجهة الخلفية. يتيح هذا الأسلوب إمكانية توسيع نطاق تطبيقك دون ربط منطق الأعمال بشكل وثيق بكود النموذج.
يدعم LangSmith التسجيل والتتبع والتقييم والمراقبة في بيئات الإنتاج. فهو يوفر رؤية واضحة لتدفق التنفيذ واستخدام الأداة وزمن الوصول والفشل. تسهل هذه الرؤية تصحيح الأخطاء وتتبع الأداء بمرور الوقت وضمان سلوك النموذج المتسق مع تغير المدخلات وحركة المرور.
تساعد هذه الأدوات معًا في تقليل مخاطر النشر من خلال تحسين إمكانية المراقبة والموثوقية وقابلية الصيانة، ومن خلال سد الفجوة بين النماذج الأولية واستخدام الإنتاج.
حالات الاستخدام الشائعة
- روبوتات الدردشة ومساعدي المحادثة التي تحتاج إلى ذكريات أو أدوات أو منطق متعدد الخطوات.
- الإجابة على الأسئلة المتعلقة بالوثيقة باستخدام بيانات الاسترجاع والبيانات الخارجية.
- يتم دعم قواعد المعرفة والأنظمة الداخلية من خلال أتمتة دعم العملاء.
- جمع المعلومات وتلخيص الأبحاث ووكلاء التحليل.
- مزيج من سير العمل بين الأدوات المختلفة وواجهات برمجة التطبيقات والخدمات.
- العمليات التجارية المؤتمتة أو المدعومة من خلال أدوات المؤسسة الداخلية.
إنها مرنة، وبالتالي قابلة للتطبيق في النماذج الأولية البسيطة وأنظمة الإنتاج المعقدة.
خاتمة
يوفر LangChain إطارًا مناسبًا ومبسطًا لإنشاء تطبيقات العالم الحقيقي باستخدام نماذج لغوية كبيرة. إنها تستخدم أكثر جدارة بالثقة من LLM الخام، حيث تقدم تجريدات حول المطالبات والنموذج والسلسلة والأدوات والوكيل والذاكرة والاسترجاع. يمكن للمبتدئين استخدام سلاسل بسيطة، ولكن يمكن للمستخدمين المتقدمين بناء عوامل ديناميكية وأنظمة إنتاج. يتم سد الفجوة بين التجريب والتنفيذ بواسطة LangChain من خلال إمكانية المراقبة والنشر والقياس المضمنة. مع نمو استخدام LLM، تعد LangChain بنية تحتية جيدة يمكن من خلالها بناء أنظمة طويلة المدى ومرنة وموثوقة تعتمد على الذكاء الاصطناعي.
الأسئلة المتداولة
ج: يستخدم المطورون LangChain لإنشاء تطبيقات الذكاء الاصطناعي التي تتجاوز المطالبات الفردية. فهو يساعد على الجمع بين المطالبات والنماذج والأدوات والذاكرة والوكلاء والبيانات الخارجية حتى تتمكن نماذج اللغة من التفكير واتخاذ الإجراءات ودعم سير العمل في العالم الحقيقي.
A. يقوم برنامج LLM بإنشاء نص بناءً على المدخلات، بينما يوفر LangChain البنية المحيطة به. تقوم LangChain بربط النماذج بالمطالبات والأدوات والذاكرة وأنظمة الاسترجاع وسير العمل، مما يتيح تطبيقات معقدة ومتعددة الخطوات بدلاً من الاستجابات المعزولة.
ج: يغادر بعض المطورين LangChain بسبب التغييرات السريعة في واجهة برمجة التطبيقات (API)، أو زيادة التجريد، أو تفضيل الحلول الأخف وزنًا والمصممة خصيصًا. وينتقل آخرون إلى البدائل عندما يحتاجون إلى إعدادات أبسط، أو تحكم أكثر صرامة، أو خفض النفقات العامة لأنظمة الإنتاج.
LangChain مجاني ومفتوح المصدر بموجب ترخيص MIT. يمكنك استخدامه بدون تكلفة، ولكنك لا تزال تدفع مقابل الخدمات الخارجية مثل موفري النماذج أو قواعد بيانات المتجهات أو واجهات برمجة التطبيقات التي يتكامل معها تطبيق LangChain.
قم بتسجيل الدخول لمواصلة القراءة والاستمتاع بالمحتوى الذي ينظمه الخبراء.
Source link



