ఏజెంట్ల కోసం సురక్షితమైన డెలివరీ పైప్లైన్ను నిర్మించడం
చాలా ఏజెంట్ డెమోలు ఒక ముఖ్యమైన ప్రశ్నను విస్మరిస్తాయి. డబుల్-సెండింగ్ (రెండుసార్లు పంపడం) లేదా అనుమతి లేని పనులను పంపకుండా, ఒక స్వయంప్రతిపత్తి వ్యవస్థ (autonomous system) మీ తరపున పనులను ఎలా పంపేలా చేయాలి?
డబుల్-సెండింగ్ అనేది అరుదైన లోపం కాదు. ఒక వర్కర్ పని మధ్యలో ఆగిపోయినప్పుడు (crash), సాధారణ క్యూ (queue) యొక్క డిఫాల్ట్ ప్రవర్తన ఇదే. ఒక వర్కర్ సందేశాన్ని పంపి, అది విజయవంతమైందని రికార్డ్ చేయకముందే క్రాష్ అవుతుంది. అప్పుడు సిస్టమ్ ఆ పని విఫలమైందని భావించి, కొత్త వర్కర్ను మళ్ళీ ప్రయత్నించమని చెబుతుంది. దీనివల్ల కస్టమర్కు రెండు ఈమెయిల్స్ వెళ్తాయి మరియు మీకు ఒక సపోర్ట్ టికెట్ వస్తుంది.
మీరు ప్రతి క్రాష్ను నిరోధించలేరు. చర్య (action) మరియు రికార్డ్ (record) మధ్య ఉండే ఖాళీ సమయంలో జరిగే క్రాష్ను కూడా తట్టుకునేలా మీరు డిజైన్ చేయాలి.
వాస్తవ పరిణామాలు కలిగించే ఏ ఏజెంట్ అవుట్పుట్ కోసం ఈ ఆరు దశల పైప్లైన్ను ఉపయోగించండి:
• Produce: ఏజెంట్ పూర్తి ఆర్టిఫాక్ట్ను (artifact) రూపొందిస్తుంది. ఇది ఇంకా ఏదీ పంపదు. • Persist: ముందుగా ఉద్దేశాన్ని (intent) మరియు ఆర్టిఫాక్ట్ను డ్యూరబుల్ స్టోరేజ్ (durable storage) లో రాయండి. • Score: అవుట్పుట్కు కాన్ఫిడెన్స్ స్కోర్ను జోడించండి. • Review: తక్కువ కాన్ఫిడెన్స్ ఉన్న అంశాలను మనిషికి (human) పంపండి. • Approve: 'fail-closed' గేట్ను ఉపయోగించండి. మనిషి స్పష్టమైన అనుమతి ఇవ్వనంత వరకు సిస్టమ్ అన్ని పంపීම්లను నిరోధిస్తుంది. • Send and Attest: ఒక లీజు (lease) కింద ఐటెమ్ను పంపండి, ఆపై ఒక ఎవిడెన్స్ రసీదును (evidence receipt) రాయండి.
ప్రతి దశ ఒక ప్రత్యేకమైన డ్యూరబుల్ ట్రాన్సిషన్ (durable transition) అయి ఉండాలి. స్టేట్ (state) మీ డేటాబేస్లో ఉండాలి, వర్కర్ మెమరీలో కాదు.
డూప్లికేట్లను నిరోధించడానికి, row-level leasing ఉపయోగించండి. Postgresలో, SELECT ... FOR UPDATE SKIP LOCKED ఉపయోగించండి. ఇది ఒక సమయంలో ఒక వర్కర్ మాత్రమే ఒక టాస్క్ను కలిగి ఉండేలా చూస్తుంది.
గడువు ముగిసిన లీజులను (expired leases) మీరు ఎలా హ్యాండిల్ చేస్తారు అనేది అత్యంత ముఖ్యమైన నియమం. ఒక ఎక్స్టర్నల్ మెసేజ్ను పంపుతున్నప్పుడు వర్కర్ క్రాష్ అయితే, దానిని ఆటోమేటిక్గా మళ్ళీ ప్రయత్నించవద్దు (retry). దానికి బదులుగా, ఆ టాస్క్ను మనిషి రివ్యూ కోసం వదిలివేయండి. కనిపించని డబుల్-సెండింగ్ కంటే, కనిపించేలా ఆగిపోయిన టాస్క్ మేలు.
మీరు fail-closed సూత్రాలను కూడా పాటించాలి:
- పంపడం (Sending) డిఫాల్ట్గా ఆఫ్ చేయబడి ఉండాలి. ఒకే ఒక ఫ్లాగ్ ద్వారా అన్ని అవుట్బౌండ్ ట్రాఫిక్ను ఎనేబుల్ చేయాలి.
- ఐడెంటిటీ (Identity) తనిఖీ చేయబడాలి. పంపే సమయంలో సిస్టమ్ పంపేవారి అడ్రస్ మరియు ట్రాన్స్పోర్ట్ సెక్యూరిటీని ధృవీకరించాలి.
- ప్రతిదీ ఒక రసీదును వదిలి వెళ్లాలి. రికార్డ్ చేయబడని పంపకం అనేది వైఫల్యం.
దీనిని ఇంటర్నల్ లాగ్స్ వంటి తక్కువ ప్రాముఖ్యత ఉన్న పనుల కోసం నిర్మించవద్దు. ఒక తప్పు వల్ల డబ్బు నష్టం వాటిల్లినప్పుడు, చట్టపరమైన సమస్యలు తలెత్తినప్పుడు లేదా సపోర్ట్ టికెట్ అవసరమైనప్పుడు మాత్రమే దీనిని ఉపయోగించండి.
ఐచ్ఛిక అభ్యాస కమ్యూనిటీ: https://t.me/GyaanSetuAi
