AI ఏజెంట్ల కోసం PRG ప్యాటర్న్
AI ఏజెంట్లు 25 ఏళ్ల నాటి తప్పును మళ్ళీ చేస్తున్నాయి.
90వ దశకంలో, వెబ్ ఫారమ్లలో ఒక పెద్ద బగ్ ఉండేది. ఒక వినియోగదారు ఆర్డర్ ఇచ్చి, రిఫ్రెష్ బటన్ నొక్కితే, బ్రౌజర్ మళ్ళీ అదే ఆర్డర్ను పంపేది. దీనివల్ల రెండుసార్లు డబ్బులు కట్ అయ్యేవి మరియు వినియోగదారుడు కోపగించుకునేవాడు.
దీనికి పరిష్కారం Post/Redirect/Get (PRG) ప్యాటర్న్. ఇది ఈ విధంగా పనిచేస్తుంది:
- వినియోగదారు డేటాను సబ్మిట్ చేయడానికి POST రిక్వెస్ట్ను పంపుతారు.
- సర్వర్ ఆ డేటాను ప్రాసెస్ చేస్తుంది.
- సర్వర్ కొత్త URLకి రీడైరెక్ట్ (redirect) పంపుతుంది.
- బ్రౌజర్ ఫలితాన్ని చూపించడానికి GET రిక్వెస్ట్ను చేస్తుంది.
వినియోగదారు రిఫ్రెష్ నొక్కితే, వారు కేవలం GET రిక్వెస్ట్ను మాత్రమే మళ్ళీ పంపుతారు. ప్రమాదకరమైన POST రిక్వెస్ట్ ఉండదు.
AI ఏజెంట్లు ఈ బగ్ను మళ్ళీ తీసుకువచ్చాయి.
ఒక ఏజెంట్ కార్డు నుండి డబ్బులు వసూలు చేయడానికి లేదా రికార్డును సృష్టించడానికి ఏదైనా టూల్ను పిలిచినప్పుడు, నెట్వర్క్ కనెక్షన్ కట్ అవ్వచ్చు. ఆ చర్య విజయవంతమైందో లేదో ఏజెంట్కు తెలియదు. అది మళ్ళీ ప్రయత్నిస్తుంది. ఇప్పుడు వినియోగదారు నుండి రెండుసార్లు డబ్బులు వసూలు అవుతాయి.
దీనిని idempotency keys ఉపయోగించి పరిష్కరించవచ్చు. ఒక idempotency key రీడైరెక్ట్లా పనిచేస్తుంది. ఇది "పనిని చేయడం" మరియు "ఫలితాన్ని చూపించడం" అనే రెండింటినీ వేరు చేస్తుంది.
ఏజెంట్ల కోసం ప్యాటర్న్ ఈ విధంగా ఉండాలి:
- ఏజెంట్ మొదటి ప్రయత్నానికి ముందే ఒక ప్రత్యేకమైన (unique) కీని సృష్టిస్తుంది.
- ఇది యూజర్ ID మరియు కార్ట్ ID వంటి స్థిరమైన విలువలను ఉపయోగిస్తుంది.
- ప్రతి టూల్ కాల్తో పాటు ఈ కీని పంపుతుంది.
- సర్వర్ ఆ కీని తనిఖీ చేస్తుంది. ఒకవేళ అదే కీని మళ్ళీ చూస్తే, చర్యను రెండుసార్లు అమలు చేయడానికి బదులుగా, మునుపటి ఫలితాన్ని తిరిగి పంపుతుంది.
సుదీర్ఘమైన పనుల కోసం, కేవలం కీ మాత్రమే సరిపోదు. మీకు checkpointing అవసరం. మీరు ప్రతి దశలోనూ స్టేట్ను (state) సేవ్ చేయాలి. దీనివల్ల మళ్ళీ ప్రారంభించినప్పుడు, ఎక్కడ ఆగిపోయిందో అక్కడి నుండే కొనసాగించవచ్చు.
డేటాను మార్చే ఏ ఏజెంట్ టూల్ కైనా ఈ నియమాలను పాటించండి:
- ప్రతి మ్యుటేటింగ్ (mutating) టూల్ తప్పనిసరిగా idempotency కీని స్వీకరించాలి.
- కీని టైమ్స్టాంప్ నుండి కాకుండా, వినియోగదారు ఉద్దేశ్యం (user intent) నుండి పొందాలి.
- మొదటి ప్రయత్నానికి ముందే కీని సృష్టించాలి.
- ప్రతి రీట్రై (retry) సమయంలో అదే కీని మళ్ళీ ఉపయోగించాలి.
- సుదీర్ఘమైన పనుల కోసం, ప్రతి మధ్యంతర దశను (intermediate step) చెక్పాయింట్ చేయాలి.
లేయర్ మారుతుంది, కానీ లాజిక్ మాత్రం ఒకటే.
Optional learning community: https://t.me/GyaanSetuAi
