Context Window และ System Role
Context Window
Section titled “Context Window”ปกติแล้วปกติแล้ว LLM จะเป็น Stateless (ไม่มีความจำในตัวเอง) แต่ทำไมเราคุยกับ ai เราจะสังเกตุว่าเมื่อคุยไปเรื่อยๆ มันจะจำ บริบทก่อนหน้าได้ เช่น
me: สวัสดีผมครับผมชื่อ shiro นะ ทำงานเป็น Software engineer อายุ 25
ai: ยินดีที่ได้รู้จักครับ
me: ผมคือใคร?
ai: คุณชื่อ shiro คุณเป็น Software engineer ที่อายุ 25
โดยเบื้องหลังจากทำการของมันคือ เราส่งข้อความก่อนหน้า ไปให้ LLM เสมอ เพื่อให้มันเข้าใจบริบท (Context) ในปัจจุบันว่าเรากำลังคุยเรื่องอะไรกันอยู่ ดังเช่นตัวอย่างนี้
เบื้องหลังการส่งข้อมูลในแต่ละ Turn
Section titled “เบื้องหลังการส่งข้อมูลในแต่ละ Turn”Turn 1: เริ่มต้นบทสนทนา
Section titled “Turn 1: เริ่มต้นบทสนทนา”เมื่อคุณทักทายไปครั้งแรก ระบบจะส่งข้อความแรกไปตรงๆ
-
สิ่งที่คุณพิมพ์: “สวัสดีครับผมชื่อ shiro นะ ทำงานเป็น Software engineer อายุ 25”
-
สิ่งที่ระบบส่งไปให้ LLM ประมวลผล:
[{ "role": "user", "content": "สวัสดีครับผมชื่อ shiro นะ ทำงานเป็น Software engineer อายุ 25" }] -
ผลลัพธ์ที่ AI ตอบกลับมา: “ยินดีที่ได้รู้จักครับ”
Turn 2: AI เริ่มจำได้ (เพราะได้ประวัติจาก Turn 1)
Section titled “Turn 2: AI เริ่มจำได้ (เพราะได้ประวัติจาก Turn 1)”เมื่อคุณถามคำถามถัดไป ระบบหลังบ้านจะมัดรวมเอาคำถาม-คำตอบใน Turn 1 แนบเป็น Context ส่งไปด้วยเสมอ
-
สิ่งที่คุณพิมพ์: “ผมคือใคร?”
-
สิ่งที่ระบบส่งไปให้ LLM ประมวลผล (Context + คำถามใหม่):(เพราะ LLM ได้เห็นอดีตทั้งหมดในกล่องนี้ มันจึงรู้ว่าคุณคือ Shiro)
[{ "role": "user", "content": "สวัสดีครับผมชื่อ shiro นะ ทำงานเป็น Software engineer อายุ 25" },{ "role": "assistant", "content": "ยินดีที่ได้รู้จักครับ" },{ "role": "user", "content": "ผมคือใคร?" }] -
ผลลัพธ์ที่ AI ตอบกลับมา: “คุณชื่อ shiro คุณเป็น Software engineer ที่อายุ 25”
Turn 3: คุยต่อยอดไปอีก (Context ยาวขึ้นเรื่อยๆ)
Section titled “Turn 3: คุยต่อยอดไปอีก (Context ยาวขึ้นเรื่อยๆ)”สมมติว่าคุณคุยต่อเพื่อขยายความ ระบบก็จะร้อยเรียงประวัติยาวเป็นลูกโซ่แบบนี้
- สิ่งที่คุณพิมพ์: “ช่วยแนะนำเทคโนโลยีที่ผมควรศึกษาเพิ่มในปีนี้หน่อย”
- สิ่งที่ระบบส่งไปให้ LLM ประมวลผล (Context ทั้งหมด + คำถามใหม่):
[ { "role": "user", "content": "สวัสดีครับผมชื่อ shiro นะ ทำงานเป็น Software engineer อายุ 25" }, { "role": "assistant", "content": "ยินดีที่ได้รู้จักครับ" }, { "role": "user", "content": "ผมคือใคร?" }, { "role": "assistant", "content": "คุณชื่อ shiro คุณเป็น Software engineer ที่อายุ 25" }, { "role": "user", "content": "ช่วยแนะนำเทคโนโลยีที่ผมควรศึกษาเพิ่มในปีนี้หน่อย" }]- ผลลัพธ์ที่ AI ตอบกลับมา: ในฐานะที่คุณเป็น Software engineer ในวัย 25 ปี ผมแนะนำให้คุณลองศึกษาเรื่อง System Architecture ลึกขึ้น หรือเทรนด์ AI Integration ครับ…”*
System Role
Section titled “System Role”กฎที่กำหนด personality ของ AI, รูปแบบการตอบ และเงื่อนไขการตอบ
โครงสร้างตัวอย่าง:
[ { "role": "system", "content": "You are Zen, a senior coding teacher..." }, { "role": "user", "content": "Hello, I'm shiro..." }, { "role": "assistant", "content": "Nice to meet you shiro!" }]อธิบาย 3 Roles:
- System: ตั้งกฎ/personality (อ่านก่อน, user ไม่เห็น)
- User: ข้อความจาก user
- Assistant: คำตอบจาก AI
สำคัญ: { "role": "system" } จะถูกล็อคไว้ที่ด้านบนเสมอและไม่ถูกลบ แม้ในขณะที่ Compact หรือ Drop Context
หมายเหตุ: ควรทำให้ system prompt กระชับเพื่อรักษาพื้นที่ memory ไว้สำหรับเนื้อหาอื่น