ลองสร้าง AI Chatbot บน AWS: จาก Bedrock ถึง Next.js แบบ Serverless

ai chatbot aws bedrock nextjs

Written by

in

ช่วงนี้ผมกำลังทดลองสร้าง AI Chatbot โดยใช้ AWS เป็น Backend หลัก

โจทย์ไม่ได้ซับซ้อนมาก

ผมต้องการ Chatbot ที่รับคำถามจากหน้าเว็บ เช่น

“IMOTIF ให้บริการอะไรบ้าง?”

แล้วส่งคำถามไปให้ AI ประมวลผล ก่อนส่งคำตอบกลับมาแสดงบนหน้าเว็บ

Architecture ที่ใช้ตอนนี้ประมาณนี้

Next.js → API Gateway → AWS Lambda → Amazon Bedrock

ข้อดีคือไม่ต้องเปิด Server รันตลอดเวลา และแต่ละส่วนสามารถแยกออกจากกันได้ค่อนข้างชัดเจน

1. Amazon Bedrock ทำหน้าที่เป็น AI Engine

Amazon Bedrock เป็นบริการของ AWS สำหรับเรียกใช้งาน Foundation Model ผ่าน API

แทนที่จะต้องติดตั้งหรือ Host LLM เอง เราสามารถส่ง Prompt ไปยัง Model แล้วรับคำตอบกลับมาได้เลย

Concept ง่าย ๆ คือ

User Question
      ↓
Amazon Bedrock
      ↓
AI Response

แต่ในระบบจริง เราไม่ควรให้ Browser เรียก Bedrock โดยตรง

เพราะจะมีเรื่อง Credentials, Security และ Business Logic เข้ามาเกี่ยวข้อง

จึงต้องมี Backend คั่นกลาง

2. ใช้ AWS Lambda เป็น Backend

ใน POC นี้ผมเลือกใช้ AWS Lambda

Lambda คือ Serverless Compute ของ AWS

เราเขียน Function ขึ้นมา เช่น

POST /chat

เมื่อได้รับข้อความ

{
  "message": "IMOTIF ให้บริการอะไรบ้างครับ"
}

Lambda จะนำข้อความไปเรียก Amazon Bedrock

แล้วคืน Response กลับมา

ตัวอย่าง

{
  "answer": "IMOTIF ให้บริการ Odoo ERP, Software Development, Cloud Service และ AI Integration"
}

ข้อดีของ Lambda สำหรับงานลักษณะนี้คือ

  • ไม่ต้องดูแล Server
  • ไม่ต้องเปิด EC2 ทิ้งไว้
  • Scale ตาม Request
  • เหมาะกับ Prototype และ API ที่ไม่ได้มี Traffic ตลอดเวลา

สำหรับการเริ่มทำ AI Application ผมมองว่านี่เป็น Architecture ที่ค่อนข้างน่าสนใจ

3. ใช้ API Gateway เปิด Endpoint ให้ Frontend เรียก

Lambda อย่างเดียว Browser ยังเรียกใช้งานได้ไม่สะดวก

จึงใช้ Amazon API Gateway เป็นตัวรับ HTTP Request

Architecture จึงกลายเป็น

Next.js
   ↓
POST /chat
   ↓
API Gateway
   ↓
Lambda
   ↓
Amazon Bedrock

ในกรณีนี้ผมใช้ HTTP API

สำหรับ API เล็ก ๆ แบบ Chat Endpoint ผมมองว่า HTTP API เพียงพอ และ Setup น้อยกว่า REST API

เมื่อ Deploy แล้วจะได้ URL ลักษณะประมาณ

https://xxxxx.execute-api.ap-southeast-7.amazonaws.com/default/chat

เราสามารถ Test ด้วย curl ก่อนต่อ Frontend

curl -X POST \
  https://xxxxx.execute-api.ap-southeast-7.amazonaws.com/default/chat \
  -H "Content-Type: application/json" \
  -d '{"message":"IMOTIF ให้บริการอะไรบ้างครับ"}'

ถ้าได้ Response กลับมา แปลว่า Backend Pipeline ทำงานแล้ว

4. ทำไมต้อง Test ด้วย curl ก่อน

จุดนี้สำคัญกว่าที่คิด

ตอนแรกผมพยายามต่อ Frontend เลย

ผลคือ

Bad Request

แล้วก็เริ่มไล่ดู Next.js
ไล่ดู Environment Variable
ไล่ดู API Gateway
ไล่ดู Lambda

ทั้งที่วิธี Debug ที่ง่ายกว่าคือแยกระบบออกเป็นชั้น ๆ

เริ่มจาก

Lambda → Bedrock

ให้ทำงานก่อน

จากนั้น

API Gateway → Lambda → Bedrock

แล้ว Test ด้วย curl

เมื่อ Backend ทำงานแน่นอนแล้ว ค่อยต่อ

Next.js → API Gateway

วิธีนี้ลดพื้นที่ในการหา Bug ได้เยอะมาก

เป็นหลักพื้นฐาน แต่พอทำระบบหลาย Layer พร้อมกัน เรามักลืมมัน

5. ต่อ Next.js เป็น Chat UI

เมื่อ API ใช้งานได้แล้ว Frontend ค่อนข้างตรงไปตรงมา

Concept คือ

const response = await fetch(`${apiBaseUrl}/chat`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    message,
  }),
});

รับ JSON กลับมา

const data = await response.json();

แล้วแสดง

data.answer

แค่นี้เราก็ได้ AI Chatbot พื้นฐานที่ Frontend และ Backend แยกออกจากกันแล้ว

6. โครงสร้างนี้เหมาะกับ Production ไหม

ถ้าเป็น POC หรือ MVP ผมคิดว่าเหมาะมาก

แต่ถ้าจะใช้จริง ยังมีหลายเรื่องที่ต้องเพิ่ม

เช่น

Authentication

ใครสามารถเรียก Chat API ได้บ้าง

ถ้าเปิด Public Endpoint ทิ้งไว้ ใครก็สามารถเรียก API และทำให้เกิดค่าใช้จ่ายได้

Rate Limit

ควรกำหนดจำนวน Request ต่อ User หรือ IP

Conversation History

ตอนนี้แต่ละคำถามอาจเป็น Stateless

แต่ Chatbot จริงควรเข้าใจ Conversation ก่อนหน้า

Knowledge Base

ถ้าอยากให้ Bot ตอบเรื่องบริษัทได้แม่นขึ้น ไม่ควรเอาข้อมูลทั้งหมดใส่ Prompt

แต่ควรใช้แนวทางอย่าง

RAG — Retrieval-Augmented Generation

ให้ระบบค้นข้อมูลที่เกี่ยวข้องก่อน แล้วส่งเฉพาะ Context ที่จำเป็นให้ AI

Logging

ต้องรู้ว่า User ถามอะไร

AI ตอบอะไร

ใช้ Token เท่าไร

และ Error เกิดที่ Layer ไหน

7. ขั้นต่อไปคือทำให้ AI รู้จักข้อมูลของบริษัท

Chatbot ที่เรียก LLM ได้ยังไม่ได้แปลว่าเป็น Business AI

สิ่งที่น่าสนใจกว่าคือ

ถ้า Chatbot สามารถเข้าถึง

  • Product
  • Service
  • FAQ
  • CRM
  • Sales
  • ERP
  • Inventory
  • Accounting

ของบริษัทได้ จะเกิดอะไรขึ้น

ตัวอย่างเช่น

แทนที่จะถามว่า

IMOTIF ให้บริการอะไรบ้าง

อาจถามได้ว่า

เดือนนี้มี Lead ใหม่กี่ราย

หรือ

ลูกค้ารายไหนมี Quotation ที่ยังไม่ได้ Follow up

หรือ

Product ตัวไหน Stock ต่ำกว่าระดับที่กำหนด

ตรงนี้ทำให้ Chatbot เริ่มเปลี่ยนจาก

AI Chat

ไปเป็น

AI Business Interface

และนี่เป็นส่วนที่ผมคิดว่าน่าสนใจกว่า Chatbot ทั่วไปมาก

เพราะเป้าหมายสุดท้ายของ AI ในองค์กรอาจไม่ใช่การมี Chatbot อีกหนึ่งตัว

แต่คือการทำให้คนสามารถ คุยกับข้อมูลและระบบของตัวเองได้โดยตรง

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *