LangChain হল একটি অত্যাধুনিক এবং শক্তিশালী টুল যা লার্জ ল্যাঙ্গুয়েজ মডেলের (LLMs) শক্তিকে কাজে লাগানোর জন্য তৈরি করা হয়েছে।
এই এলএলএমগুলি উল্লেখযোগ্য ক্ষমতার অধিকারী এবং দক্ষতার সাথে বিস্তৃত কাজগুলি মোকাবেলা করতে পারে। যাইহোক, এটি লক্ষ্য করা গুরুত্বপূর্ণ যে তাদের শক্তি গভীরভাবে ডোমেন দক্ষতার পরিবর্তে তাদের সাধারণ প্রকৃতিতে নিহিত। GPT-4 প্রবর্তনের পর থেকে এর জনপ্রিয়তা দ্রুত বৃদ্ধি পেয়েছে।
যদিও এলএলএমগুলি বিভিন্ন কাজ পরিচালনার ক্ষেত্রে দক্ষতা অর্জন করে, তারা যখন নির্দিষ্ট উত্তর প্রদান বা ডোমেনের গভীর জ্ঞানের প্রয়োজন হয় এমন কাজগুলি মোকাবেলা করার ক্ষেত্রে সীমাবদ্ধতার সম্মুখীন হতে পারে। বিবেচনা করুন, উদাহরণস্বরূপ, ওষুধ বা আইনের মতো বিশেষ ক্ষেত্রের মধ্যে প্রশ্নের উত্তর দিতে বা কার্য সম্পাদনের জন্য একটি এলএলএম ব্যবহার করা।
যদিও এলএলএম অবশ্যই এই ক্ষেত্রগুলি সম্পর্কে সাধারণ অনুসন্ধানের উত্তর দিতে পারে, এটি বিশেষ জ্ঞান বা দক্ষতার প্রয়োজন হয় এমন আরও বিশদ বা সংক্ষিপ্ত উত্তর দেওয়ার জন্য সংগ্রাম করতে পারে।
এর কারণ হল এলএলএমগুলিকে বিভিন্ন উত্স থেকে প্রচুর পরিমাণে পাঠ্য ডেটার উপর প্রশিক্ষণ দেওয়া হয়, যা তাদের প্যাটার্ন শিখতে, প্রসঙ্গ বুঝতে এবং সুসংগত প্রতিক্রিয়া তৈরি করতে সক্ষম করে। যাইহোক, তাদের প্রশিক্ষণে সাধারণত ডোমেন-নির্দিষ্ট বা বিশেষ জ্ঞান অর্জন সেই ক্ষেত্রের মানব বিশেষজ্ঞদের মতো একই পরিমাণে জড়িত থাকে না।
তাই, যদিও ল্যাংচেইন, এলএলএম-এর সাথে একত্রে, বিস্তৃত পরিসরের কাজের জন্য একটি অমূল্য হাতিয়ার হতে পারে, তখনও কিছু নির্দিষ্ট পরিস্থিতিতে গভীর ডোমেন দক্ষতার প্রয়োজন হতে পারে তা স্বীকার করা গুরুত্বপূর্ণ। বিশেষ জ্ঞান সহ মানব বিশেষজ্ঞরা প্রয়োজনীয় গভীরতা, সূক্ষ্ম বোঝাপড়া এবং প্রসঙ্গ-নির্দিষ্ট অন্তর্দৃষ্টি প্রদান করতে পারেন যা একা এলএলএম-এর ক্ষমতার বাইরে হতে পারে।
আমরা ল্যাংচেইনের ডক্স বা দেখার পরামর্শ দেব GitHub এর সাধারণ ব্যবহারের ক্ষেত্রে আরও পুঙ্খানুপুঙ্খভাবে বোঝার জন্য সংগ্রহস্থল। এই বান্ডিলের একটি বড় ছবি পেতে দৃঢ়ভাবে পরামর্শ দেওয়া হয়।
এটা কিভাবে কাজ করে?
LangChain এর উদ্দেশ্য এবং কাজ বোঝার জন্য, আসুন একটি বাস্তব উদাহরণ বিবেচনা করা যাক। আমরা সচেতন যে GPT-4-এর চিত্তাকর্ষক সাধারণ জ্ঞান রয়েছে এবং বিস্তৃত প্রশ্নের নির্ভরযোগ্য উত্তর দিতে পারে।
যাইহোক, যদি আমরা আমাদের নিজস্ব তথ্য যেমন একটি ব্যক্তিগত নথি, বই, পিডিএফ ফাইল, বা মালিকানাধীন ডেটাবেস থেকে নির্দিষ্ট তথ্য চাই?
ল্যাংচেইন আমাদেরকে সংযোগ করতে দেয় বড় ভাষা মডেল GPT-4 আমাদের নিজস্ব তথ্যের উৎসের মতো। এটি কেবল একটি চ্যাট ইন্টারফেসে পাঠ্যের একটি স্নিপেট পেস্ট করার বাইরে চলে যায়। পরিবর্তে, আমরা আমাদের নিজস্ব ডেটা দিয়ে ভরা একটি সম্পূর্ণ ডাটাবেস উল্লেখ করতে পারি।
একবার আমরা কাঙ্খিত তথ্য পেয়ে গেলে, LangChain আমাদেরকে সুনির্দিষ্ট পদক্ষেপ নিতে সহায়তা করতে পারে। উদাহরণস্বরূপ, আমরা এটিকে নির্দিষ্ট বিবরণ সম্বলিত একটি ইমেল পাঠাতে নির্দেশ দিতে পারি।
এটি অর্জন করতে, আমরা LangChain ব্যবহার করে একটি পাইপলাইন পদ্ধতি অনুসরণ করি। প্রথমত, আমরা যে নথিটি চাই তা নিয়ে যাই ভাষার মডেল রেফারেন্স এবং ছোট খণ্ডে বিভক্ত. এই খণ্ডগুলি তারপর এম্বেডিং হিসাবে সংরক্ষণ করা হয়, যা পাঠ্যের ভেক্টর উপস্থাপনা, একটি ভেক্টর ডাটাবেসে.
এই সেটআপের মাধ্যমে, আমরা ভাষা মডেল অ্যাপ্লিকেশন তৈরি করতে পারি যা একটি আদর্শ পাইপলাইন অনুসরণ করে: একজন ব্যবহারকারী একটি প্রাথমিক প্রশ্ন জিজ্ঞাসা করে, যা তারপর ভাষা মডেলে পাঠানো হয়। প্রশ্নের ভেক্টর উপস্থাপনাটি ভেক্টর ডেটাবেসে একটি মিল অনুসন্ধান করতে ব্যবহৃত হয়, তথ্যের প্রাসঙ্গিক অংশগুলি পুনরুদ্ধার করে।
এই অংশগুলিকে ভাষা মডেলে ফেরত দেওয়া হয়, এটি একটি উত্তর প্রদান করতে বা পছন্দসই পদক্ষেপ নিতে সক্ষম করে।
ল্যাংচেইন ডেটা-সচেতন অ্যাপ্লিকেশনগুলির বিকাশের সুবিধা দেয়, কারণ আমরা একটি ভেক্টর স্টোরে আমাদের নিজস্ব ডেটা উল্লেখ করতে পারি এবং খাঁটি, কারণ তারা প্রশ্নের উত্তর দেওয়ার বাইরেও পদক্ষেপ নিতে পারে। টি
তার ব্যবহারিক ব্যবহারের ক্ষেত্রে বিশেষ করে ব্যক্তিগত সহায়তায়, যেখানে একটি বৃহৎ ভাষার মডেল ফ্লাইট বুকিং, অর্থ স্থানান্তর বা ট্যাক্স-সম্পর্কিত বিষয়ে সহায়তা করার মতো কাজগুলি পরিচালনা করতে পারে।
অতিরিক্তভাবে, নতুন বিষয় অধ্যয়ন এবং শেখার প্রভাবগুলি তাৎপর্যপূর্ণ, কারণ একটি ভাষা মডেল একটি সম্পূর্ণ সিলেবাসকে উল্লেখ করতে পারে এবং শেখার প্রক্রিয়াটিকে ত্বরান্বিত করতে পারে। কোডিং, ডেটা বিশ্লেষণ এবং ডেটা বিজ্ঞানও এই অগ্রগতিগুলির দ্বারা ব্যাপকভাবে প্রভাবিত হবে বলে আশা করা হচ্ছে।
সবচেয়ে উত্তেজনাপূর্ণ সম্ভাবনাগুলির মধ্যে একটি হল বৃহৎ ভাষার মডেলগুলিকে বিদ্যমান কোম্পানির ডেটার সাথে সংযুক্ত করা, যেমন গ্রাহকের তথ্য বা বিপণন ডেটা। Meta's API বা Google এর API-এর মতো উন্নত API-এর সাথে এই একীকরণ ডেটা বিশ্লেষণ এবং ডেটা বিজ্ঞানে সূচকীয় অগ্রগতির প্রতিশ্রুতি দেয়।
কিভাবে একটি ওয়েবপেজ তৈরি করবেন (ডেমো)
বর্তমানে, ল্যাংচেইন পাইথন এবং জাভাস্ক্রিপ্ট প্যাকেজ হিসাবে উপলব্ধ।
আমরা LangChain ধারণা বাস্তবায়নের জন্য Streamlit, LangChain এবং OpenAI GPT-3 মডেল ব্যবহার করে একটি প্রদর্শনী ওয়েব অ্যাপ তৈরি করতে পারি।
কিন্তু প্রথমে, আমাদের অবশ্যই স্ট্রিমলিট, ল্যাংচেইন এবং ওপেনএআই সহ কয়েকটি নির্ভরতা ইনস্টল করতে হবে।
আগ্রহী
প্রবাহিত: ডেটা বিজ্ঞান-সম্পর্কিত ওয়েব অ্যাপ্লিকেশন তৈরির জন্য একটি জনপ্রিয় পাইথন প্যাকেজ
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
বেসিক সেটআপ
আমাদের প্রকল্পের কাঠামোগত ভিত্তি তখন স্ট্রিমলিট সিনট্যাক্স ব্যবহার করে স্থাপন করা হয়েছিল। আমরা অ্যাপটিকে "হোয়াটস ট্রু: ইউজিং সিম্পল সিকোয়েন্সিয়াল চেইন" শিরোনাম দিয়েছি এবং GitHub রিপোজিটরিতে একটি মার্কডাউন লিঙ্ক অন্তর্ভুক্ত করেছি যা অ্যাপের অনুপ্রেরণা হিসেবে কাজ করে।
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
ফ্রন্ট-এন্ড উইজেট
আমরা সহজ স্ট্রিমলিট সিনট্যাক্স ব্যবহার করে কয়েকটি প্রাসঙ্গিক তথ্য সহ অ্যাপটি সেট আপ করেছি:
# 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
ল্যাংচেইন থেকে। প্রতিটি দাবি সঠিক বা ভুল কিনা তা নির্ধারণ করার এবং সেইগুলির জন্য ন্যায্যতা প্রদান করার দায়িত্ব ব্যবহারকারীকে দেওয়া হয়। - সার্জারির
answer_chain
থেকে আউটপুট ব্যবহার করেquestion_chain
,assumptions_chain
, এবংfact_checker_chain
পূর্ববর্তী চেইন দ্বারা উত্পাদিত ডেটা ব্যবহার করে ব্যবহারকারীর প্রশ্নের উত্তর তৈরি করতে ইনপুট হিসাবে। এই চেইনটির জন্য টেমপ্লেট অনুরোধ করে যে ব্যবহারকারী তৈরি করা তথ্য ব্যবহার করে প্রথম প্রশ্নের উত্তর দেয়। - পূর্ববর্তী চেইন দ্বারা উত্পাদিত তথ্যের উপর ভিত্তি করে ব্যবহারকারীর অনুসন্ধানের চূড়ান্ত প্রতিক্রিয়া প্রদান করার জন্য, আমরা এই চেইনগুলিকে সামগ্রিক শৃঙ্খলে একীভূত করি। চেইন সম্পন্ন হওয়ার পরে, আমরা ব্যবহার করি
st.success()
ব্যবহারকারীকে সমাধান দেখানোর জন্য।
উপসংহার
আমরা ব্যবহার করে আরও জটিল পাইপলাইন তৈরি করতে বিভিন্ন ভাষার মডেল অ্যাকশনগুলিকে একসাথে চেইন করতে পারি SimpleSequentialChain
LangChain এর মডিউল। চ্যাটবট, প্রশ্ন-উত্তর সিস্টেম এবং ভাষা অনুবাদ টুল সহ বিভিন্ন ধরণের NLP অ্যাপ্লিকেশনের জন্য, এটি বেশ সহায়ক হতে পারে।
ল্যাংচেইনের উজ্জ্বলতা বিমূর্ত করার ক্ষমতার মধ্যে পাওয়া যায়, যা ব্যবহারকারীকে ভাষা মডেলিংয়ের সুনির্দিষ্ট বৈশিষ্ট্যের পরিবর্তে বর্তমান সমস্যাটিতে মনোনিবেশ করতে সক্ষম করে।
ল্যাংচেইন প্রাক-প্রশিক্ষিত মডেল এবং টেমপ্লেটের একটি নির্বাচন অফার করে অত্যাধুনিক ভাষার মডেল তৈরির প্রক্রিয়াটিকে আরও ব্যবহারকারী-বান্ধব করে তোলে।
এটি আপনাকে তাদের নিজস্ব ডেটা ব্যবহার করে ভাষার মডেলগুলিকে সূক্ষ্ম-টিউন করার বিকল্প দেয়, ভাষা মডেলগুলিকে কাস্টমাইজ করা সহজ করে তোলে৷ এটি আরও সুনির্দিষ্ট, ডোমেন-নির্দিষ্ট মডেলগুলির বিকাশকে সক্ষম করে যা একটি প্রদত্ত কাজের জন্য, প্রশিক্ষিত মডেলগুলিকে ছাড়িয়ে যায়।
সার্জারির SimpleSequentialChain
LangChain এর মডিউল এবং অন্যান্য বৈশিষ্ট্যগুলি এটিকে অত্যাধুনিক এনএলপি সিস্টেমগুলি দ্রুত বিকাশ এবং স্থাপনের জন্য একটি কার্যকর হাতিয়ার করে তোলে।
নির্দেশিকা সমন্ধে মতামত দিন