AI Agents کے لیے PRG پیٹرن

AI ایجنٹس ایک پرانے مسئلے کا سامنا کر رہے ہیں۔ یہ وہی بگ (bug) ہے جس نے 90 کی دہائی میں ویب فارمز کو خراب کر دیا تھا۔

پرانے ویب کے دور میں، ایک صارف فارم جمع کرواتا تھا۔ اگر وہ ریفریش (refresh) کا بٹن دباتا، تو براؤزر ڈیٹا کو دوبارہ جمع کر دیتا تھا۔ اس کا مطلب دو آرڈرز، دو چارجز، یا دو ای میلز ہوتے تھے۔

اس کا حل Post/Redirect/Get (PRG) پیٹرن تھا۔

منطق سادہ ہے:

  • صارف ایک POST ریکویسٹ بھیجتا ہے۔
  • سرور کام کو پروسیس کرتا ہے۔
  • سرور ایک نئے URL پر 302 Redirect بھیجتا ہے۔
  • براؤزر GET ریکویسٹ کے ساتھ ری ڈائریکٹ پر عمل کرتا ہے۔

اب ریفریش کرنے سے صرف رزلٹ پیج دوبارہ لوڈ ہوتا ہے۔ یہ عمل کو دہراتا نہیں ہے۔

AI ایجنٹس اس بگ کو ایک نئے لیول پر واپس لے آئے ہیں۔

جب کوئی ایجنٹ کارڈ چارج کرنے یا ریکارڈ بنانے کے لیے کسی ٹول کو کال کرتا ہے، تو چیزیں غلط ہو جاتی ہیں۔ نیٹ ورک کا رابطہ ٹوٹ جاتا ہے۔ کنٹینر ری اسٹارٹ ہو جاتا ہے۔ ریٹ لیمٹ (rate limit) لاگو ہو جاتی ہے۔ ایجنٹ کو معلوم نہیں ہوتا کہ پچھلی کال کامیاب رہی یا نہیں۔ اس لیے، وہ دوبارہ کوشش کرتا ہے۔

کسی حل کے بغیر، ایجنٹ ڈپلیکیٹ آرڈرز بنا دیتا ہے اور غصے میں بھرے صارفین سے چارجز وصول کر لیتا ہے۔

آپ کو idempotency keys کا استعمال کرتے ہوئے اپنے agentic pipelines پر PRG پیٹرن لاگو کرنا چاہیے۔

Idempotency key آپ کا ری ڈائریکٹ ہے۔ یہ ایکشن (action) کو رزلٹ (result) سے الگ کرتی ہے۔

اسے کیسے نافذ کیا جائے:

  • ہر mutating ٹول کو idempotency key قبول کرنی چاہیے۔
  • پہلی کوشش سے پہلے کی (key) تیار کریں۔
  • کی (key) صارف کے ارادے (intent) سے اخذ کریں، ٹائم اسٹیمپ سے نہیں۔
  • سرور کو چیک کرنا چاہیے کہ کیا اس نے پہلے یہ کی (key) دیکھی ہے۔
  • اگر کی (key) موجود ہے، تو ٹاسک کو دوبارہ چلانے کے بجائے محفوظ شدہ رزلٹ واپس کریں۔

طویل کاموں کے لیے، آپ کو صرف ایک کی (key) سے زیادہ کی ضرورت ہے۔ آپ کو checkpointing کی ضرورت ہے۔

Checkpointing ہر مرحلے پر اسٹیٹ (state) کو محفوظ کرتی ہے۔ اگر ایجنٹ بیس منٹ کے کام کے دوران آدھے راستے میں کریش ہو جائے، تو وہ وہیں سے شروع کرتا ہے جہاں سے وہ رکا تھا۔ یہ دوبارہ شروع نہیں کرتا۔

اگر آپ صرف ایک کام کر سکتے ہیں، تو ہر ٹول کال کو دو بار چلانے کے لیے محفوظ بنائیں۔

اپنے ایجنٹس کو ان پانچ چیکس کے ساتھ بنائیں:

  • کیا ہر ٹول idempotency key قبول کرتا ہے؟
  • کیا کی (key) وقت کے بجائے ارادے (intent) پر مبنی ہے؟
  • کیا ہر ری ٹرائی (retry) پر کی (key) کا دوبارہ استعمال کیا جاتا ہے؟
  • کیا سرور ڈپلیکیٹ کیز (keys) کے لیے محفوظ شدہ نتائج واپس کرتا ہے؟
  • کیا طویل کاموں کے لیے درمیانی مراحل محفوظ کیے جاتے ہیں؟

پیٹرن وہی ہے۔ صرف لیئر (layer) بدلی ہے۔

ماخذ: https://dev.to/ravikiran438/the-prg-pattern-for-ai-agents-a-25-year-old-fix-coming-of-age-in-a-new-era-23fh