
หลังจากอ่านหนังสือเรื่อง Context Engineering with DSPy ไปนั้น
มีส่วนที่อธิบายถึงปัญหาต่าง ๆ ของ context ซึ่งมาจากการจัดการที่ไม่ดี
ส่งผลให้การทำงานของ AI Agent ไม่ดี
ดังนั้นเราควรจัดการให้ดี ให้ถูกต้อง ในเวลาที่เหมาะสม
มาดูกันว่าปัญหาของการจัดการ context ไม่ดีมีอะไรบ้าง ?
และสามารถแก้ไขได้อย่างไร ?
ปัญหาที่ 1 Context distraction
การทำงานของ model ต่าง ๆ มักจะทำงานตามรูปแบบของคำสั่งจากสิ่งที่เคยสั่งหรือเรียนรู้ไป
ทำให้ถ้าการพูดคุยหรือทำงานยาว ๆ แล้ว
มักจะได้คำตอบแบบเดิม ๆ ทั้ง ๆ ที่เราบอกให้ทำงานในรูปแบบใหม่
ซึ่งทำให้ขาดความคิดสร้างสรรค์ไป
ดังนั้นสิ่งที่ควรต้องทำหรือแก้ไข เช่น
- ทำการ start session ใหม่ หรือ clear ทิ้งไป
- ทำการยกตัวอย่างที่ไม่ตีกรอบการทำงานแคบเกินไป เพื่อเปิดกว้างในการคิดแบบอื่น ๆ บ้าง
ปัญหาที่ 2 Context confusion
ในการทำงานแบบยาว ๆ หรือ long conversation
มักจะมีข้อมูลเก่า ๆ หรือ ใน history ก่อนหน้า
ส่งผลให้ model นำเอาข้อมูลเหล่านั้นมาใช้งานในการตอบสิ่งต่าง ๆ
ทำให้ผลการทำงานแย่ลงเรื่อย ๆ
ดังนั้นสิ่งที่ควรทำหรือแก้ไข เช่น
- เขียน instruction ให้ทำการตอบ หรือ ข้อมูลมีเท่าที่จำเป็น หรือ ให้สั้นกระชับก็พอ
- หรือปิดระบบ memory ของการทำงาน
ปัญหาที่ 3 Context neglect
ปัญหานี้จะเป็นการมองข้ามข้อมูลใน context บางส่วนไป
ยกตัวอย่างเช่น lost in the middle เป็นต้น
ดังนั้นถ้าส่วนสำคัญอยู่ตรงกลางของ context
จะส่งผลให้การผลลัพธ์เกิดข้อผิดพลาดได้ง่ายมาก ๆ
ดังนั้นสิ่งที่ควรทำหรือแก้ไขเช่น
- จัดการข้อมูลใน context ให้มีเท่าที่จำเป็นในงานนั้น ๆ เท่านั้น
- แยกการทำงานของแต่ละงานตาม session ไปเลย อย่ารวมกัน
- แก้ไขให้ข้อมูลสำคัญอยู่ในช่วงแรก หรือ ช่วงท้ายของ context
ปัญหาที่ 4 Context drift
เมื่อการพูดคุยยาวขึ้นเรื่อง ทำให้เกิด context confusion ได้แล้ว
ยังอาจจะทำให้ model ลืมเป้าหมายของการทำงานที่กำหนดไว้ตั้งแต่แรก ๆ ของการพูดคุยได้
หรืออาจจะทำคล้าย ๆ เดิม แต่ละเลยการทำงานตามกฏต่าง ๆ
แน่นอนว่าส่งผลต่อการทำงานอย่างมาก ต้องระวังสุด ๆ
ดังนั้นสิ่งที่ควรทำหรือแก้ไขเช่น
- กำหนดกฏต่าง ๆ ไว้ตั้งแต่เริ่ม หรือกำหนดไว้ใน system instruction ไปก็ดีมาก ๆ
- ถ้ามีปัญหาเรื่อง lost in the middle ให้จัดการข้อมูลของกฏไว้ช่วงแรกและท้าย ๆ เสมอ
ปัญหาที่ 5 Context clash
บ่อยครั้งที่มักจะคุยกับ model แบบให้ข้อมูลทีละนิดทีละหน่อย
หรือพูดคุยไปเรื่อย ๆ ผมชอบใช้คำว่า คุยไปวัน ๆ
อาจจะทำให้ผลการคุยขัดแย้งกันได้
หรือจะทำให้เกิด Context poisoning ได้อีก
ซึ่งปัญหานี้เราสามารถแก้ไขด้วยการเขียนสรุปงานต่าง ๆ ให้ชัดเจนและครบถ้วนตั้งแต่ต้น นั่นเอง
หรือต้องทำการแก้ไขประวัติการพูดคุย จากนั้นสรุปออกมาเป็นไฟล์
จากนั้นทำการเปิด session ในการพูดคุยใหม่
ปัญหาที่ 6 Context underspecification
เป็นปัญหาที่เกิดจากการให้ข้อมูลและรายละเอียดน้อยเกินไป
ทำให้ model ต้องเดาจากข้อมูลที่ถูก train มากยิ่งขึ้น
บ่อยครั้งข้อมูลไม่ตรงกับที่ต้องการของเรา
ซึ่งเป็นเรื่องปกติที่จะพบเจอมาก ๆ
ดังนั้นสิ่งที่ควรทำคือ
- ลดการเดาด้วยการให้ข้อมูลที่ชัดเจนมากยิ่งขึ้น
- ก่อนจบการทำงานให้ทำการสรุปสิ่งที่สำคัญและจำเป็น จากนั้นนำข้อมูลที่ได้ไปใช้ใน session ใหม่ เพื่อลดปัญหาการเดาลงไป
จะพบว่าปัญหาที่เกิดจากการบริหารจัดการ context ที่ไม่ดี
ส่งผลต่อการทำงานของ model มาก ๆ
ลองปรับปรุงและดูผลดูครับ
Reference websites
- How Long Contexts Fail
- How to Fix Your Context
- Lost in the Middle: How Language Models Use Long Contexts
Article by Somkiat Puisungnoen
To be Craftmanship