โค้ดชุดนี้เป็น HTML, CSS และ JavaScript ที่สร้างหน้าเว็บสำหรับการโต้ตอบกับ API ของ DeepSeek ซึ่งเป็น AI Chatbot โดยผู้ใช้สามารถพิมพ์ข้อความ และรับการตอบกลับจาก DeepSeek ได้ หน้าเว็บนี้ยังมีการตั้งค่า API Key, เลือก Model และแสดงจำนวน Token ที่ใช้ รวมถึงดึงข้อมูลบทความจาก NConnect Insights Feed มาแสดงผลด้วย
ส่วนประกอบหลัก
- HTML (โครงสร้างหน้าเว็บ):
<header>: ส่วนหัวของหน้าเว็บ ประกอบด้วยโลโก้ (NConnect) และเมนูหลัก (Home, About, Services, Insights, Contact)<div class="container">: ส่วนหลักของเนื้อหา แบ่งเป็น<div id="settings-container">: ส่วนการตั้งค่า- ช่องใส่ API Key (
<input type="password" id="api-key">) - ปุ่ม Save (
<button onclick="saveSettings()">) - ตัวเลือก Model (
<select id="model-select">)
- ช่องใส่ API Key (
<div id="chat-container">: ส่วนการสนทนา<div id="messages">: แสดงข้อความสนทนา<div id="input-container">: ช่องพิมพ์ข้อความ (<input type="text" id="message-input">) และปุ่ม Generate (<button id="generate-btn" onclick="sendMessage()">)
<h1 id="insights-title">: หัวข้อ NConnect Insights Feed<div id="feed-container">: แสดงบทความจาก NConnect Insights
- CSS (การตกแต่งหน้าเว็บ):
- จัดรูปแบบหน้าเว็บให้สวยงาม, กำหนดสี, ฟอนต์, ระยะห่าง, และการจัดวางองค์ประกอบต่างๆ
- ใช้
flexboxและgridในการจัดวางเลย์เอาต์ - มีสไตล์สำหรับข้อความผู้ใช้ (
user-message), ข้อความบอท (bot-message), ข้อความที่กำลังประมวลผล (generating), ส่วนแสดงโค้ด (code-section), ปุ่มคัดลอก (copy-btn) - มีสไตล์สำหรับแสดงบทความ (
post), หัวข้อบทความ (post-title), ลิงก์บทความ (post-link) และรูปภาพประกอบ (post-image)
- JavaScript (การทำงานของหน้าเว็บ):
loadSettings(): โหลด API Key และ Model ที่บันทึกไว้จากlocalStoragesaveSettings(): บันทึก API Key และ Model ลงในlocalStoragesendMessage(): ส่งข้อความไปยัง DeepSeek API และรับการตอบกลับ- ตรวจสอบว่าใส่ API Key แล้วหรือยัง
- แสดงข้อความ “Generating…” ระหว่างรอการตอบกลับ
- ส่งคำขอ
POSTไปยังhttps://api.deepseek.com/v1/chat/completions - รับการตอบกลับในรูปแบบ JSON
- แสดงข้อความตอบกลับและจำนวน Token ที่ใช้
appendGeneratingMessage(): เพิ่มข้อความ “Generating…” ลงใน<div id="messages">processResponse(text): ประมวลผลข้อความตอบกลับจาก DeepSeek- แยกข้อความออกเป็นส่วนๆ ตามโค้ดบล็อก (“`)
- คืนค่าเป็นอาร์เรย์ของ object ที่มี type (code หรือ text) และ content
appendMessage(sender, text, tokensUsed): เพิ่มข้อความลงใน<div id="messages">- แยกข้อความตาม type (code หรือ text) และแสดงผลตามรูปแบบที่กำหนด
- แสดงจำนวน Token ที่ใช้ (สำหรับข้อความจากบอท)
- มีปุ่ม “Copy All” สำหรับคัดลอกข้อความทั้งหมด
- มีปุ่ม “Copy Code” สำหรับคัดลอกโค้ดบล็อก
formatText(text): จัดรูปแบบข้อความ เช่น ตัวหนา, ตัวเอียง, โค้ดcopyCode(button): คัดลอกโค้ดจากโค้ดบล็อก- การดึงข้อมูลจาก NConnect Insights Feed:
- ใช้
fetchดึงข้อมูลจากhttps://insights.nconnect.asia/wp-json/wp/v2/posts - แสดงบทความแต่ละบทความใน
<div class="post"> - แสดงรูปภาพ (ถ้ามี), หัวข้อบทความ, และลิงก์ “Read more”
- ใช้
- Event Listeners:
- กด Enter ในช่องพิมพ์ข้อความ (
#message-input) จะเรียกsendMessage() - เปลี่ยน Model ใน
#model-selectจะอัปเดตselectedModel
- กด Enter ในช่องพิมพ์ข้อความ (
วิธีการใช้งาน
- ใส่ API Key: ใส่ DeepSeek API Key ของคุณในช่อง “DeepSeek API Key” และกดปุ่ม “Save”
- เลือก Model: เลือก Model ที่ต้องการจากตัวเลือก (DeepSeek Chat, DeepSeek Reasoner, DeepSeek Coder)
- พิมพ์ข้อความ: พิมพ์ข้อความที่ต้องการส่งในช่อง “Type your message…”
- กด Generate: กดปุ่ม “Generate” หรือกด Enter เพื่อส่งข้อความ
- ดูการตอบกลับ: DeepSeek จะตอบกลับและแสดงในส่วน “Messages”
- ดูจำนวน Token: จำนวน Token ที่ใช้จะแสดงใต้ข้อความตอบกลับของบอท
Code
DeepSeek Chat Interface
NConnect Insights Feed