LangChain هي أداة متطورة وقوية تم تطويرها لتسخير قوة نماذج اللغات الكبيرة (LLMs).
تمتلك LLMs قدرات رائعة ويمكنها معالجة مجموعة واسعة من المهام بكفاءة. ومع ذلك ، من المهم ملاحظة أن قوتهم تكمن في طبيعتهم العامة بدلاً من الخبرة المتعمقة في المجال. نمت شعبيتها بسرعة منذ إدخال GPT-4.
بينما تتفوق LLM في التعامل مع المهام المختلفة ، فقد تواجه قيودًا عندما يتعلق الأمر بتقديم إجابات محددة أو معالجة المهام التي تتطلب معرفة عميقة بالمجال. ضع في اعتبارك ، على سبيل المثال ، استخدام LLM للإجابة على الأسئلة أو أداء المهام في مجالات متخصصة مثل الطب أو القانون.
في حين أن LLM يمكنها بالتأكيد الرد على الاستفسارات العامة حول هذه المجالات ، فقد تواجه صعوبة في تقديم إجابات أكثر تفصيلاً أو دقة تتطلب معرفة أو خبرة متخصصة.
وذلك لأن LLMs يتم تدريبهم على كميات هائلة من البيانات النصية من مصادر متنوعة ، مما يمكنهم من تعلم الأنماط وفهم السياق وإنشاء استجابات متماسكة. ومع ذلك ، فإن تدريبهم لا يتضمن عادةً اكتساب المعرفة المتخصصة أو الخاصة بالمجال بنفس القدر مثل الخبراء البشريين في تلك المجالات.
لذلك ، في حين أن LangChain ، جنبًا إلى جنب مع LLMs ، يمكن أن يكون أداة لا تقدر بثمن لمجموعة واسعة من المهام ، فمن المهم أن ندرك أن الخبرة العميقة في المجال قد تظل ضرورية في مواقف معينة. يمكن للخبراء البشريين ذوي المعرفة المتخصصة توفير العمق اللازم ، والفهم الدقيق ، والرؤى الخاصة بالسياق والتي قد تتجاوز قدرات LLM وحدها.
ننصح بالاطلاع على مستندات LangChain أو GitHub جيثب: المستودع لفهم أكثر شمولاً لحالات الاستخدام النموذجية. يُنصح بشدة بالحصول على صورة أكبر لهذه الحزمة.
كيف يعمل؟
لفهم الغرض من LangChain وعمله ، دعنا نفكر في مثال عملي. نحن ندرك أن GPT-4 لديه معرفة عامة رائعة ويمكنه تقديم إجابات موثوقة لمجموعة واسعة من الأسئلة.
ومع ذلك ، ماذا لو أردنا معلومات محددة من بياناتنا الخاصة ، مثل مستند شخصي أو كتاب أو ملف PDF أو قاعدة بيانات خاصة؟
يتيح لنا LangChain توصيل ملف نموذج لغة كبير مثل GPT-4 لمصادر البيانات الخاصة بنا. إنه يتجاوز مجرد لصق مقتطف من النص في واجهة الدردشة. بدلاً من ذلك ، يمكننا الرجوع إلى قاعدة بيانات كاملة مليئة ببياناتنا الخاصة.
بمجرد حصولنا على المعلومات المطلوبة ، يمكن أن تساعدنا LangChain في اتخاذ إجراءات محددة. على سبيل المثال ، يمكننا توجيهه لإرسال بريد إلكتروني يحتوي على تفاصيل معينة.
لتحقيق ذلك ، نتبع نهج خط الأنابيب باستخدام LangChain. أولاً ، نأخذ المستند الذي نريده نموذج اللغة للإشارة إليها وتقسيمها إلى أجزاء أصغر. ثم يتم تخزين هذه القطع كزفاف ، وهي تمثيلات متجهية للنص ، في قاعدة بيانات المتجهات.
من خلال هذا الإعداد ، يمكننا بناء تطبيقات نموذج اللغة التي تتبع خط الأنابيب القياسي: يسأل المستخدم سؤالًا أوليًا ، ثم يتم إرساله إلى نموذج اللغة. يتم استخدام تمثيل المتجه للسؤال لإجراء بحث تشابه في قاعدة بيانات المتجهات ، واسترداد أجزاء المعلومات ذات الصلة.
يتم بعد ذلك إعادة تغذية هذه الأجزاء إلى نموذج اللغة ، مما يمكّنه من تقديم إجابة أو اتخاذ الإجراء المطلوب.
يسهل LangChain تطوير التطبيقات الواعية بالبيانات ، حيث يمكننا الرجوع إلى بياناتنا الخاصة في متجر متجه ، وأصلية ، حيث يمكنهم اتخاذ إجراءات تتجاوز الإجابة على الأسئلة. تي
يفتح له العديد من حالات الاستخدام العملي ، لا سيما في المساعدة الشخصية ، حيث يمكن لنموذج لغة كبير التعامل مع مهام مثل حجز الرحلات الجوية أو تحويل الأموال أو المساعدة في الأمور المتعلقة بالضرائب.
بالإضافة إلى ذلك ، فإن الآثار المترتبة على دراسة وتعلم موضوعات جديدة مهمة ، حيث يمكن لنموذج اللغة الرجوع إلى منهج كامل وتسريع عملية التعلم. من المتوقع أيضًا أن يتأثر الترميز وتحليل البيانات وعلوم البيانات بشكل كبير بهذه التطورات.
أحد أكثر الاحتمالات إثارة هو ربط النماذج اللغوية الكبيرة ببيانات الشركة الحالية ، مثل معلومات العملاء أو بيانات التسويق. هذا التكامل مع واجهات برمجة التطبيقات المتقدمة مثل Meta API أو واجهة برمجة تطبيقات Google يعد بإحراز تقدم هائل في تحليلات البيانات وعلوم البيانات.
كيفية إنشاء صفحة ويب (عرض توضيحي)
حاليًا ، يتوفر Langchain كحزم Python و JavaScript.
يمكننا إنشاء تطبيق ويب توضيحي باستخدام Streamlit و LangChain ونموذج OpenAI GPT-3 لتنفيذ مفهوم LangChain.
لكن أولاً ، يجب علينا تثبيت بعض التبعيات ، بما في ذلك Streamlit و LangChain و OpenAI.
الشروط المسبقة
انسيابي: حزمة Python شائعة لإنشاء تطبيقات ويب متعلقة بعلوم البيانات
أوبن إيه آي: يلزم الوصول إلى نموذج لغة GPT-3 الخاص بـ OpenAI.
لتثبيت هذه التبعيات ، استخدم الأوامر التالية في cmd:
pip install streamlit
pip install langchain
pip install openai
حزم الاستيراد
نبدأ باستيراد الحزم المطلوبة ، مثل OpenAI و LangChain و Streamlit. يتم تعريف سلاسل نموذج اللغة الخاصة بنا وتنفيذها باستخدام ثلاث فئات من LangChain: LLMChain و SimpleSequentialChain و PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
الإعداد الأساسية
ثم تم وضع الأساس الهيكلي لمشروعنا باستخدام صيغة Streamlit. أطلقنا على التطبيق العنوان "ما هو صحيح: استخدام سلسلة تسلسلية بسيطة" وقمنا بتضمين رابط تخفيض السعر إلى مستودع GitHub الذي كان بمثابة مصدر إلهام للتطبيق.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
الحاجيات الأمامية
قمنا بإعداد التطبيق بقليل من المعلومات ذات الصلة ، باستخدام بنية Streamlit بسيطة:
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
لإضافة أدوات الواجهة الأمامية
علاوة على ذلك ، نحتاج إلى توفير أداة إدخال للسماح لمستخدمينا بإدخال أي أسئلة.
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
كله تمام! السلاسل قيد التشغيل!
نحن نوظف سلاسل عمليات مختلفة مع SimpleSequentialChain
للرد على استفسار المستخدم. يتم تنفيذ السلاسل بالتسلسل التالي عندما يختار المستخدم ملف "Tell me about it"
الزر:
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: وهي الخطوة الأولى في خط الأنابيب لدينا ، يتلقى سؤال المستخدم كمدخلات ومخرجات. يعمل استعلام المستخدم كقالب السلسلة.- بناء على بيان مرتبط بالسؤال ، فإن
assumptions_chain
ينشئ قائمة نقطية بالافتراضات باستخدام الإخراج منquestion_chain
كمدخل. الLLMChain
وOpenAI
نموذج من LangChain لبناء البيان. يتم تكليف المستخدم بإنشاء قائمة بالافتراضات التي تم إجراؤها من أجل إنتاج البيان باستخدام القالب الخاص بهذه السلسلة. - بناءً على مخرجات ملف
question_chain
وassumptions_chain
أطلقت حملةfact_checker_chain
يُنشئ قائمة تأكيدات على شكل نقاط. يتم إنتاج المطالبات باستخدامOpenAI
نموذج وLLMChain
من LangChain. يتم تكليف المستخدم بتحديد ما إذا كانت كل مطالبة دقيقة أو غير صحيحة وتقديم مبرر لذلك. - •
answer_chain
يستخدم المخرجات منquestion_chain
,assumptions_chain
وfact_checker_chain
كمدخلات لإنشاء رد على سؤال المستخدم باستخدام البيانات التي تنتجها السلاسل السابقة. يطلب قالب هذه السلسلة أن يستجيب المستخدم للاستعلام الأول باستخدام الحقائق التي تم إنشاؤها. - من أجل توفير الرد النهائي على استفسار المستخدم بناءً على المعلومات التي تنتجها السلاسل السابقة ، نقوم بدمج هذه السلاسل في السلسلة الشاملة. بعد اكتمال السلاسل ، نستخدم
st.success()
لتظهر للمستخدم الحل.
وفي الختام
يمكننا ببساطة تجميع إجراءات نموذج اللغة المختلفة معًا لإنشاء خطوط أنابيب أكثر تعقيدًا باستخدام SimpleSequentialChain
وحدة LangChain. بالنسبة لمجموعة متنوعة من تطبيقات البرمجة اللغوية العصبية ، بما في ذلك روبوتات المحادثة وأنظمة الأسئلة والأجوبة وأدوات ترجمة اللغة ، قد يكون هذا مفيدًا للغاية.
تم العثور على تألق LangChain في قدرته على التجريد ، والتي تمكن المستخدم من التركيز على القضية الحالية بدلاً من تفاصيل نمذجة اللغة.
يجعل LangChain عملية إنشاء نماذج لغة متطورة أكثر سهولة في الاستخدام من خلال تقديم نماذج مدربة مسبقًا ومجموعة مختارة من القوالب.
يمنحك خيار ضبط نماذج اللغة باستخدام بياناتها الخاصة ، مما يجعل من السهل تخصيص نماذج اللغة. يتيح ذلك تطوير نماذج أكثر دقة ومحددة المجال والتي ، لوظيفة معينة ، تتفوق على النماذج المدربة.
• SimpleSequentialChain
الوحدة النمطية وغيرها من ميزات LangChain تجعلها أداة فعالة للتطوير السريع ونشر أنظمة البرمجة اللغوية العصبية المعقدة.
اترك تعليق