LangChain চ্যাট কীভাবে ব্যবহার করবেন: একদম শুরু থেকে প্রোডাকশন-রেডি
যদি আপনি কখনো কোনো লার্জ ল্যাঙ্গুয়েজ মডেলকে কোনো অ্যাপে যুক্ত করার চেষ্টা করে থাকেন এবং বাস্তব জটিলতায়—টুল, মেমরি, মাল্টি-টার্ন স্টেট, ইভাল—আঠা গলে যেতে অনুভব করেন, তবে আপনি একা নন। আশ্চর্যের বিষয়: বেশিরভাগ টিম প্রম্পটের চেয়ে অর্কেস্ট্রেশনে বেশি সময় ব্যয় করে। LangChain-এর চ্যাট ফ্রেমওয়ার্ক ঠিক সেখানেই আলো ছড়ায়। এই গাইডে, আমরা LangChain/Chat ব্যবহার করে নির্ভরযোগ্য, টুল-ব্যবহারকারী কথোপকথনমূলক এজেন্ট ডিজাইন করার একটি বাস্তব, এন্ড-টু-এন্ড পথ দেখাব, যা সত্যিই কাজ করে।
আমরা একটি বাস্তব ও সমাধান-ভিত্তিক শৈলী গ্রহণ করব এবং দ্রুত অগ্রসর হব: সমস্যা → আর্কিটেকচার → কার্যকরী কোড → প্রোডাকশন বিবেচনা। পথে, আমরা প্রম্পট, মেমরি, টুল, মূল্যায়ন এবং স্থাপনার জন্য সেরা অনুশীলনগুলি অন্তর্ভুক্ত করব। আপনি একজন কাস্টমার অ্যাসিস্ট্যান্ট, অভ্যন্তরীণ বিশ্লেষক বা গবেষণা কপilot তৈরি করছেন না কেন, এই ওয়াকথ্রু আপনাকে আত্মবিশ্বাসের সাথে তৈরি করতে সাহায্য করবে।
LangChain চ্যাট কী এবং কেন এটি ব্যবহার করবেন?
LangChain হল LLM-চালিত অ্যাপ্লিকেশন তৈরির জন্য একটি ওপেন-সোর্স ফ্রেমওয়ার্ক। “চ্যাট” লেয়ারটি মাল্টি-টার্ন ইন্টার্যাকশনের উপর ফোকাস করে—মেসেজ হিস্টরি ট্র্যাক করা, সিস্টেম নির্দেশাবলী প্রবেশ করানো, টুল এবং জ্ঞানের সাথে গ্রাউন্ডিং করা এবং স্ট্রাকচার্ড আউটপুটগুলি পরিচালনা করা। সংক্ষেপে, LangChain/Chat আপনাকে দেয়:
- কম্পোজিবল প্রিমিটিভস: প্রম্পট, মডেল, মেমরি, টুল, রিট্রিভার
- টুল ব্যবহার: মডেলকে টাইপ করা আর্গুমেন্ট সহ ফাংশন/এপিআই কল করতে দিন
- মেমরি: টোকেন না উড়িয়ে প্রাসঙ্গিক কথোপকথনের প্রসঙ্গ ধরে রাখুন
- RAG: হ্যালুসিনেশন কমাতে আপনার ডকুমেন্ট থেকে তথ্য পুনরুদ্ধার করুন
- চেইন এবং এজেন্ট: মাল্টি-স্টেপ রিজনিং এবং অ্যাকশনগুলি অর্কেস্ট্রেট করুন
- অবজার্ভেবিলিটি ও ইভাল: ব্যবহারকারীরা করার আগে গুণমান পরিমাপ করুন
যদি আপনার লক্ষ্য একটি শক্তিশালী কথোপকথন ইন্টারফেস হয়, তাহলে LangChain চ্যাট বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করতে হয় তা শিখলে আপনার সময় বাঁচবে এবং ঝুঁকি কমবে।
Quick Start: কয়েকটি লাইনে একটি মিনিমাল চ্যাট
আসুন OpenAI-কে মডেল হিসেবে ব্যবহার করে একটি সাধারণ প্রতিধ্বনি-শৈলীর চ্যাট দিয়ে শুরু করি। আপনি যেকোনো সাপোর্টেড প্রোভাইডার (যেমন, Anthropic, Google, Azure OpenAI, Together, Ollama-এর মাধ্যমে ওপেন-সোর্স) অদলবদল করতে পারেন।
# মিনিমাল LangChain চ্যাট
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.3)
response = llm.invoke(.\n"
"- If context is insufficient, ask a targeted question.\n"
)
prompt = ChatPromptTemplate.from_messages( or .
If no relevant sources are found, say so and propose next steps.
শুধুমাত্র বৈধ JSON রিটার্ন করুন যা প্রদত্ত স্কিমার সাথে সঙ্গতিপূর্ণ। JSON-এর বাইরে অন্য কোনো গদ্য অন্তর্ভুক্ত করবেন না।
সাধারণ সমস্যা এবং সেগুলি এড়ানোর উপায়
- অতিরিক্ত দীর্ঘ প্রসঙ্গ: সারসংক্ষেপ মেমরি এবং পুনরুদ্ধার ফিল্টার ব্যবহার করুন; k ক্যাপ করুন।
- টুল ফ্ল্যাপিং: রিডান্ডান্ট টুল কল সীমাবদ্ধ করতে সিস্টেম মেসেজ সেট করুন; বাজেট প্রয়োগ করুন।
- স্কিমা ড্রিফট: স্ট্রাকচার্ড পার্সার ব্যবহার করুন; ব্যবহারের আগে পাইড্যান্টিক দিয়ে যাচাই করুন।
- নীরব ব্যর্থতা: প্রতিটি টুলের জন্য টাইমআউট, রিট্রাই এবং লগিং যোগ করুন।
- হ্যালুসিনেটেড সোর্স: সর্বদা পুনরুদ্ধার করা ডকুমেন্টস উদ্ধৃত করুন; যদি কিছুই না থাকে, তবে স্পষ্টভাবে বলুন।
টেস্টিং এবং মূল্যায়ন: গুণমানকে পরিমাপযোগ্য করুন
- এজ কেসগুলি কভার করে একটি ছোট কিন্তু প্রতিনিধিত্বমূলক গোল্ড ডেটাসেট (২০-৫০টি কেস) তৈরি করুন।
- অক্ষ বরাবর মূল্যায়ন করুন: সঠিকতা, সম্পূর্ণতা, সুর, লেটেন্সি, টুলের খরচ।
- জোড়া ধরে পছন্দ টেস্টিং ব্যবহার করুন: বেসলাইন বনাম নতুন প্রম্পট/মডেল।
- সময়ের সাথে মেট্রিক ট্র্যাক করুন; উল্লেখযোগ্য রিগ্রেশন হলে বিল্ড ব্যর্থ করুন।
উদাহরণস্বরূপ কুইক রুব্রিক:
- টুল/সাইটেশনের ব্যবহার: ০–২
- টোকেন/লেটেন্সি বাজেট: ০–২
রোলআউটের আগে ≥৮/১০ এর লক্ষ্য রাখুন।
Deployment Notes এবং Integration Tips
- LangChain-কে একটি স্টেটলেস API-তে র্যাপ করুন; Redis বা Postgres-এ সেশন/ব্যবহারকারী দ্বারা কী করা মেমরি স্টোর করুন।
- অনুভূত লেটেন্সি উন্নত করতে স্ট্রিম টোকেন।
- এমবেডিং প্রি-লোড করুন এবং ভেক্টর ক্যাশে গরম করুন।
- নতুন প্রম্পট বা টুল ধীরে ধীরে রোল আউট করতে ফিচার ফ্ল্যাগ ব্যবহার করুন।
- গোপনীয়তা নীতিকে সম্মান জানিয়ে ডিবাগিংয়ের জন্য প্রয়োজনীয় সবকিছু লগ করুন।
By the way: আপনি যদি স্পেক্স ড্রাফট করেন, পরীক্ষার কেস তৈরি করেন, অথবা আপনার LangChain চ্যাট ফ্লো তৈরি করার সময় দ্রুত প্রম্পট পুনরাবৃত্তি করতে চান, তবে এটি মনে রাখা মূল্যবান যে Sider.AI (https://sider.ai/)-এর মতো একটি সহযোগী আপনার কর্মপ্রবাহের মধ্যেই প্রোটোটাইপিং এবং ডক জেনারেশনকে ত্বরান্বিত করতে পারে। এটি আপনাকে প্রম্পটগুলিতে পুনরাবৃত্তি করতে, আউটপুটগুলির তুলনা করতে এবং স্ট্রাকচার্ড কন্টেন্ট একত্রিত করতে সহায়তা করে যা আপনি LangChain টেমপ্লেটে ফেরত পাঠাতে পারেন। মূল বিষয় এবং পরবর্তী পদক্ষেপ
- LangChain/Chat কার্যকরভাবে কীভাবে ব্যবহার করতে হয় তা মূলত পাঁচটি স্তম্ভের উপর নির্ভর করে: প্রম্পট, মেমরি, টুল, RAG এবং ইভাল।
- মিনিমাল দিয়ে শুরু করুন, তারপর পুনরুদ্ধার এবং টাইপ করা টুল যুক্ত করুন।
- JSON এবং পার্সার দিয়ে স্ট্রাকচার প্রয়োগ করুন।
- স্কেলিং করার আগে ছোট, লক্ষ্যযুক্ত ইভাল দিয়ে গুণমান পরিমাপ করুন।
পরবর্তী পদক্ষেপ:
- একটি সিস্টেম প্রম্পট এবং বাফার মেমরি সহ একটি মিনিমাল চ্যাট তৈরি করুন।
- একটি উচ্চ-প্রভাব সম্পন্ন টুল (অনুসন্ধান/DB), তারপর আপনার ডকুমেন্টগুলির জন্য RAG যোগ করুন।
- ইভাল এবং লগিং প্রবর্তন করুন; সিস্টেম প্রম্পটে পুনরাবৃত্তি করুন।
- আপনি বড় হওয়ার সাথে সাথে সারসংক্ষেপ মেমরি এবং স্ট্রাকচার্ড আউটপুটে যান।
LangChain-এর সাথে একটি নির্ভরযোগ্য, প্রোডাকশন-গ্রেড চ্যাট সহকারী তৈরি করার জন্য আপনার কাছে এখন একটি ব্লুপ্রিন্ট রয়েছে।
FAQ
Q1: LangChain চ্যাট দিয়ে শুরু করার সহজতম উপায় কী?
একটি বেসিক চ্যাট মডেল (যেমন, ChatOpenAI) একটি ছোট সিস্টেম প্রম্পট এবং একটি একক হিউম্যান মেসেজের সাথে ব্যবহার করুন। তারপর মাল্টি-টার্ন প্রসঙ্গের জন্য ConversationBufferMemory যোগ করুন। আপনি যখন মূল UX যাচাই করেন তখন এটি LangChain চ্যাট ব্যবহার করা সহজ রাখে।
Q2: LangChain/Chat-এ আমি কীভাবে টুল বা ফাংশন কলিং যোগ করব?
পাইথন ফাংশনগুলিকে @tool দিয়ে সাজান এবং সেগুলিকে একটি এজেন্টে পাস করুন (যেমন, create_react_agent)। মডেলটি স্ট্রাকচার্ড আর্গুমেন্ট সহ টুল কল করবে, যা LangChain চ্যাটকে লুকআপ বা টিকিট তৈরির মতো সুনির্দিষ্ট অ্যাকশন করতে সক্ষম করে।
Q3: LangChain চ্যাট ব্যবহার করার সময় আমি কীভাবে হ্যালুসিনেশন কমাতে পারি?
RAG গ্রহণ করুন: আপনার ডকুমেন্ট এমবেড করুন, টপ-k চ্যাঙ্ক পুনরুদ্ধার করুন এবং সাইটেশন সহ উত্তরের ভিত্তি স্থাপন করুন। LangChain/Chat প্যাটার্নগুলি কীভাবে ব্যবহার করতে হয়, তাতে একটি 'cite-or-ask' নিয়ম যোগ করুন—উৎস উদ্ধৃত করুন অথবা আত্মবিশ্বাস কম হলে একটি স্পষ্টীকরণমূলক প্রশ্ন জিজ্ঞাসা করুন।
Q4: দীর্ঘ কথোপকথনের জন্য আমার কী মেমরি কৌশল ব্যবহার করা উচিত?
বাফার মেমরি দিয়ে শুরু করুন এবং টোকেন ব্যবহার নিয়ন্ত্রণ করতে সারসংক্ষেপ মেমরিতে যান। প্রোডাকশনের জন্য, ব্যবহারকারীর প্রোফাইল ডেটা আলাদাভাবে স্টোর করুন এবং পুরোনো টার্নগুলিকে সংকুচিত করুন যাতে LangChain চ্যাট দ্রুত এবং প্রাসঙ্গিক থাকে।
Q5: আমি কীভাবে একটি চ্যাট মডেল থেকে স্ট্রাকচার্ড JSON আউটপুট পাব?
StructuredOutputParser বা JSON মোড ব্যবহার করুন এবং প্রম্পট নির্দেশের মাধ্যমে স্কিমা প্রয়োগ করুন। এটি নিশ্চিত করে যে LangChain/Chat মেশিন-পার্সযোগ্য ফলাফল ফেরত দেয় যা আপনি নিরাপদে ডাউনস্ট্রিম সিস্টেমে ব্যবহার করতে পারেন।