โค้ดชุดนี้เป็น 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 ที่บันทึกไว้จากlocalStorage
saveSettings()
: บันทึก API Key และ Model ลงในlocalStorage
sendMessage()
: ส่งข้อความไปยัง 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