Chatbots
নিজের intelligent conversation system বানানো।
১৯৬৬ সালে ELIZA — প্রথম chatbot যা psychologist এর মত response দিত। ২০২৪ এ ChatGPT — যা প্রায় human level conversation করে। মাঝখানে ৬০ বছরের evolution: rule-based → retrieval-based → generative → LLM-powered। নিজের chatbot বানানো এখন কয়েক ঘণ্টার কাজ।
Chatbot তিন ধরনের: (1) Rule-based — if/else, pattern matching (ELIZA), (2) Retrieval-based — predefined response থেকে best match (FAQ bot), (3) Generative — LLM দিয়ে dynamic response। Modern chatbot = LLM + system prompt + conversation history + tools (function calling) + memory (vector DB) — এটাই agent pattern।
ভাবুন একজন receptionist — কিছু standard question এ pre-defined answer (rule), customer question বুঝে FAQ থেকে relevant entry দেখায় (retrieval), অথবা নিজে think করে context-aware answer দেয় (generative)। Modern chatbot এই তিনটাই combine করে — simple greeting এ rule, FAQ এ retrieval, complex query তে LLM।
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_name = "microsoft/DialoGPT-small"
tok = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
model.eval()
def chat():
history_ids = None
print("Bot: Hi! Type 'quit' to exit.\n")
for step in range(6):
user = input("You: ")
if user.strip().lower() == "quit":
break
new_input_ids = tok.encode(user + tok.eos_token, return_tensors="pt")
bot_input_ids = (
torch.cat([history_ids, new_input_ids], dim=-1)
if history_ids is not None else new_input_ids
)
history_ids = model.generate(
bot_input_ids,
max_length=1000,
pad_token_id=tok.eos_token_id,
do_sample=True,
top_p=0.9,
temperature=0.8,
no_repeat_ngram_size=3,
)
reply = tok.decode(
history_ids[:, bot_input_ids.shape[-1]:][0],
skip_special_tokens=True,
)
print(f"Bot: {reply}\n")
if __name__ == "__main__":
chat()DialoGPT GPT-2 এর dialogue-tuned variant। প্রতিটা user turn কে EOS token দিয়ে separate করে history এর সাথে concatenate। model.generate() পুরো history দেখে next reply generate। history_ids loop এ update হয় — তাই context maintained।
একটা chatbot যেখানে user একটা persona (teacher, doctor, comedian) choose করে। System prompt সেই অনুযায়ী set হয়, conversation history maintain, এবং Gradio দিয়ে simple web UI। DialoGPT বা OpenAI/Gemini API ব্যবহার করুন।