คุณเคยฝันอยากมี AI Chatbot อัจฉริยะเป็นของตัวเองบนหน้าเว็บไซต์ แต่คิดว่ามันเป็นเรื่องยุ่งยากที่ต้องใช้ Backend ซับซ้อนหรือตั้งค่าเซิร์ฟเวอร์วุ่นวายหรือไม่?
ข่าวดี! ในบทความนี้ เราจะลบภาพจำนั้นทิ้งไป เราจะมาสร้าง AI Chatbot ที่สามารถ “คิด” และ “โต้ตอบ” ได้จริง (ไม่ใช่แค่ Bot ที่ตั้งคำตอบไว้ล่วงหน้า) โดยใช้เพียงแค่ 3 ส่วนประกอบหลักที่คุณคุ้นเคย: HTML (สำหรับโครงสร้าง), CSS (สำหรับความสวยงาม), และ JavaScript (สำหรับสมองส่วนหน้า) ที่จะทำหน้าที่เรียกใช้ “สมองส่วนหลัง” ซึ่งก็คือ AI API
นี่คือคู่มือฉบับ “โค้ดหน้าเดียวจบ” ที่จะเปลี่ยนหน้าเว็บเปล่าๆ ของคุณให้กลายเป็นคู่สนทนาอัจฉริยะ
🧠 แนวคิด: มันทำงานอย่างไร?
ก่อนจะลุยโค้ด เรามาเข้าใจภาพรวมง่ายๆ กันก่อน:
- Frontend (HTML/CSS): นี่คือหน้าตาของแชท (Chat Interface) ที่ผู้ใช้เห็น มีกล่องข้อความให้พิมพ์ และปุ่มส่ง
- Client-Side Logic (JavaScript): นี่คือหัวใจของเราในวันนี้ เมื่อผู้ใช้กด “ส่ง”, JavaScript จะ:
- รับข้อความที่ผู้ใช้พิมพ์
- แสดงข้อความนั้นบนหน้าจอ
- “ยิง” ข้อความนั้นไปขอคำตอบจาก AI API ผ่านอินเทอร์เน็ต (ด้วยคำสั่ง
fetch)
- The AI Brain (API): นี่คือสมองอัจฉริยะที่เราจะไป “ยืม” ใช้ ในบทความนี้ เราจะใช้ Google Gemini API (ซึ่งสามารถเรียกใช้ได้ง่ายและมี Free Tier) AI จะรับคำถามของเรา, ประมวลผล, และส่งคำตอบกลับมาเป็นข้อความ
- JavaScript (อีกครั้ง): เมื่อ JS ได้รับคำตอบจาก AI API แล้ว มันก็จะนำข้อความนั้นมาแสดงผลบนหน้าจอให้ผู้ใช้เห็น
ง่ายๆ แค่นี้เลย!
🔑 ขั้นตอนที่ 0: สิ่งที่คุณต้องมี (สำคัญมาก!)
AI ไม่ใช่ของฟรี (แต่มีให้ใช้ฟรีในโควต้า) คุณต้องมี “กุญแจ” เพื่อบอก AI ว่า “นี่คือฉันนะ ขอใช้สมองเธอหน่อย” กุญแจนี้เรียกว่า API Key
สำหรับบทความนี้ เราจะใช้ Google Gemini:
- ไปที่ Google AI Studio (ค้นหา Google ได้เลย)
- ลงชื่อเข้าใช้ด้วยบัญชี Google
- สร้างโปรเจกต์ใหม่ และคลิกที่ “Get API Key”
- คัดลอก Key นั้นเก็บไว้ในที่ปลอดภัย ห้ามแชร์ให้ใครเห็น!
🛠️ ขั้นตอนที่ 1: โครงสร้างหน้าแชท (HTML)
สร้างไฟล์ชื่อ index.html แล้ววางโค้ดนี้ลงไป นี่คือโครงสร้างพื้นฐานสุดๆ
HTML
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My AI Chatbot</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>My AI Chatbot</h1>
<div id="chat-container">
<div id="chat-log"></div>
<div id="chat-input-area">
<input type="text" id="user-input" placeholder="พิมพ์ข้อความที่นี่...">
<button id="send-button">ส่ง</button>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
💅 ขั้นตอนที่ 2: แต่งหน้าทาปาก (CSS)
เพื่อให้มันดูเหมือนหน้าต่างแชทจริงๆ สร้างไฟล์ style.css แล้ววางโค้ดนี้
CSS
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
#chat-container {
width: 90%;
max-width: 600px;
height: 70vh;
border: 1px solid #ccc;
background-color: #fff;
border-radius: 8px;
display: flex;
flex-direction: column;
overflow: hidden;
}
#chat-log {
flex-grow: 1;
padding: 10px;
overflow-y: auto; /* ทำให้เลื่อนได้ถ้าข้อความยาว */
}
.message {
margin-bottom: 10px;
padding: 8px 12px;
border-radius: 15px;
line-height: 1.4;
}
.user {
background-color: #007bff;
color: white;
align-self: flex-end; /* ข้อความเราอยู่ขวา */
margin-left: auto;
}
.bot {
background-color: #e9e9eb;
color: black;
align-self: flex-start; /* ข้อความ Bot อยู่ซ้าย */
}
#chat-input-area {
display: flex;
border-top: 1px solid #ccc;
}
#user-input {
flex-grow: 1;
border: none;
padding: 10px;
font-size: 1em;
}
#send-button {
border: none;
background-color: #007bff;
color: white;
padding: 0 20px;
cursor: pointer;
font-size: 1em;
}
#send-button:hover {
background-color: #0056b3;
}
🚀 ขั้นตอนที่ 3: สมองส่วนหน้า (JavaScript)
นี่คือพระเอกของเรา! สร้างไฟล์ script.js นี่คือที่ที่เราจะใส่ API Key และเขียน Logic ทั้งหมด
สำคัญมาก: ห้ามใช้ API Key ของคุณในโค้ด JavaScript ที่จะนำขึ้นเว็บไซต์จริง (Production) เพราะใครๆ ก็สามารถเปิดดูและขโมย Key ของคุณไปใช้ได้ วิธีนี้ใช้สำหรับ “ทดสอบในเครื่องตัวเอง” เท่านั้น
JavaScript
// 1. เชื่อมต่อกับ Element ใน HTML
const chatLog = document.getElementById('chat-log');
const userInput = document.getElementById('user-input');
const sendButton = document.getElementById('send-button');
// 2. ใส่ API Key ที่คุณได้มา
// ‼️ คำเตือน: นี่เป็นวิธีที่ไม่ปลอดภัยสำหรับ Production ‼️
// ‼️ ห้ามอัปโหลดโค้ดนี้พร้อม Key จริงขึ้น GitHub หรือเซิร์ฟเวอร์สาธารณะ! ‼️
const API_KEY = 'YOUR_GOOGLE_AI_API_KEY'; // <--- ‼️ ใส่ Key ของคุณที่นี่
const API_URL = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${API_KEY}`;
// 3. เมื่อกดปุ่ม "ส่ง"
sendButton.addEventListener('click', sendMessage);
userInput.addEventListener('keydown', (event) => {
if (event.key === 'Enter') {
sendMessage();
}
});
// 4. ฟังก์ชันหลักในการส่งและรับข้อความ
async function sendMessage() {
const userMessage = userInput.value.trim();
// ถ้าไม่ได้พิมพ์อะไรมา ก็ไม่ต้องทำอะไร
if (userMessage === '') {
return;
}
// แสดงข้อความของผู้ใช้บนจอ
appendMessage('user', userMessage);
userInput.value = ''; // เคลียร์ช่องพิมพ์
// ---- ส่วนที่เรียก AI ----
try {
// แสดง "กำลังพิมพ์..."
appendMessage('bot', 'กำลังคิด...');
const response = await fetch(API_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
// นี่คือรูปแบบที่ Gemini ต้องการ
contents: [{
parts: [{
text: userMessage
}]
}]
})
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
// ดึงข้อความคำตอบจาก AI
// (เราต้องเช็คก่อนว่ามีคำตอบกลับมาจริง)
const botMessage = data.candidates[0]?.content?.parts[0]?.text || "ขออภัย ฉันไม่เข้าใจค่ะ";
// ลบ "กำลังพิมพ์..." ออก
removeLastMessage();
// แสดงคำตอบของ Bot
appendMessage('bot', botMessage);
} catch (error) {
console.error('Error fetching AI response:', error);
removeLastMessage(); // ลบ "กำลังพิมพ์..."
appendMessage('bot', 'เกิดข้อผิดพลาดในการเชื่อมต่อ: ' + error.message);
}
// ---- จบส่วนที่เรียก AI ----
}
// 5. ฟังก์ชันช่วยในการแสดงข้อความบนจอ
function appendMessage(sender, message) {
const messageElement = document.createElement('div');
messageElement.classList.add('message', sender); // เพิ่ม class 'message' และ class 'user' หรือ 'bot'
messageElement.innerText = message;
chatLog.appendChild(messageElement);
chatLog.scrollTop = chatLog.scrollHeight; // เลื่อนไปล่างสุด
}
// 6. ฟังก์ชันลบข้อความ "กำลังพิมพ์..."
function removeLastMessage() {
const lastMessage = chatLog.lastChild;
if (lastMessage && lastMessage.classList.contains('bot')) {
chatLog.removeChild(lastMessage);
}
}
🚨 ย้ำอีกครั้ง: เรื่องความปลอดภัยของ API Key
วิธีที่เราทำในบทความนี้ (ใส่ Key ใน JavaScript) เหมาะสำหรับการทดลองเล่นและพัฒนาในเครื่องของคุณเท่านั้น
ห้ามอัปโหลดโค้ดนี้ขึ้นเว็บโฮสติ้งสาธารณะเด็ดขาด!
หากคุณต้องการนำขึ้นเว็บจริง คุณต้องสร้าง “Backend Proxy” (เช่น ใช้ Node.js, Python หรือ Cloud Functions) เพื่อทำหน้าที่เป็นตัวกลางในการซ่อน API Key ไม่ให้แสดงต่อสาธารณะ
สรุป
ยินดีด้วย! ตอนนี้คุณมีเว็บ AI Chatbot ส่วนตัวที่ทำงานได้จริงแล้ว นี่เป็นเพียงจุดเริ่มต้น คุณสามารถนำไปต่อยอดได้อีกมากมาย เช่น:
- ปรับแต่ง CSS ให้สวยงามกว่านี้
- เพิ่มระบบจดจำบทสนทนา (Conversation History)
- เปลี่ยนไปใช้ AI API เจ้าอื่น (เช่น OpenAI)
- และที่สำคัญที่สุด คือการเรียนรู้วิธีสร้าง Backend Proxy เพื่อความปลอดภัย
ขอให้สนุกกับการสร้างสรรค์ค่ะ!



