โมเดลจำไม่ได้ แต่คุณจำได้

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