ניסיתי להוסיף צ'אט AI לאפליקציה שלי ונתקלתי בקיר
ניסיתי להוסיף עוזר צ'אט מבוסס AI לכלי לניהול פרויקטים שלי. חשבתי שזה יהיה קל. תכננתי לשלוח את כל היסטוריית הצ'אט ל-API.
זה נכשל.
אחרי 15 הודעות, התגובות הפכו לאיטיות או נשברו. ה-API זרק שגיאות מכיוון שהטקסט היה ארוך מדי עבור מגבלת ה-tokens.
הנה מה שניסיתי ומה שעבד.
הבעיות שנתקלתי בהן:
- קיצור היסטוריה (Truncating): שמרתי רק את ההודעות האחרונות. זה פתר את בעיית המהירות, אבל ה-AI שכח הכל מתחילת הצ'אט.
- סיכום (Summarization): ביקשתי מה-AI לסכם את הצ'אט כל 5 הודעות. זה עזר לזיכרון, אבל הגדיל את העלויות ואת זמני ההמתנה שלי.
- Vector stores: ניסיתי לדרג הודעות לפי רלוונטיות. זה הוסיף יותר מדי מורכבות לצרכים שלי.
הפתרון:
הפסקתי לנסות לשלוח הכל. השתמשתי בשתי שיטות עיקריות כדי לשפר את החוויה.
Streaming: השתמשתי ב-Server-Sent Events כדי להציג את הטקסט בזמן שהוא נוצר. זה גורם לאפליקציה להרגיש מהירה גם אם ה-AI לוקח זמן לחשוב.
חלון הקשר (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://t.me/GyaanSetuAi