ผมพยายามจะเพิ่ม AI Chat ลงในแอปของผม แต่ก็ไปเจอทางตัน

ผมพยายามจะเพิ่ม AI chat assistant ลงในเครื่องมือจัดการโปรเจกต์ของผม ผมคิดว่ามันคงจะง่าย ผมวางแผนที่จะส่งประวัติการแชททั้งหมดไปยัง API

แต่มันล้มเหลว

หลังจากผ่านไป 15 ข้อความ การตอบกลับก็เริ่มช้าลงหรือเกิดข้อผิดพลาด API แจ้งข้อผิดพลาดเนื่องจากข้อความยาวเกินขีดจำกัดของ token

นี่คือสิ่งที่ผมได้ลองทำและสิ่งที่ได้ผล

ปัญหาที่ผมพบ:

  • การตัดประวัติการแชท (Truncating history): ผมเก็บไว้เพียงไม่กี่ข้อความล่าสุด วิธีนี้ช่วยเรื่องความเร็ว แต่ AI ก็ลืมทุกอย่างที่คุยกันมาตั้งแต่ต้น
  • การสรุปความ (Summarization): ผมให้ AI สรุปการสนทนาทุกๆ 5 ข้อความ วิธีนี้ช่วยเรื่องความจำ แต่ก็ทำให้ค่าใช้จ่ายและระยะเวลาในการรอเพิ่มสูงขึ้น
  • Vector stores: ผมพยายามให้คะแนนข้อความตามความเกี่ยวข้อง แต่มันเพิ่มความซับซ้อนมากเกินไปสำหรับความต้องการของผม

วิธีแก้ไข:

ผมเลิกพยายามที่จะส่งข้อมูลทั้งหมดไป ผมใช้วิธีหลักๆ 2 วิธีเพื่อปรับปรุงประสบการณ์การใช้งาน

  1. Streaming: ผมใช้ Server-Sent Events เพื่อแสดงข้อความในขณะที่กำลังถูกสร้างขึ้น วิธีนี้ทำให้แอปดูเหมือนทำงานเร็ว แม้ว่า AI จะต้องใช้เวลาในการประมวลผลก็ตาม

  2. หน้าต่างบริบทแบบสามส่วน (A Three-Slot Context Window): ผมแบ่งงบประมาณ token ออกเป็นส่วนๆ ที่เฉพาะเจาะจง

  • System Prompt: 500 tokens ส่วนนี้จะคงที่เสมอ
  • Dynamic Context: 2000 tokens ส่วนนี้จะเก็บข้อมูลอัปเดตโปรเจกต์และสถานะของงานล่าสุด
  • Conversation History: 4000 tokens ส่วนนี้คือหน้าต่างแบบเลื่อน (sliding window) ของข้อความล่าสุด

ด้วยการจัดการงบประมาณในลักษณะนี้ ผมสามารถลดขนาด payload ลงได้ถึง 40% ซึ่งช่วยประหยัดค่าใช้จ่ายและลดความหน่วง (latency) ลงได้

คำแนะนำของผม:

การเพิ่ม AI ไม่ใช่แค่การเรียกใช้ API เท่านั้น คุณต้องจัดการปริมาณข้อมูลที่จะส่งด้วย การทำ Streaming ช่วยให้ผู้ใช้รู้สึกถึงความเร็ว ส่วนกลยุทธ์การจัดการบริบท (context strategy) ที่ชาญฉลาดจะช่วยให้ AI ดูฉลาดขึ้น

คุณจัดการหน่วยความจำการสนทนาในแอปของคุณอย่างไร? คุณใช้ sliding windows หรือการสรุปความ (summarization)?

Source: https://dev.to/__c1b9e06dc90a7e0a676b/i-tried-to-add-ai-chat-to-my-app-and-hit-a-wall-with-context-tokens-459b

Optional learning community: https://t.me/GyaanSetuAi