کی میز کے مندرجات[چھپائیں][دکھائیں]
LangChain ایک جدید اور مضبوط ٹول ہے جسے Large Language Models (LLMs) کی طاقت کو استعمال کرنے کے لیے تیار کیا گیا ہے۔
یہ ایل ایل ایم قابل ذکر صلاحیتوں کے مالک ہیں اور بہت سے کاموں کو مؤثر طریقے سے نمٹ سکتے ہیں۔ تاہم، یہ نوٹ کرنا ضروری ہے کہ ان کی طاقت گہری ڈومین کی مہارت کے بجائے ان کی عمومی نوعیت میں ہے۔ GPT-4 کے متعارف ہونے کے بعد اس کی مقبولیت میں تیزی سے اضافہ ہوا ہے۔
جب کہ LLMs مختلف کاموں کو سنبھالنے میں مہارت رکھتے ہیں، لیکن جب وہ مخصوص جوابات فراہم کرنے یا ایسے کاموں سے نمٹنے کی بات کرتے ہیں جن کے لیے ڈومین کے بارے میں گہرا علم درکار ہوتا ہے تو انہیں حدود کا سامنا کرنا پڑ سکتا ہے۔ مثال کے طور پر، سوالوں کے جواب دینے یا طب یا قانون جیسے مخصوص شعبوں میں کام انجام دینے کے لیے LLM کا استعمال کرنے پر غور کریں۔
اگرچہ LLM یقینی طور پر ان شعبوں کے بارے میں عمومی استفسارات کا جواب دے سکتا ہے، لیکن یہ زیادہ تفصیلی یا باریک جوابات پیش کرنے کے لیے جدوجہد کر سکتا ہے جن کے لیے خصوصی علم یا مہارت کی ضرورت ہوتی ہے۔
اس کی وجہ یہ ہے کہ LLMs کو متنوع ذرائع سے متنوع ڈیٹا کی وسیع مقدار پر تربیت دی جاتی ہے، جس سے وہ پیٹرن سیکھنے، سیاق و سباق کو سمجھنے اور مربوط ردعمل پیدا کرنے کے قابل ہوتے ہیں۔ تاہم، ان کی تربیت میں عام طور پر ڈومین کے لیے مخصوص یا خصوصی علم کا حصول شامل نہیں ہوتا ہے جس حد تک ان شعبوں میں انسانی ماہرین۔
لہٰذا، جبکہ LangChain، LLMs کے ساتھ مل کر، کاموں کی ایک وسیع رینج کے لیے ایک انمول ٹول ہو سکتا ہے، لیکن یہ جاننا ضروری ہے کہ کچھ مخصوص حالات میں گہری ڈومین کی مہارت اب بھی ضروری ہو سکتی ہے۔ خصوصی علم کے حامل انسانی ماہرین ضروری گہرائی، باریک بینی، اور سیاق و سباق سے متعلق مخصوص بصیرت فراہم کر سکتے ہیں جو صرف LLMs کی صلاحیتوں سے باہر ہو سکتے ہیں۔
ہم LangChain کے دستاویزات کو دیکھنے کا مشورہ دیں گے یا GitHub کے اس کے عام استعمال کے معاملات کی مزید مکمل تفہیم کے لیے ذخیرہ۔ اس بنڈل کی ایک بڑی تصویر حاصل کرنے کا سختی سے مشورہ دیا جاتا ہے۔
یہ کیسے کام کرتا ہے؟
LangChain کے مقصد اور کام کو سمجھنے کے لیے، آئیے ایک عملی مثال پر غور کریں۔ ہم اس بات سے آگاہ ہیں کہ GPT-4 کے پاس عمومی معلومات متاثر کن ہیں اور وہ بہت سارے سوالات کے قابل اعتماد جوابات فراہم کر سکتے ہیں۔
تاہم، اگر ہم اپنے ڈیٹا، جیسے کہ ذاتی دستاویز، کتاب، پی ڈی ایف فائل، یا ملکیتی ڈیٹا بیس سے مخصوص معلومات چاہتے ہیں تو کیا ہوگا؟
LangChain ہمیں رابطہ قائم کرنے کی اجازت دیتا ہے۔ بڑی زبان کا ماڈل جیسے ہمارے اپنے ڈیٹا کے ذرائع سے GPT-4۔ یہ صرف چیٹ انٹرفیس میں متن کا ایک ٹکڑا چسپاں کرنے سے آگے ہے۔ اس کے بجائے، ہم اپنے ڈیٹا سے بھرے ایک پورے ڈیٹا بیس کا حوالہ دے سکتے ہیں۔
ایک بار جب ہم مطلوبہ معلومات حاصل کر لیتے ہیں، LangChain مخصوص اقدامات کرنے میں ہماری مدد کر سکتا ہے۔ مثال کے طور پر، ہم اسے کچھ تفصیلات پر مشتمل ای میل بھیجنے کی ہدایت کر سکتے ہیں۔
اس کو حاصل کرنے کے لیے، ہم LangChain کا استعمال کرتے ہوئے پائپ لائن اپروچ کی پیروی کرتے ہیں۔ سب سے پہلے، ہم وہ دستاویز لیتے ہیں جو ہم چاہتے ہیں۔ زبان ماڈل حوالہ دینے اور اسے چھوٹے ٹکڑوں میں تقسیم کرنے کے لیے۔ یہ ٹکڑے پھر سرایت کے طور پر محفوظ کیے جاتے ہیں، جو کہ ہیں۔ ویکٹر ڈیٹا بیس میں متن کی ویکٹر کی نمائندگی.
اس سیٹ اپ کے ساتھ، ہم لینگویج ماڈل ایپلی کیشنز بنا سکتے ہیں جو معیاری پائپ لائن کی پیروی کرتے ہیں: صارف ایک ابتدائی سوال پوچھتا ہے، جسے پھر لینگویج ماڈل کو بھیجا جاتا ہے۔ سوال کی ویکٹر کی نمائندگی کو ویکٹر ڈیٹا بیس میں مماثلت کی تلاش کرنے کے لیے استعمال کیا جاتا ہے، معلومات کے متعلقہ ٹکڑوں کو بازیافت کرنے کے لیے۔
اس کے بعد یہ ٹکڑوں کو زبان کے ماڈل میں واپس کر دیا جاتا ہے، جو اسے جواب فراہم کرنے یا مطلوبہ کارروائی کرنے کے قابل بناتا ہے۔
LangChain ایسی ایپلی کیشنز کی ترقی میں سہولت فراہم کرتا ہے جو ڈیٹا سے آگاہ ہیں، کیونکہ ہم ویکٹر اسٹور میں اپنے ڈیٹا کا حوالہ دے سکتے ہیں، اور مستند ہیں، کیونکہ وہ سوالات کے جوابات سے ہٹ کر اقدامات کر سکتے ہیں۔ ٹی
اس نے عملی استعمال کے بہت سے معاملات کھولے ہیں، خاص طور پر ذاتی مدد میں، جہاں ایک بڑا زبان کا ماڈل پروازوں کی بکنگ، رقم کی منتقلی، یا ٹیکس سے متعلقہ معاملات میں مدد کرنے جیسے کاموں کو سنبھال سکتا ہے۔
مزید برآں، نئے مضامین کے مطالعہ اور سیکھنے کے مضمرات اہم ہیں، کیونکہ ایک زبان کا ماڈل پورے نصاب کا حوالہ دے سکتا ہے اور سیکھنے کے عمل کو تیز کر سکتا ہے۔ کوڈنگ، ڈیٹا کا تجزیہ، اور ڈیٹا سائنس بھی ان پیشرفتوں سے بہت متاثر ہونے کی امید ہے۔
سب سے زیادہ دلچسپ امکانات میں سے ایک بڑی زبان کے ماڈلز کو موجودہ کمپنی کے ڈیٹا سے جوڑنا ہے، جیسے کہ کسٹمر کی معلومات یا مارکیٹنگ ڈیٹا۔ Meta's API یا Google's API جیسے جدید APIs کے ساتھ یہ انضمام ڈیٹا اینالیٹکس اور ڈیٹا سائنس میں نمایاں پیش رفت کا وعدہ کرتا ہے۔
ویب پیج کیسے بنایا جائے (ڈیمو)
فی الحال، Langchain Python اور JavaScript پیکجز کے طور پر دستیاب ہے۔
ہم LangChain تصور کو نافذ کرنے کے لیے Streamlit، LangChain، اور OpenAI GPT-3 ماڈل کا استعمال کرتے ہوئے ایک ڈیموسٹریشن ویب ایپ بنا سکتے ہیں۔
لیکن پہلے، ہمیں کچھ انحصار انسٹال کرنا ہوں گے، بشمول Streamlit، LangChain، اور OpenAI۔
پری ضروریات
اسٹریم لائٹ: ڈیٹا سائنس سے متعلق ویب ایپلیکیشنز بنانے کے لیے ایک مشہور Python پیکج
OpenAI: OpenAI کے GPT-3 زبان کے ماڈل تک رسائی کی ضرورت ہے۔
ان انحصار کو انسٹال کرنے کے لیے، cmd میں درج ذیل کمانڈز استعمال کریں:
pip install streamlit
pip install langchain
pip install openai
پیکجز درآمد کریں۔
ہم مطلوبہ پیکجز، جیسے OpenAI، LangChain، اور Streamlit درآمد کرکے شروع کرتے ہیں۔ ہمارے لینگویج ماڈل چینز کو LangChain سے تین کلاسوں کا استعمال کرتے ہوئے ڈیفائن اور ان پر عملدرآمد کیا جاتا ہے: LLMCchain، SimpleSequentialChain، اور PromptTemplate۔
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
بنیادی سیٹ اپ
ہمارے پروجیکٹ کی ساختی بنیاد پھر Streamlit نحو کا استعمال کرتے ہوئے رکھی گئی۔ ہم نے ایپ کو "What's TRUE: Using Simple Sequential Chain" کا عنوان دیا ہے اور اس میں 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 کے دیگر فیچرز اسے جدید ترین NLP سسٹمز کو تیزی سے تیار کرنے اور تعینات کرنے کے لیے ایک موثر ٹول بناتے ہیں۔
جواب دیجئے