ניסיתי להוסיף צ'אט AI לאפליקציה שלי ונתקלתי בקיר

ניסיתי להוסיף עוזר צ'אט מבוסס AI לכלי לניהול פרויקטים שלי. חשבתי שזה יהיה קל. תכננתי לשלוח את כל היסטוריית הצ'אט ל-API.

זה נכשל.

אחרי 15 הודעות, התגובות הפכו לאיטיות או נשברו. ה-API זרק שגיאות מכיוון שהטקסט היה ארוך מדי עבור מגבלת ה-tokens.

הנה מה שניסיתי ומה שעבד.

הבעיות שנתקלתי בהן:

  • קיצור היסטוריה (Truncating): שמרתי רק את ההודעות האחרונות. זה פתר את בעיית המהירות, אבל ה-AI שכח הכל מתחילת הצ'אט.
  • סיכום (Summarization): ביקשתי מה-AI לסכם את הצ'אט כל 5 הודעות. זה עזר לזיכרון, אבל הגדיל את העלויות ואת זמני ההמתנה שלי.
  • Vector stores: ניסיתי לדרג הודעות לפי רלוונטיות. זה הוסיף יותר מדי מורכבות לצרכים שלי.

הפתרון:

הפסקתי לנסות לשלוח הכל. השתמשתי בשתי שיטות עיקריות כדי לשפר את החוויה.

  1. Streaming: השתמשתי ב-Server-Sent Events כדי להציג את הטקסט בזמן שהוא נוצר. זה גורם לאפליקציה להרגיש מהירה גם אם ה-AI לוקח זמן לחשוב.

  2. חלון הקשר (Context Window) בעל שלושה תאים: חילקתי את תקציב ה-tokens שלי לחלקים ספציפיים.

  • System Prompt: 500 tokens. זה נשאר קבוע.
  • Dynamic Context: 2000 tokens. זה מחזיק עדכוני פרויקט וסטטוס משימות אחרונים.
  • Conversation History: 4000 tokens. זהו חלון נעים (sliding window) של הודעות אחרונות.

על ידי ניהול התקציב בצורה כזו, הפחתתי את גודל ה-payload ב-40%. זה חסך כסף והוריד את ה-latency.

העצה שלי:

הוספת AI היא לא רק קריאה ל-API. אתם חייבים לנהל כמה נתונים אתם שולחים. Streaming משפר את תחושת המהירות של המשתמש. אסטרטגיית הקשר (context) חכמה משפרת את תחושת האינטליגנציה של ה-AI.

איך אתם מנהלים את זיכרון השיחה באפליקציות שלכם? אתם משתמשים ב-sliding windows או בסיכום (summarization)?

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

קהילת למידה אופציונלית: https://t.me/GyaanSetuAi