آپ کے ایجنٹس ٹھیک ہیں۔ ان کے درمیان ہینڈ آف (handoff) کا مسئلہ ہے۔

زیادہ تر ملٹی ایجنٹ ڈیمو آپ کو ایک ہی ایجنٹ دکھاتے ہیں جو مختلف روپ دھارے ہوئے ہو۔ وہ دکھاتے ہیں کہ ایجنٹ A ایک کام کر رہا ہے اور پھر ایجنٹ B دوسرا کام کر رہا ہے۔ وہ یہ نہیں دکھاتے کہ کیا ہوتا ہے جب ایجنٹ A، ایجنٹ B کو وہ چیز فراہم کرنے میں ناکام ہو جاتا ہے جس کی اسے ضرورت ہے۔

میں نے اس سال پروڈکشن میں تین ملٹی ایجنٹ سسٹم لانچ کیے ہیں۔ ایجنٹس مشکل حصہ نہیں تھے۔ ہینڈ آف (handoffs) مشکل تھے۔

ہینڈ آف صرف ٹیکسٹ پاس کرنے سے کہیں زیادہ ہے۔ آپ کو ان چیزوں کا انتظام کرنا ہوگا:

  • اسکیمہ الائنمنٹ (Schema alignment): ایجنٹ B کو ہر بار ایجنٹ A کے آؤٹ پٹ کو پارس (parse) کرنا چاہیے۔
  • فیلئیر پروپیگیشن (Failure propagation): سسٹم کو معلوم ہونا چاہیے کہ کب ایک ایجنٹ ناکام ہو رہا ہے۔
  • کانٹیکسٹ ہائیجین (Context hygiene): ہر ہینڈ آف آپ کے ونڈو (window) میں شور (noise) کا اضافہ کرتا ہے۔

سب سے بڑی غلطی ایجنٹس کے ساتھ ایسا سلوک کرنا ہے جیسے وہ ایک دھاگے سے جڑے ہوئے بلیک باکسز (black boxes) ہوں۔ آپ ایجنٹ A کو پرامپٹ (prompt) دیتے ہیں، نتیجہ حاصل کرتے ہیں، اور اسے ایجنٹ B میں ڈال دیتے ہیں۔ یہ تب تک کام کرتا ہے جب تک کہ یہ ٹوٹ نہ جائے۔ جب یہ ٹوٹ جائے گا، تو آپ کو معلوم نہیں ہوگا کہ کیوں۔

ان تین عام ناکامی کے طریقوں سے بچیں:

  1. خاموش کٹوتی (Silent truncation): ایجنٹ A بہت زیادہ ڈیٹا پیدا کرتا ہے۔ ایجنٹ B آخر سے ڈیٹا کاٹ دیتا ہے۔ پھر ایجنٹ B ادھورے ڈیٹا پر کارروائی کرتا ہے اور آپ کو بے معنی نتیجہ دیتا ہے۔ ہر مرحلے پر اپنے ٹوکن کاؤنٹ (token counts) کی پیمائش کریں۔

  2. اسکیمہ ڈرفٹ (Schema drift): آپ ایجنٹ A کے لیے پرامپٹ تبدیل کرتے ہیں۔ اب یہ ایک مختلف فارمیٹ میں نتیجہ دیتا ہے۔ ایجنٹ B اس لیے خراب ہو جاتا ہے کیونکہ وہ پرانے فارمیٹ کی توقع رکھتا ہے۔ پرامپٹس پر بھروسہ کرنے کے بجائے Pydantic جیسے اسٹرکچرڈ آؤٹ پٹ (structured output) کا استعمال کریں۔

  3. ریس کنڈیشنز (Race conditions): آپ ایک ساتھ پانچ ورکرز چلاتے ہیں۔ تین مکمل ہو جاتے ہیں، لیکن دو ابھی بھی چل رہے ہوتے ہیں۔ آپ کا ایگریگیٹر (aggregator) ادھورے ڈیٹا کے ساتھ جلدی شروع ہو جاتا ہے۔ یہ ٹیسٹ میں تو کام کرتا ہے لیکن پروڈکشن میں ناکام ہو جاتا ہے۔ تمام ٹاسک کے مکمل ہونے کا انتظار کرنے کے لیے بیریئر (barrier) کا استعمال کریں۔

میرا پہلا سسٹم ذہین تھا لیکن بے ترتیب تھا۔ اس میں ڈائنامک روٹنگ (dynamic routing) اور امپلیسٹ ہینڈ آف (implicit handoffs) کا استعمال کیا گیا تھا۔ یہ تب تک کام کرتا رہا جب تک اس پر حقیقی ٹریفک نہیں آئی اور یہ خاموشی سے ناکام نہیں ہو گیا۔

میرا دوسرا سسٹم بدصورت تھا لیکن درست تھا۔ ہر ہینڈ آف میں ٹائپڈ کنٹریکٹ (typed contract) کا استعمال کیا گیا تھا۔ ہر ناکامی واضح تھی۔ ہر ایجنٹ الگ تھلگ (isolated) تھا۔

میرا موجودہ سسٹم دونوں کا مجموعہ ہے۔ یہ دوسرے ورژن کے نظم و ضبط کا استعمال کرتا ہے لیکن بورنگ کوڈ کو ایک فریم ورک (framework) کے پیچھے چھپا دیتا ہے۔

اگر آپ ملٹی ایجنٹ سسٹم بناتے ہیں، تو بدصورت اور درست ورژن سے آغاز کریں۔ پہلے بہت زیادہ ذہین بننے کی کوشش نہ کریں۔ پہلے اسے پروڈکشن میں درست بنائیں، پھر اسے خوبصورت بنائیں۔

ہینڈ آف کا مسئلہ آسان نہیں ہوتا۔ لیکن آپ اس سے حیران ہونا چھوڑ دیتے ہیں۔

Source: https://dev.to/mrclaw207/your-agents-are-fine-the-handoff-between-them-isnt-2dij

Optional learning community: https://t.me/GyaanSetuAi