আগের পাঠে একটি সাধারণ-উদ্দেশ্য AI মডেল কল করা হয়েছিল। এই পাঠে AI-কে আপনার নিজের তথ্যের সাথে সংযুক্ত করা হবে আর একাধিক ধাপ একসাথে চেইন করা হবে — বেশিরভাগ বাস্তব AI অ্যাপ্লিকেশনের পেছনের প্যাটার্ন।
কিছু AI মডেল টেক্সটের পাশাপাশি একটি ছবি গ্রহণ করে। সঠিক নির্দেশের সাথে একসাথে পাঠালে, এটি সত্যিই ক্লান্তিকর কাজ স্বয়ংক্রিয় করতে পারে — যেমন একটি অনলাইন দোকানের জন্য ছবি থেকে পণ্যের বর্ণনা লেখা:
import base64
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY_HERE")
with open("product.jpg", "rb") as image_file:
image_data = base64.b64encode(image_file.read()).decode("utf-8")
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}},
{"type": "text", "text": "Describe this product in 2 sentences for an online listing, then list 3 key features as bullet points."}
]
}]
)
print(response.choices[0].message.content)নিয়মিত নতুন পণ্য যোগ করা একটি ছোট দোকান ঠিক এটি ব্যবহার করে একগুচ্ছ ছবিকে এক সন্ধ্যার হাতে লেখার বদলে মিনিটে খসড়া লিস্টিং-এ পরিণত করতে পারে।
একটি সাধারণ চ্যাটবট শুধু তাই জানে যাতে এটি প্রশিক্ষিত হয়েছে — এটি কখনো আপনার নির্দিষ্ট PDF, ব্রোশিওর, বা FAQ ডকুমেন্ট দেখেনি। Retrieval-Augmented Generation (RAG), যা পরের পাঠে ধারণাগতভাবে আলোচিত হবে, এটি ঠিক করে। এখানে LangChain নামের একটি টুলকিট ব্যবহার করে আসলে একটি তৈরি করা কেমন দেখতে তা দেখানো হলো:
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
# ১. ডকুমেন্ট লোড করুন
loader = PyPDFLoader("course-brochure.pdf")
documents = loader.load()
# ২. এটিকে ছোট ওভারল্যাপিং চাংকে ভাগ করুন
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(documents)
# ৩. চাংকগুলোকে সার্চযোগ্য ভেক্টরে রূপান্তর করে জমা রাখুন
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(chunks, embeddings)
# ৪. একটি চেইন তৈরি করুন যা প্রাসঙ্গিক চাংক খুঁজে বের করে, তারপর AI-কে জিজ্ঞাসা করে
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o-mini", temperature=0),
retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
)
# ৫. একটি প্রশ্ন জিজ্ঞাসা করুন — শুধু ডকুমেন্টের বিষয়বস্তু থেকে উত্তর দেওয়া হয়
result = qa_chain.invoke({"query": "What are the course fees?"})
print(result["result"])AI এখন শুধু আপনার ডকুমেন্টে আসলে বিদ্যমান তথ্য ব্যবহার করে উত্তর দেয় — এর সাধারণ প্রশিক্ষণ তথ্য নয়। ঠিক এই প্যাটার্নটাই একটি হাসপাতালকে কর্মীদের তাদের নিজস্ব প্রোটোকলের বিরুদ্ধে স্বাভাবিক-ভাষার প্রশ্ন জিজ্ঞাসা করতে দিতে পারে, বা একটি কোম্পানি এভাবেই একটি সাপোর্ট বট তৈরি করে যা শুধু নিজস্ব ডকুমেন্টেশন থেকেই উত্তর দেয়।
প্রতিটি অটোমেশনের জন্য কাস্টম কোড লাগে না। n8n আর Make.com-এর মতো টুল আপনাকে ভিজ্যুয়ালি AI-কে অন্য অ্যাপের সাথে সংযুক্ত করতে দেয় — "যখন একটি নতুন ফর্ম রেসপন্স আসে, এটি সংক্ষিপ্ত করতে একটি AI মডেলে পাঠান, তারপর সারসংক্ষেপ একটি মেসেজিং চ্যানেলে পোস্ট করুন" — একটি স্ক্রিপ্ট লেখার বদলে ব্লক টেনে এনে সংযুক্ত করে তৈরি। এগুলো বিশেষভাবে জানার মতো কারণ এগুলো একজন নন-ডেভেলপারকে বাস্তব অটোমেশন তৈরি করতে দেয় যা অন্যথায় কাস্টম কোড প্রয়োজন হতো।
এই অংশে আগে আলোচিত ওপেন-সোর্স, নিজে-চালান বিকল্প — স্থানীয় মডেলের জন্য Ollama — এখানেও প্রযোজ্য: প্রাইভেসি-সংবেদনশীল ডকুমেন্ট বা বেশি-পরিমাণ অটোমেশনের জন্য যেখানে API খরচ বেড়ে যায়, নিজের হার্ডওয়্যারে একটি ওপেন মডেল চালানো তথ্য বাইরের কোনো সার্ভিসে পাঠানো সম্পূর্ণভাবে এড়ায়।
এখন আপনি AI-কে বাস্তব ডকুমেন্টের সাথে সংযুক্ত করেছেন আর একাধিক ধাপ একসাথে চেইন করেছেন — সত্যিকারের প্রোডাকশন-আকৃতির দক্ষতা। পরের পাঠে এই সবকিছুর নিচের ধারণাগুলোতে ফিরে যাওয়া হবে: মেশিন লার্নিং-এর মৌলিক বিষয়।