మీ ఏజెంట్లు బాగున్నాయి. వాటి మధ్య జరిగే హ్యాండ్‌ఆఫ్ (handoff) సరిగ్గా లేదు.

చాలా మల్టీ-ఏజెంట్ డెమోలు ఒకే ఏజెంట్‌ను వేషధారణలో చూపిస్తాయి. ఏజెంట్ A ఒక పనిని చేయడం, ఆ తర్వాత ఏజెంట్ B మరొక పనిని చేయడం వంటివి అవి చూపిస్తాయి. కానీ ఏజెంట్ A కి ఏజెంట్ B కి కావాల్సిన సమాచారాన్ని అందించడంలో విఫలమైనప్పుడు ఏం జరుగుతుందో అవి చూపించవు.

నేను ఈ ఏడాది మూడు మల్టీ-ఏజెంట్ సిస్టమ్స్‌ను ప్రొడక్షన్‌లో విడుదల చేశాను. ఏజెంట్లు కష్టమైన భాగం కాదు. హ్యాండ్‌ఆఫ్‌లే (handoffs) కష్టమైనవి.

హ్యాండ్‌ఆఫ్ అంటే కేవలం టెక్స్ట్‌ను పంపడం మాత్రమే కాదు. మీరు వీటిని నిర్వహించాలి:

  • స్కీమా అలైన్‌మెంట్ (Schema alignment): ఏజెంట్ B ప్రతిసారీ ఏజెంట్ A అవుట్‌పుట్‌ను పార్స్ (parse) చేయాలి.
  • ఫెయిల్యూర్ ప్రొపగేషన్ (Failure propagation): ఒక ఏజెంట్ విఫలమైనప్పుడు సిస్టమ్‌కు తెలియాలి.
  • కాంటెక్స్ట్ హైజీన్ (Context hygiene): ప్రతి హ్యాండ్‌ఆఫ్ మీ విండోకు అదనపు నాయిస్‌ను (noise) జోడిస్తుంది.

ఏజెంట్లను ఒక దారంతో అనుసంధానించబడిన బ్లాక్ బాక్స్‌లలా చూడటమే అతిపెద్ద తప్పు. మీరు ఏజెంట్ A కి ప్రాంప్ట్ ఇస్తారు, ఫలితాన్ని పొందుతారు మరియు దానిని ఏజెంట్ B లోకి నెట్టేస్తారు. ఇది విఫలమయ్యే వరకు పనిచేస్తుంది. అది విఫలమైనప్పుడు, ఎందుకు విఫలమైందో మీకు తెలియదు.

ఈ మూడు సాధారణ వైఫల్య పద్ధతులను (failure modes) నివారించండి:

  1. సైలెంట్ ట్రంకేషన్ (Silent truncation): ఏజెంట్ A చాలా ఎక్కువ డేటాను ఉత్పత్తి చేస్తుంది. ఏజెంట్ B చివర భాగాన్ని కత్తిరిస్తుంది. అప్పుడు ఏజెంట్ B పాక్షిక డేటాను ప్రాసెస్ చేసి మీకు అర్థం లేని సమాచారాన్ని ఇస్తుంది. ప్రతి దశలో మీ టోకెన్ కౌంట్‌లను (token counts) కొలవండి.

  2. స్కీమా డ్రిఫ్ట్ (Schema drift): మీరు ఏజెంట్ A కోసం ప్రాంప్ట్‌ను మారుస్తారు. ఇప్పుడు అది వేరే ఫార్మాట్‌లో ఫలితాన్ని ఇస్తుంది. ఏజెంట్ B పాత ఫార్మాట్‌ను ఆశిస్తుంది కాబట్టి అది విఫలమవుతుంది. ప్రాంప్ట్‌లపై ఆధారపడకుండా Pydantic వంటి స్ట్రక్చర్డ్ అవుట్‌పుట్‌ను (structured output) ఉపయోగించండి.

  3. రేస్ కండిషన్స్ (Race conditions): మీరు ఒకేసారి ఐదు వర్కర్లను రన్ చేస్తారు. మూడు పూర్తవుతాయి, కానీ రెండు ఇంకా నడుస్తూనే ఉంటాయి. మీ అగ్రిగేటర్ (aggregator) పాక్షిక డేటాతో త్వరగా ప్రారంభమవుతుంది. ఇది టెస్టులలో పనిచేస్తుంది కానీ ప్రొడక్షన్‌లో విఫలమవుతుంది. అన్ని పనుల కోసం వేచి ఉండటానికి ఒక బారియర్ (barrier) ఉపయోగించండి.

నా మొదటి సిస్టమ్ తెలివైనది కానీ గందరగోళంగా ఉంది. ఇది డైనమిక్ రూటింగ్ మరియు ఇంప్లిసిట్ హ్యాండ్‌ఆఫ్‌లను ఉపయోగించింది. ఇది రియల్ ట్రాఫిక్ వచ్చిన వరకు పనిచేసింది, కానీ ఆ తర్వాత సైలెంట్‌గా విఫలమైంది.

నా రెండవ సిస్టమ్ చూడటానికి బాగుండదు కానీ సరైనది. ప్రతి హ్యాండ్‌ఆఫ్‌లో టైప్డ్ కాంట్రాక్ట్ (typed contract) ఉపయోగించబడింది. ప్రతి వైఫల్యం స్పష్టంగా (explicit) ఉంది. ప్రతి ఏజెంట్ ఐసోలేటెడ్ (isolated) గా ఉంది.

నా ప్రస్తుత సిస్టమ్ రెండింటినీ కలిపి ఉంటుంది. ఇది రెండవ వెర్షన్ యొక్క క్రమశిక్షణను ఉపయోగిస్తుంది కానీ బోరింగ్ కోడ్‌ను ఒక ఫ్రేమ్‌వర్క్ వెనుక దాస్తుంది.

మీరు మల్టీ-ఏజెంట్ సిస్టమ్స్‌ను నిర్మిస్తుంటే, చూడటానికి బాగుండని కానీ సరైన వెర్షన్‌తో ప్రారంభించండి. మొదట తెలివిగా ఉండటానికి ప్రయత్నించకండి. ప్రొడక్షన్‌లో దానిని సరిగ్గా చేయండి, ఆ తర్వాత దానిని ఎలిగెంట్‌గా (elegant) మార్చండి.

హ్యాండ్‌ఆఫ్ సమస్య సులభం కాదు. కానీ దాని వల్ల మీరు ఆశ్చర్యపోవడం ఆగిపోతారు.

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

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