לא נוצרו זיכרונות
תהליך יצירת הזיכרונות כולל שלב חשוב: בדיקה אם המידע בתוכן המקור משמעותי מספיק כדי לשמור אותו. אם התשובה ריקה, סימן שהתהליך פעל בהצלחה אבל לא נמצא מידע שעומד בקריטריונים לשמירה. אם ציפיתם שהזיכרונות ייווצרו, המדריך הזה יעזור לכם לזהות שגיאה פוטנציאלית או הגדרה שגויה.
כדי לפתור בעיות שקשורות ליצירת זיכרונות, פועלים לפי השלבים הבאים:
איך בודקים אם תהליך יצירת זיכרון הופעל
קודם צריך לוודא שתהליך יצירת הזיכרון באמת התחיל. תהליך יצירת הזיכרון מתחיל כשמפעילים את הפונקציה GenerateMemories
(client.agent_engines.memories.generate(...)).
אם אתם משתמשים ב-VertexAiMemoryBankService של ADK, תהליך יצירת הזיכרון לא מופעל באופן אוטומטי. אתם צריכים לוודא שהסוכן או האפליקציה שלכם קראו באופן מפורש לשיטה add_session_to_memory כדי להפעיל את התהליך.
השיטה add_session_to_memory מקבלת אובייקט Session כקלט ומשתמשת באירועים של הסשן כמקור הנתונים ליצירת הזיכרון. השיטה קוראת למופע של Memory Bank רק אם יש אירועים שאוכלסו באובייקט session. אם האפליקציה או הסוכן של ADK מפעילים את add_session_to_memory אבל יצירת הזיכרון לא הופעלה, יכול להיות שהאירועים של האובייקט Session לא יאוכלסו. אפשר לעשות את זה גם אם הייתה אינטראקציה עם הסשן, במיוחד אם משתמשים ב-adk.Runner. כדי לפתור את הבעיה הזו, צריך לאחזר את הסשן והאירועים שלו לסביבה שבה מפעילים את add_session_to_memory:
session = await session_service.get_session(
app_name=app_name,
user_id=user_id,
session_id=session.id
)
# Confirm that events are populated.
print(session.events)
memory_service.add_session_to_memory(session)
בדיקה שתהליך יצירת זיכרון LRO הושלם
תהליך יצירת זיכרון הוא פעולה ארוכת טווח (LRO), והוא יכול להימשך כמה שניות. החביון המדויק תלוי באורך שיחת הקלט ובמורכבות המידע שעובר עיבוד.
כשמשתמשים ב-Agent Engine SDK, תהליך יצירת זיכרון הוא פעולה חוסמת כברירת מחדל. לכן, הפונקציה client.generate_memories(...) חוסמת את ההרצה של הקוד עד שתהליך יצירת הזיכרון LRO מסתיים.
כשמשתמשים ב-VertexAiMemoryBankService של ADK, add_session_to_memory היא פעולה לא חוסמת. היא מפעילה רק את יצירת הזיכרון ולא מחכה לסיום של פעולת LRO.
חיפוש שגיאות בתגובת הפעולה
התגובה של LRO עשויה לכלול הודעת שגיאה דומה שמציינת שתהליך יצירת הזיכרון לא הצליח. לדוגמה:
RuntimeError: Failed to generate memory: {'code': 3, 'message': 'Failed to extract memories: Please use a valid role: user, model.'}
שגיאות נפוצות:
שגיאות שקשורות למיצוי משאבים ב-Gemini כשמשתמשים בתשלום לפי שימוש. עם מכסה משותפת דינמית (DSQ), אין מגבלות מכסה מוגדרות מראש על השימוש. כדי להבטיח זמינות גבוהה של Memory Bank ולקבל רמות שירות צפויות לעומסי העבודה של הייצור, אפשר לעיין במאמר בנושא תפוקה שהוקצתה.
נתוני מקור לא תקינים, למשל שימוש בתפקידים אחרים מלבד
modelו-userב-Content.
האם השיחה הייתה משמעותית?
אם התהליך הופעל, הושלם בהצלחה ולא הניב שגיאות, סביר להניח ש-Memory Bank קבע שלא היה מידע בשיחה המקורית שהיה משמעותי מספיק כדי לשמור אותו.
התכונה 'מאגר זיכרונות' משתמשת בנושאי זיכרון כדי לזהות איזה מידע משמעותי. אם תוכן השיחה לא תואם לאף אחד מהנושאים שהוגדרו, לא נוצרים זיכרונות.
אם לדעתכם מידע מסוים היה צריך להישמר, אתם יכולים להתאים אישית את ההגדרות של מופע Memory Bank כדי שיתאימו יותר לציפיות שלכם.
הגדרת נושאי זיכרון מאפשרת לכם להגדיר איזה מידע צריך להישמר. הגדרת דוגמאות בשיטת few-shot עוזרת למופע של מאגר הזיכרון להתאים את עצמו לציפיות שלכם, כי היא מלמדת אותו את הניואנסים של המידע שצריך להישמר ואת הניסוח שבו צריך להשתמש. אפשר לחשוב על התאמה אישית של מאגר הזיכרון בשני שלבים: אמירה והצגה. נושאי זיכרון אומרים למאגר הזיכרון איזה מידע לשמור. דוגמאות בשיטת few-shot מראות למאגר הזיכרון איזה סוג מידע צריך להוביל לזיכרון ספציפי, ועוזרות לו ללמוד את הדפוסים, הניואנסים והניסוח שאתם מצפים שהוא יבין.