এই পাঠে একটি সম্পূর্ণ, বাস্তব ফিচার শুরু থেকে শেষ পর্যন্ত তৈরি করা হবে: যেকোনো ওয়েবসাইটে বসানো যায় এমন একটি চ্যাট উইজেট, OpenAI API-এর মাধ্যমে একটি AI মডেল দিয়ে সমর্থিত। কোনো ফ্রেমওয়ার্ক দরকার নেই — শুধু HTML, CSS, আর JavaScript।
একটি টগল বাটন, একটি চ্যাট উইন্ডো, একটি মেসেজ এরিয়া, আর একটি ইনপুট বক্স:
<button id="chatToggle" onclick="toggleChat()">Chat with AI</button>
<div id="chatWindow" class="hidden">
<div id="chatHeader">
<span>AI Assistant</span>
<button onclick="toggleChat()">✕</button>
</div>
<div id="chatMessages">
<div class="msg bot">Hello! How can I help you today?</div>
</div>
<div id="chatInput">
<input type="text" id="userInput" placeholder="Type your message..."
onkeypress="if(event.key==='Enter') sendMessage()">
<button onclick="sendMessage()">Send</button>
</div>
</div>এই ফাংশনটি ব্যবহারকারীর বার্তা AI মডেলে পাঠায় আর উত্তর দেখায়, কথোপকথনের হিসাব রাখে যাতে ফলো-আপ প্রশ্নের জন্য AI-এর কাছে প্রসঙ্গ থাকে:
const SYSTEM_PROMPT = `You are a helpful customer service assistant.
Answer questions about our courses, fees, and timings. If you don't
know something, say you'll connect the user with a staff member.
Keep responses under 100 words.`;
let messageHistory = [{ role: "system", content: SYSTEM_PROMPT }];
async function sendMessage() {
const input = document.getElementById('userInput');
const userText = input.value.trim();
if (!userText) return;
addMessage(userText, 'user');
messageHistory.push({ role: "user", content: userText });
input.value = '';
addMessage('...', 'bot');
const response = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ messages: messageHistory })
});
const data = await response.json();
removeTypingIndicator();
if (data.reply) {
addMessage(data.reply, 'bot');
messageHistory.push({ role: "assistant", content: data.reply });
} else {
addMessage('Sorry, I had trouble responding. Please try again.', 'bot');
}
}লক্ষ্য করুন এই সংস্করণটি সরাসরি OpenAI-এর বদলে আপনার নিজের সার্ভারে /api/chat ডাকে। এটি ইচ্ছাকৃত, আর এটাই এই পুরো ওয়াকথ্রুর সবচেয়ে গুরুত্বপূর্ণ পাঠ।
গুরুত্বপূর্ণ নিরাপত্তা ভুল — কখনো এটি করবেন না
আপনার AI প্রোভাইডারের API কী সরাসরি ফ্রন্টএন্ড JavaScript-এ রাখার মানে যে কেউ পেজ সোর্স দেখে সেটি চুরি করতে পারবে আর আপনার অ্যাকাউন্টে চার্জ বাড়িয়ে দিতে পারবে। এটি নতুনরা যে সবচেয়ে সাধারণ ভুলগুলো করেন তার একটি, আর এটি সম্পূর্ণভাবে এড়ানো যায়।
সমাধানটি সহজ: আপনার ফ্রন্টএন্ড আপনার নিজের সার্ভারে একটি ছোট স্ক্রিপ্ট ডাকে, আর শুধু সেই সার্ভার-সাইড স্ক্রিপ্টেই আসল API কী থাকে। এখানে একই ফিচার PHP-তে নিরাপদভাবে করা হয়েছে:
<?php
header('Content-Type: application/json');
$data = json_decode(file_get_contents('php://input'), true);
$userMessage = htmlspecialchars($data['message'] ?? '');
$apiKey = 'YOUR_KEY_HERE'; // নিরাপদ — ব্যবহারকারীরা এই ফাইলের বিষয়বস্তু কখনো দেখেন না
$payload = json_encode([
'model' => 'gpt-4o-mini',
'messages' => [
['role' => 'system', 'content' => 'You are a helpful assistant.'],
['role' => 'user', 'content' => $userMessage],
],
'max_tokens' => 300,
]);
$ch = curl_init('https://api.openai.com/v1/chat/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
"Authorization: Bearer $apiKey",
]);
echo curl_exec($ch);ব্রাউজার শুধু আপনার নিজের সার্ভারের সাথেই কথা বলে। আসল কী সেটি কখনো ছেড়ে যায় না। ঠিক এই প্যাটার্নটি — ফ্রন্টএন্ড আপনার সার্ভার ডাকে, আপনার সার্ভার AI প্রোভাইডার ডাকে — ঠিক এভাবেই প্রতিটি প্রোডাকশন AI ফিচার আসলে তৈরি করা হয়, ভাষা বা ফ্রেমওয়ার্ক যাই হোক না কেন।
এখন আপনি একটি বাস্তব AI ফিচার নিরাপদ, পেশাদার উপায়ে তৈরি করেছেন। পরের পাঠে আরও বিস্তৃত ওয়েব ডেভেলপমেন্ট ওয়ার্কফ্লোতে যাওয়া হবে যেখানে এটি মানানসই।