תבנית ה-PRG עבור סוכני AI

סוכני AI חוזרים על טעות בת 25 שנה.

בשנות ה-90, לטפסי אינטרנט היה באג משמעותי. משתמש היה מבצע הזמנה, לוחץ על רענון (refresh), והדפדפן היה שולח את ההזמנה שוב. זה הוביל לשני חיובים וללקוח כועס אחד.

הפתרון היה תבנית Post/Redirect/Get (PRG). היא עובדת כך:

  • המשתמש שולח בקשת POST כדי להגיש נתונים.
  • השרת מעבד את הנתונים.
  • השרת שולח הפניה (redirect) לכתובת URL חדשה.
  • הדפדפן מבצע בקשת GET כדי להציג את התוצאה.

אם המשתמש לוחץ על רענון, הוא רק חוזר על בקשת ה-GET. בקשת ה-POST המסוכנת נעלמה.

סוכני AI החזירו את הבאג הזה.

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

ניתן לתקן זאת באמצעות מפתחות אידמפוטנטיות (idempotency keys). מפתח אידמפוטנטי פועל כמו הפניה (redirect). הוא מפריד בין "ביצוע הפעולה" לבין "הצגת התוצאה".

התבנית עבור סוכנים צריכה להיראות כך:

  • הסוכן מייצר מפתח ייחודי לפני הניסיון הראשון.
  • הוא משתמש בערך יציב כמו מזהה משתמש (user ID) ומזהה עגלה (cart ID).
  • הוא שולח את המפתח הזה עם כל קריאה לכלי.
  • השרת בודק את המפתח. אם הוא רואה את המפתח שוב, הוא מחזיר את התוצאה הקודמת במקום להריץ את הפעולה פעמיים.

עבור משימות ארוכות, דרוש יותר מאשר רק מפתח. דרוש checkpointing (נקודות שמירה). עליך לשמור את המצב (state) בכל שלב. זה מבטיח שהפעלה מחדש תמשיך בדיוק מהמקום שבו היא נעצרה.

עקבו אחר הכללים הללו עבור כל כלי סוכן שמשנה נתונים:

  • כל כלי מבצע שינוי (mutating tool) חייב לקבל מפתח אידמפוטנטיות.
  • גזרו את המפתח מכוונת המשתמש (user intent), ולא מחותמת זמן (timestamp).
  • ייצרו את המפתח לפני הניסיון הראשון.
  • השתמשו שוב באותו מפתח בכל ניסיון חוזר.
  • עבור משימות ארוכות, בצעו checkpoint לכל שלב ביניים.

השכבה משתנה, אך הלוגיקה נשארת זהה.

מקור: https://dev.to/ravikiran438/the-prg-pattern-for-ai-agents-a-25-year-old-fix-coming-of-age-in-a-new-era-23fh

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