
ผมสร้าง AI ตอบ LINE OA อัตโนมัติเอง — ด้วย Gemini ฟรี ไม่ต้องจ่ายรายเดือน
ทีม Inboxly
สร้างเครื่องมือที่อยากใช้เอง
โพสต์ที่แล้วผมพูดถึงการทำ chatbot AI เชื่อม LINE OA — และบอกว่าเชื่อมได้หมดทั้ง Facebook, TikTok, Shopee, Lazada
มีคนถามเข้ามาเยอะมากว่า "ทำได้จริงไหม? ทำยังไง?"
โพสต์นี้จะอธิบาย concept ที่ทำให้มันเป็นไปได้ พร้อมโค้ด MVP ที่รันได้จริง

Concept หลัก — ทำไมเชื่อมได้ทุก platform?
ก่อนดูโค้ด ต้องเข้าใจ concept นี้ก่อน
ทุก platform ใช้ระบบ Webhook เหมือนกัน
Webhook คือ "ประตูรับข้อความ" — เมื่อลูกค้าพิมพ์ข้อความ platform จะส่ง HTTP POST มาที่ server ของเรา
ลูกค้าพิมพ์ข้อความ
↓
LINE / Facebook / TikTok / Shopee ส่ง POST → server เรา
↓
server เราอ่านข้อความ → ส่งให้ AI → ส่งคำตอบกลับทุก platform ทำแบบนี้หมด แค่ รูปแบบข้อมูลที่ส่งมาต่างกัน เท่านั้น
| Platform | Webhook format |
|---|---|
| LINE | `events[].message.text` |
| Facebook Messenger | `entry[].messaging[].message.text` |
| TikTok Shop | `message.content` |
| Shopee / Lazada | รูปแบบของแต่ละ platform |

Adapter Pattern — หัวใจของระบบ
วิธีที่ทำให้รองรับได้หลาย platform โดยไม่ต้องเขียน AI engine ซ้ำ คือ Adapter Pattern
แนวคิดง่ายๆ:
[LINE webhook] → LINE Adapter ↘
[Facebook webhook] → Facebook Adapter → AI Engine → ส่งคำตอบกลับ
[TikTok webhook] → TikTok Adapter ↗Adapter ทำหน้าที่แปลง format ของแต่ละ platform ให้เป็นรูปแบบเดียวกัน แล้วส่งต่อให้ AI Engine ตัวเดียว
AI Engine ไม่รู้ว่าข้อความมาจาก platform ไหน — มันแค่รับข้อความ ส่งให้ AI แล้วคืนคำตอบ
MVP นี้สาธิต LINE Adapter ก่อน เพราะเป็น platform หลักของตลาดไทย ตอนสอนครั้งต่อไปจะทำ Facebook และ TikTok ต่อ
มันทำอะไรได้บ้าง (LINE MVP)
เมื่อลูกค้าทักเข้า LINE OA — บอตจะ:
ทั้งหมดนี้เกิดขึ้นในเวลา 2–4 วินาที โดยเฉลี่ย

BYOK — ทำไมถึงไม่ต้องจ่ายรายเดือน?
BYOK = Bring Your Own Key — เอา API key ของตัวเองมาใส่
แทนที่จะจ่าย subscription ให้แพลตฟอร์ม คุณใช้ key โดยตรงกับ AI provider ค่าใช้จ่ายจึงไปตามที่ใช้จริง
และที่ดีกว่านั้น — Gemini 1.5 Flash มี Free Tier ให้ใช้ฟรีถึง 1 ล้าน token ต่อวัน (ณ วันที่เขียน) ซึ่งเกินพอสำหรับร้านขนาดเล็ก-กลาง
รองรับ 3 AI Provider
| Provider | Model แนะนำ | ฟรีไหม? |
|---|---|---|
| Gemini | gemini-1.5-flash | ✅ Free Tier มี |
| Claude | claude-haiku-4-5 | ❌ เสียเงิน (ถูก) |
| OpenAI | gpt-4o-mini | ❌ เสียเงิน (ถูก) |
สำหรับ MVP — เริ่มด้วย Gemini ก่อนเลย ไม่ต้องควักเงินทดสอบ
Feature หลักที่อยู่ใน MVP นี้
Knowledge Base
ใส่ข้อมูลร้านได้เป็นหมวดๆ เช่น ราคาสินค้า, เวลาทำการ, นโยบายคืนของ — AI จะดึงข้อมูลนี้มาตอบลูกค้าอัตโนมัติ
Handoff Keywords
ถ้าลูกค้าพิมพ์คำที่กำหนดไว้ เช่น "คุย", "เจ้าหน้าที่", "ต้องการคน" — AI จะหยุดตอบทันทีแล้ว "ยก" conversation ให้คนจัดการแทน
Anti-Race Condition
ระหว่างที่ AI กำลังคิดคำตอบ (2–4 วิ) ถ้าเจ้าหน้าที่กดรับสายก่อน — AI จะทิ้งคำตอบนั้น แทนที่จะส่งซ้อนกัน
Logs ทุก request
เก็บ provider, model, tokens ที่ใช้, latency, และ error ไว้ดูย้อนหลังได้ทั้งหมด

System Prompt — หัวใจที่ทำให้ AI ตอบดี
สิ่งที่ทำให้ AI ตอบลูกค้าได้เหมือน "พนักงานที่ถูก train มา" ไม่ใช่แค่ model — แต่คือ System Prompt ที่ออกแบบมาดี
MVP นี้ใช้โครงสร้าง prompt แบบนี้ (แสดง concept ไม่ใช่โค้ดจริง):
[Role & Tone]
คุณคือผู้ช่วยของร้าน {ชื่อร้าน} ตอบภาษาไทย สุภาพ กระชับ
[Knowledge Base]
{ข้อมูลร้านที่ admin ใส่ไว้ เช่น ราคา, เมนู, นโยบาย}
[Rules]
- ถ้าไม่รู้คำตอบ ให้บอกว่าจะส่งต่อให้เจ้าหน้าที่
- ห้ามประดิษฐ์ข้อมูลที่ไม่มีใน Knowledge Base
- ถ้าลูกค้าใช้คำ: {handoff keywords} → ให้หยุดตอบ
[Conversation History]
{10 ข้อความล่าสุด เพื่อให้ AI จำ context}
[Customer Message]
{ข้อความที่ลูกค้าส่งมา}ทำไมต้องใส่ประวัติการสนทนา?
ถ้าไม่ใส่ history — AI จะลืมทุกอย่างทุก message เช่น ลูกค้าถามว่า "แล้วถ้าสั่ง 2 ชิ้นล่ะ?" AI จะไม่รู้ว่า "2 ชิ้น" ของอะไร
MVP นี้ inject 10 ข้อความล่าสุดเข้า prompt ทุกครั้ง ทำให้ AI เข้าใจ context ของการสนทนาได้
Claude vs Gemini vs OpenAI — ใช้ต่างกันยังไง?
| Gemini 1.5 Flash | Claude Haiku | GPT-4o Mini | |
|---|---|---|---|
| ราคา | ฟรี (Free Tier) | $0.25 / 1M tokens | $0.15 / 1M tokens |
| ภาษาไทย | ดีมาก | ดีที่สุด | ดี |
| ความเร็ว | เร็ว | เร็ว | เร็ว |
| เหมาะกับ | ทดสอบ / ร้านเล็ก | ลูกค้าสำคัญ | ทางเลือกสาม |
ข้อสังเกต: Claude Haiku ตอบภาษาไทยได้ natural ที่สุด — ถ้าลูกค้าคุ้นเคยกับภาษาที่เป็นธรรมชาติ แนะนำให้ลอง Claude แม้จะมีค่าใช้จ่ายเล็กน้อย
สำหรับร้านที่รับข้อความ ~500 ข้อความ/วัน ค่า Claude อยู่ที่ ไม่กี่บาท/เดือน เท่านั้น
Tech Stack
ขอบเขต MVP — สิ่งที่ยังไม่มี
บอกตรงๆ ว่านี่คือ MVP ของ LINE — ยังมีสิ่งที่ขาด:
สิ่งที่มีแล้ว:
วิดีโออธิบาย
วิดีโอกำลังจะมาเร็วๆ นี้
LINE OA AI Chatbot MVP — Demo
ตัวอย่างการทำงานของระบบ AI ตอบ LINE OA อัตโนมัติ
อยากสร้างเอง? ใช้ Prompt นี้กับ Claude ได้เลย
นี่คือ prompt ที่ผมใช้ขอ Claude สร้างระบบนี้ ลอง gen เองได้เลย
Prompt สร้าง Backend (Go + Gin)
สร้าง Go backend ด้วย Gin framework สำหรับ LINE OA AI Chatbot โดยมี:
1. POST /webhook/line — รับ LINE webhook events
- verify X-Line-Signature header (HMAC-SHA256)
- parse events array, เอาเฉพาะ message.type = "text"
- ส่ง userId + text ไปยัง AIService
2. AIService interface:
- method: GenerateReply(ctx, userID, message string) (string, error)
- โหลด system prompt + knowledge base จาก database
- ดึง conversation history 10 ข้อความล่าสุดจาก DB
- inject เข้า prompt แล้วเรียก AI provider ที่เลือก
3. Provider interface รองรับ 3 ตัว:
- Gemini (gemini-1.5-flash via REST API)
- Claude (claude-haiku ผ่าน Anthropic SDK)
- OpenAI (gpt-4o-mini)
- เลือก provider ได้จาก config ใน DB
4. PostgreSQL tables:
- ai_config: provider, model, system_prompt, enabled, handoff_keywords[]
- knowledge_base: id, title, content, created_at
- ai_message_logs: user_id, direction, content, provider, tokens, latency_ms, created_at
5. API key เก็บเป็น AES-256-GCM ciphertext ใน DB
- encrypt/decrypt ด้วย AI_ENCRYPTION_KEY จาก env
6. Anti-race condition: ถ้า conversation ถูก assign ให้ agent ก่อน AI ตอบ ให้ทิ้ง reply นั้น
ใช้ Go 1.23, Gin, pgx/v5, เขียน clean architecture แยก handler/service/repositoryPrompt สร้าง Frontend (Next.js)
สร้าง Next.js 14 + TypeScript + Tailwind CSS หน้า Settings สำหรับ LINE OA AI Chatbot:
Tab 1 — AI Settings:
- Toggle เปิด/ปิด AI
- Dropdown เลือก Provider (Gemini / Claude / OpenAI)
- Input ชื่อ Model
- Input API Key (แสดงเฉพาะ 4 ตัวท้าย, มีปุ่ม reveal)
- Textarea System Prompt (multi-line, placeholder บอกว่าเขียนอะไร)
- Input Handoff Keywords (comma-separated)
- ปุ่ม Save + ทดสอบ connection
Tab 2 — Knowledge Base:
- รายการ knowledge items (title + content preview)
- ปุ่ม Add / Edit / Delete แต่ละ item
- Modal form สำหรับเพิ่ม/แก้ไข
- แสดง total tokens estimate
Tab 3 — Logs:
- ตารางแสดง log: timestamp, user_id, direction, provider, tokens, latency
- Filter by date range
- Export CSV
เชื่อม API กับ backend Go ผ่าน fetch, handle loading/error state ครบPrompt เขียน System Prompt สำหรับร้านค้า
เขียน system prompt สำหรับ AI ที่จะตอบลูกค้าแทนพนักงานของร้าน [ชื่อร้าน]
ข้อมูลร้าน:
- ประเภทธุรกิจ: [เช่น ร้านอาหาร / ร้านเสื้อผ้า / คลินิก]
- เวลาทำการ: [เช่น จันทร์-ศุกร์ 9:00-18:00]
- สิ่งที่ AI ควรทำ: ตอบคำถามเรื่องสินค้า, ราคา, การสั่งซื้อ, นโยบายคืนของ
- สิ่งที่ AI ห้ามทำ: ยืนยันราคาที่ไม่มีใน knowledge base, ให้ส่วนลดเอง
ต้องการให้ AI:
1. ตอบภาษาไทยสุภาพ กระชับ ไม่เกิน 3-4 ประโยค
2. ถ้าไม่รู้คำตอบ บอกว่า "ขอให้เจ้าหน้าที่ติดต่อกลับนะคะ"
3. ห้ามประดิษฐ์ข้อมูลที่ไม่มีใน knowledge base
4. ถ้าลูกค้าดูหงุดหงิดหรือร้องเรียน ให้ขอโทษก่อนแล้วโอนให้คนหมายเหตุ: Prompt เหล่านี้ใช้สร้าง prototype ได้ แต่โค้ด production ที่ขายจะมี error handling, security, logging, และ edge case ที่ครบกว่านี้มาก — ลอง gen เองก่อนได้เลย ถ้าติดหรืออยากได้ version ที่พร้อม deploy ค่อยมาดูที่ด้านล่าง
ลองใช้ของจริงก่อน
ก่อนตัดสินใจ ลองเล่นตัวเต็มได้ก่อน — login, ตั้งค่า AI, ใส่ key Gemini ของตัวเอง, ผูก LINE OA แล้วทดสอบจริงได้เลย
ลองใช้ของจริงก่อนตัดสินใจซื้อ
login เข้าระบบได้เลย ตั้งค่า AI Provider, ใส่ API key ของตัวเอง, ผูก LINE OA แล้วลองทดสอบกับลูกค้าจริงได้ทันที
รับโค้ดและ Setup Guide ฉบับเต็ม
โค้ดชุดนี้รวม:
ให้ทีมเราช่วย implement ให้
ปรับให้เข้ากับระบบร้านคุณโดยเฉพาะ — ติดต่อคุยก่อนได้เลย ไม่มีค่าใช้จ่ายในการพูดคุย
ให้ทีมเราช่วย implement ให้
ปรับให้เข้ากับระบบร้านคุณโดยเฉพาะ — ติดต่อคุยก่อนได้เลย ไม่มีค่าใช้จ่าย
ถ้าร้านคุณมีทั้ง LINE + Facebook + Instagram + อีกหลายช่องทาง และต้องการระบบที่รองรับทั้งทีม, หลาย OA, พร้อม inbox รวมในที่เดียว โดยไม่ต้องเขียนโค้ด — Inboxly ทำสิ่งเหล่านั้นได้แล้ววันนี้ ลองได้ฟรีที่ inboxly.team
ทีม Inboxly
สร้างเครื่องมือที่อยากใช้เอง