🔧 วิธีการส่งข้อมูลไปยัง ChatGPT API (OpenAI)
✅ 1. โครงสร้างหลักที่ใช้คือ messages
(chat format)
เวลาคุณจะส่งข้อมูลไปที่ API จะต้องมีการส่งในรูปแบบของ “ข้อความสนทนา” (conversational messages) โดยมี role
และ content
เช่น:
{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "คุณคือผู้ช่วยอัจฉริยะสำหรับนักศึกษาในมหาวิทยาลัย A ที่สามารถตอบคำถามเกี่ยวกับหลักสูตร การเรียน การลงทะเบียน ฯลฯ"
},
{
"role": "user",
"content": "สวัสดีครับ อยากทราบว่าหลักสูตรวิศวกรรมคอมพิวเตอร์ปี 1 ต้องเรียนวิชาอะไรบ้าง"
}
]
}
✳️ อธิบายโครงสร้าง
Role | คำอธิบาย |
---|---|
system |
ใช้กำหนดบริบท (context) หรือบทบาทของ AI เช่น เป็นผู้ช่วยด้านการศึกษา |
user |
ข้อความจากผู้ใช้งาน |
assistant |
(ไม่จำเป็นต้องมีตอนส่ง initial request) ใช้สำหรับใส่ history ของคำตอบจาก AI ถ้ามีการสนทนาแบบต่อเนื่อง |
📦 สิ่งที่คุณควรส่งเข้า API
✅ แบบที่ 1: เนื้อหาคงที่ + คำถามผู้ใช้
หากคุณมีเนื้อหาเกี่ยวกับมหาวิทยาลัย เช่น กฎ ระเบียบ ตารางเรียน ฯลฯ และอยากให้ ChatGPT ตอบคำถามจากผู้ใช้ตามเนื้อหาเหล่านี้ คุณสามารถใส่เนื้อหาใน message แรก เช่นนี้:
{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "ข้อมูลเกี่ยวกับมหาวิทยาลัย A:\n- ภาคเรียนแบ่งเป็น 2 เทอม\n- วิศวกรรมคอมพิวเตอร์ปี 1 เรียน วิชา A, B, C\nคุณคือผู้ช่วยที่ใช้ข้อมูลนี้ในการตอบคำถาม"
},
{
"role": "user",
"content": "ปี 1 วิศวกรรมคอมพิวเตอร์ต้องเรียนวิชาอะไรบ้าง"
}
]
}
หากเนื้อหามีขนาดใหญ่ อาจพิจารณาใช้ Retrieval-Augmented Generation (RAG) หรือเก็บข้อมูลไว้ใน Vector DB แล้วค้นก่อนส่ง prompt
📚 Document ที่เกี่ยวข้อง
- 📘 Chat Completions API Reference (official)
- 📘 Guide: How to structure messages
- 📘 OpenAI Function Calling / Tools
✅ แพทเทิร์นที่แนะนำสำหรับเว็บ AI ของคุณ
- มี เนื้อหาหลัก ที่เกี่ยวกับมหาวิทยาลัย (เก็บไว้ฝั่ง backend)
- เมื่อผู้ใช้ส่งคำถาม → นำคำถามนั้น + เนื้อหาที่เกี่ยวข้อง → สร้าง prompt → ส่งไปยัง ChatGPT API
- รับคำตอบ → แสดงบนหน้าเว็บ
หากอยากให้ระบบฉลาดขึ้น สามารถใช้เทคนิคเพิ่มเติม เช่น:
- ใส่ system prompt ที่ละเอียด
- ดึง context เฉพาะจาก Vector DB
- ใช้ memory/chat history เพื่อให้การสนทนาลื่นไหล
🧠 วิธีเขียน system
role ให้ละเอียดและแม่นยำ
system
role มีหน้าที่ควบคุมบทบาท พฤติกรรม และขอบเขตของ AI โดยการเขียนให้ละเอียดจะช่วยให้โมเดลเข้าใจบริบทของงานได้ดีขึ้น
✅ ตัวอย่างที่เขียนแบบละเอียด (พร้อมใช้)
{
"role": "system",
"content": "คุณคือผู้ช่วย AI สำหรับนักศึกษามหาวิทยาลัย A \
ทำหน้าที่ให้ข้อมูลเกี่ยวกับหลักสูตรการเรียน การลงทะเบียน กฎระเบียบ และบริการต่าง ๆ ในมหาวิทยาลัย \
คุณสามารถตอบคำถามเกี่ยวกับคณะต่าง ๆ วิชาที่เปิดสอนในแต่ละปี ตารางการลงทะเบียน ระบบเกรด และชีวิตในรั้วมหาวิทยาลัย \
โปรดใช้ภาษาที่สุภาพ เป็นกันเอง และอธิบายให้เข้าใจง่ายสำหรับนักศึกษาทุกชั้นปี \
หากมีคำถามที่คุณไม่สามารถตอบได้ ให้บอกผู้ใช้งานว่าไม่สามารถให้ข้อมูลได้ และแนะนำให้ติดต่อเจ้าหน้าที่โดยตรง"
}
🔍 โครงสร้างการเขียน system
role
องค์ประกอบ | คำอธิบาย | ตัวอย่าง |
---|---|---|
บทบาท | กำหนดว่า AI คือใคร ทำหน้าที่อะไร | คุณคือผู้ช่วย AI สำหรับนักศึกษา… |
ขอบเขตความรู้ | เรื่องที่ AI สามารถให้ข้อมูลได้ | หลักสูตร, การลงทะเบียน, กฎระเบียบ… |
รูปแบบภาษา | แนวทางการพูด เช่น สุภาพ เป็นกันเอง | ใช้ภาษาที่สุภาพ เข้าใจง่าย… |
ข้อจำกัด | สิ่งที่ไม่ควรทำ หรือควรแจ้งเมื่อไม่รู้ | หากไม่ทราบให้แนะนำติดต่อเจ้าหน้าที่ |
💡 เคล็ดลับเพิ่มเติม
- ใส่ bullet point ช่วยให้เข้าใจง่าย
- กำหนด “tone” ที่ต้องการ เช่น เหมือนรุ่นพี่ใจดี
- ระบุขอบเขตชัดเจน → ป้องกัน AI เดาข้อมูล
- เหมาะมากหากใช้กับระบบที่ให้คำปรึกษา หรือ chatbot ภายในองค์กร
🏢 การใช้งาน system
role สำหรับบริการในองค์กร
สำหรับระบบ chatbot หรือ AI assistant ในองค์กร คุณสามารถส่ง system
role เพียงครั้งแรก แล้วให้การสนทนาดำเนินต่อไปโดยใช้ข้อความแบบต่อเนื่องได้เลย
✅ ตัวอย่างโครงสร้างข้อความแบบหลายรอบ
[
{
"role": "system",
"content": "คุณคือผู้ช่วยนักศึกษา มหาวิทยาลัย A ที่ให้คำแนะนำเกี่ยวกับหลักสูตร การลงทะเบียน และกฎระเบียบ"
},
{
"role": "user",
"content": "หลักสูตรปี 1 วิศวะคอมต้องเรียนวิชาอะไรบ้าง"
},
{
"role": "assistant",
"content": "ปี 1 วิศวกรรมคอมพิวเตอร์จะเรียนวิชา พื้นฐานคอมพิวเตอร์, คณิตศาสตร์พื้นฐาน, ฟิสิกส์ เป็นต้น"
},
{
"role": "user",
"content": "แล้วปี 2 ล่ะครับ?"
}
]
🔁 โฟลว์ที่แนะนำสำหรับองค์กร
- 1️⃣ เริ่มต้น session ด้วย system role (กำหนดบทบาท AI)
- 2️⃣ ส่งคำถามแรก จากผู้ใช้ (role: user)
- 3️⃣ รับคำตอบจาก AI (role: assistant)
- 4️⃣ เก็บ message history ทั้งหมด ฝั่ง backend
- 5️⃣ เมื่อมีคำถามใหม่ → ส่งพร้อม history กลับไปยัง API
💡 หมายเหตุ
- ChatGPT API ไม่มี memory ข้าม request → คุณต้องส่ง history ทั้งหมดทุกครั้งเอง
- สามารถใช้ session ID หรือ user ID จับกลุ่มข้อความในระบบ backend
- ไม่ต้องส่ง
system
ซ้ำทุกรอบ ถ้าอยู่ใน context เดียวกัน
📌 แผนภาพโฟลว์
คุณสามารถใช้แนวคิดแบบนี้ในระบบของคุณได้:
graph TD
A[เริ่มแชท] --> B[ส่ง system + คำถามแรก]
B --> C[รับคำตอบ]
C --> D[บันทึก history]
D --> E[ผู้ใช้ถามใหม่]
E --> F[ส่ง history + คำถามใหม่ ไปยัง API]
F --> G[รับคำตอบใหม่]
💬 ความหมายของ assistant
role
assistant
หมายถึงข้อความ ที่ AI ตอบกลับมา ในบทสนทนา โดยจะเป็นคำตอบที่คุณได้รับหลังจากส่ง messages
ไปยัง ChatGPT API
✅ ตัวอย่างที่มี assistant
เป็นคำตอบ
[
{
"role": "system",
"content": "คุณคือผู้ช่วยนักศึกษา ให้ข้อมูลเรื่องหลักสูตรและการลงทะเบียน"
},
{
"role": "user",
"content": "สวัสดีครับ วิชาปี 1 มีอะไรบ้าง?"
},
{
"role": "assistant",
"content": "ปี 1 จะเรียนวิชา คณิตศาสตร์เบื้องต้น, ฟิสิกส์ทั่วไป, และการเขียนโปรแกรมเบื้องต้น เป็นต้น"
}
]
📘 คำอธิบายแต่ละ role
ในระบบ ChatGPT
role | หมายถึง | ใช้เมื่อ… |
---|---|---|
system |
กำหนดบทบาทของ AI (บริบท/พฤติกรรม) | ตั้งแต่เริ่ม session เช่น “คุณคือผู้ช่วยแนะแนว” |
user |
คำถามหรือข้อความจากผู้ใช้งาน | ผู้ใช้ส่งคำถาม เช่น “ค่าเทอมเท่าไหร่?” |
assistant |
คำตอบที่ AI ตอบกลับ | เป็นผลลัพธ์ที่ได้จาก ChatGPT |
🔁 การโต้ตอบแบบหลายรอบ (Multi-turn)
เพื่อให้ AI เข้าใจบริบทต่อเนื่อง ควรส่งข้อความเดิม (ทั้ง user
และ assistant
) กลับไปพร้อมคำถามใหม่
[
{
"role": "system",
"content": "คุณคือผู้ช่วยนักศึกษา"
},
{
"role": "user",
"content": "คณะวิศวะมีอะไรบ้าง?"
},
{
"role": "assistant",
"content": "มีวิศวกรรมคอมพิวเตอร์, ไฟฟ้า, เครื่องกล..."
},
{
"role": "user",
"content": "แล้ววิศวะคอมเรียนกี่ปี?"
}
]
✅ สรุป
assistant
= คำตอบจาก AI- ใช้เพื่อเก็บ history ของการโต้ตอบ
- ควรแนบไปใน messages ทุกครั้ง หากต้องการ context ต่อเนื่อง