บทที่ 5 · จากเครื่องเดาคำ สู่ผู้ช่วย หน้า 3/12 ~3 นาที

แชตคือเอกสารยาวชิ้นเดียว

สิ่งที่คุณเห็นเป็นกล่องแชต แต่โมเดลเห็นแบบนี้ (ทุกแถวต่อกันเป็นข้อความชิ้นเดียว):

ป้ายข้อความ
<|ระบบ|>คุณคือผู้ช่วยทีมการตลาด ตอบสุภาพ กระชับ <|จบ|>
<|ผู้ใช้|>เขียนอีเมลเชิญประชุมทีมเรื่องแคมเปญสงกรานต์ <|จบ|>
<|ผู้ช่วย|>(โมเดลเริ่มเดาคำตรงนี้)

รูปแบบตายตัวนี้คือ แม่แบบบทสนทนา (chat template, special token)รูปแบบที่แปลงบทสนทนาเป็นข้อความยาวชิ้นเดียว โดยมีโทเคนพิเศษ (special token) เป็นป้ายบอกว่าใครพูดและคำตอบจบตรงไหน แต่ละตระกูลโมเดลใช้แม่แบบไม่เหมือนกันดูคำศัพท์ทั้งหมด ป้ายแต่ละอันมักเป็น token พิเศษ (special token) ที่กันไว้ใช้เป็นป้ายโดยเฉพาะ

ข้อความในช่อง <|ระบบ|> คือ คำสั่งระบบ (system prompt)ข้อความต้นบทสนทนาที่กำหนดบทบาทและกติกาของผู้ช่วย มักตั้งโดยผู้ทำแอปและผู้ใช้อาจมองไม่เห็น โมเดลถูกฝึกให้ให้น้ำหนักกับมันมาก แต่มันก็ยังเป็นแค่ข้อความดูคำศัพท์ทั้งหมด ที่คนทำแอปตั้งไว้ เพื่อกำหนดบทบาท กติกา และน้ำเสียง มักถูกซ่อนไว้ แต่ก็เป็นแค่ข้อความ

แอปส่งเอกสารที่ลงท้ายด้วยป้าย <|ผู้ช่วย|> ให้โมเดลเดา token ถัดไปซ้ำๆ แบบบทที่ 1

แล้วหยุดยังไง? ในคลังคำมี token พิเศษ "จบคำตอบ" ลองทายดู:

คำถามชวนคิด

เลือกตอบในแชตหนึ่งรอบ โมเดลรู้ได้ยังไงว่าควรหยุดเขียน?
ดูเฉลยข้อนี้

คำตอบ: มันเดา token พิเศษ 'จบ' ออกมาเอง แล้วแอปหยุดอ่าน

token 'จบ' เป็นแค่อีกตัวเลือกใน softmax ที่ถูกฝึกให้มีโอกาสสูงเมื่อคำตอบครบ แอปยังมีเพดานความยาวกันไว้อีกชั้น

แชตทุกครั้งคือเอกสารยาวชิ้นเดียวที่มีป้ายพิเศษบอกว่าใครพูด โมเดลแค่เดาคำต่อจากป้าย "ผู้ช่วย" จนเดาป้าย "จบ" ออกมาเอง

มังคุด มาสคอตมังคุด

มังคุด

ถ้าหนูพิมพ์ <|ผู้ช่วย|> ลงไปในข้อความเอง โมเดลจะสับสนมั้ย?