โมเดลจำไม่ได้ แต่คุณจำได้
Large Language Models (LLMs) ไม่มีหน่วยความจำ
ผมเคยคิดว่าทุกเซสชันการแชทจะเก็บบริบท (context) ของตัวเองไว้ แต่ผมคิดผิด เมื่อคุณคุยกับ LLM มันจะไม่จำคำถามล่าสุดของคุณ เว้นแต่คุณจะส่งมันกลับไปด้วย
โมเดลเป็นแบบ stateless ซึ่งหมายความว่าทุกการร้องขอ (request) คือการเริ่มต้นใหม่เสมอ
ในการสร้างบทสนทนา คุณต้องจัดการประวัติด้วยตัวเอง โดยการส่ง array ของข้อความก่อนหน้าทั้งหมดไปพร้อมกับทุกการร้องขอใหม่
"หน่วยความจำ" เป็นเพียงรายการของข้อความ:
- User: สวัสดี
- Assistant: สวัสดีครับ!
- User: เป็นอย่างไรบ้าง?
หากคุณไม่รวมสองบรรทัดแรกไว้ในการร้องขอครั้งถัดไป โมเดลจะไม่รู้เลยว่าคุณได้กล่าวทักทายไปแล้ว
ผมเรียนรู้เรื่องนี้จากการหลีกเลี่ยงการใช้ SDK นักพัฒนาส่วนใหญ่ใช้เครื่องมืออย่าง Anthropic SDK เพื่อซ่อนความซับซ้อนเหล่านี้ ซึ่ง SDK จะจัดการประวัติข้อความและ headers ให้คุณ
หากคุณต้องการเรียนรู้วิธีการทำงานของ LLM ให้ลองใช้ raw fetch แทน อย่าใช้ abstraction เพราะเมื่อคุณจัดการวงจร request และ response ด้วยตัวเอง คุณจะเห็นทุกการตัดสินใจที่เกิดขึ้น
การควบคุมด้วยตัวเองแบบนี้ช่วยให้คุณสามารถสร้างกลยุทธ์ขั้นสูงได้ในภายหลัง เช่น:
- Sliding windows เพื่อจัดการการแชทที่ยาวต่อเนื่อง
- Retrieval Augmented Generation (RAG)
- Semantic search
การเข้าใจเรื่อง array นี้คือรากฐานของการพัฒนา AI คุณคือผู้ที่คอยให้บริบท (context) ส่วนโมเดลจะรู้เฉพาะสิ่งที่คุณส่งไปให้เท่านั้น
Source: https://dev.to/marcochavezco/the-model-doesnt-remember-you-do-3mmk