AI ఏజెంట్ల కోసం PRG ప్యాటర్న్

AI ఏజెంట్లు ఒక పాత సమస్యను ఎదుర్కొంటున్నాయి. 90వ దశకంలో వెబ్ ఫారమ్‌లను దెబ్బతీసిన అదే బగ్ ఇది.

పాత వెబ్ రోజుల్లో, ఒక వినియోగదారు ఫారమ్‌ను సబ్మిట్ చేసేవారు. ఒకవేళ వారు రిఫ్రెష్ (refresh) నొక్కితే, బ్రౌజర్ ఆ డేటాను మళ్ళీ సబ్మిట్ చేసేది. దీనివల్ల రెండు ఆర్డర్లు, రెండు ఛార్జీలు లేదా రెండు ఈమెయిల్స్ వచ్చేవి.

దీనికి పరిష్కారం Post/Redirect/Get (PRG) ప్యాటర్న్.

దీని లాజిక్ సరళమైనది:

  • వినియోగదారు ఒక POST రిక్వెస్ట్‌ను పంపుతారు.
  • సర్వర్ ఆ పనిని ప్రాసెస్ చేస్తుంది.
  • సర్వర్ కొత్త URLకి 302 Redirect పంపుతుంది.
  • బ్రౌజర్ GET రిక్వెస్ట్‌తో ఆ రీడైరెక్ట్‌ను అనుసరిస్తుంది.

ఇప్పుడు రిఫ్రెష్ చేస్తే కేవలం రిజల్ట్ పేజీ మాత్రమే రీలోడ్ అవుతుంది. అది ఆ చర్యను (action) మళ్ళీ చేయదు.

AI ఏజెంట్లు ఈ బగ్‌ను ఒక కొత్త స్థాయికి తీసుకువచ్చాయి.

ఒక ఏజెంట్ కార్డ్‌ని ఛార్జ్ చేయడానికి లేదా రికార్డును సృష్టించడానికి ఒక టూల్‌ని పిలిచినప్పుడు, సమస్యలు తలెత్తుతాయి. నెట్‌వర్క్ కనెక్షన్ తెగిపోవచ్చు. కంటైనర్ రీస్టార్ట్ కావచ్చు. రేట్ లిమిట్ (rate limit) వర్తించవచ్చు. చివరి కాల్ విజయవంతమైందో లేదో ఏజెంట్‌కు తెలియదు. అందుకే, అది మళ్ళీ ప్రయత్నిస్తుంది (retry).

పరిష్కారం లేకపోతే, ఏజెంట్ డూప్లికేట్ ఆర్డర్లను సృష్టిస్తుంది మరియు కస్టమర్ల నుండి అనవసరమైన ఛార్జీలు వసూలు చేయడం వల్ల వారు ఆగ్రహానికి గురవుతారు.

మీరు మీ agentic pipelinesలలో idempotency keys ఉపయోగించి PRG ప్యాటర్న్‌ను వర్తింపజేయాలి.

Idempotency key అనేది మీ రీడైరెక్ట్ వంటిది. ఇది చర్యను (action) ఫలితం (result) నుండి వేరు చేస్తుంది.

దీనిని ఎలా అమలు చేయాలి:

  • ప్రతి mutating tool తప్పనిసరిగా ఒక idempotency keyని అంగీకరించాలి.
  • మొదటి ప్రయత్నానికి ముందే కీని రూపొందించండి.
  • కీని టైమ్‌స్టాంప్ నుండి కాకుండా, వినియోగదారు ఉద్దేశ్యం (user intent) నుండి పొందండి.
  • సర్వర్ ఆ కీని ఇంతకుముందు చూసిందో లేదో తనిఖీ చేయాలి.
  • ఒకవేళ ఆ కీ ఇప్పటికే ఉంటే, టాస్క్‌ను మళ్ళీ రన్ చేయకుండా, నిల్వ చేయబడిన ఫలితాన్ని (stored result) తిరిగి పంపాలి.

సుదీర్ఘమైన పనుల కోసం, మీకు కేవలం కీ మాత్రమే సరిపోదు. మీకు checkpointing అవసరం.

Checkpointing ప్రతి దశలోనూ స్టేట్‌ను (state) సేవ్ చేస్తుంది. ఒక ఇరవై నిమిషాల పని మధ్యలో ఏజెంట్ క్రాష్ అయితే, అది ఎక్కడ ఆగిపోయిందో అక్కడి నుండే మళ్ళీ మొదలుపెడుతుంది. అది మొదటి నుండి ప్రారంభించదు.

మీరు ఒకే ఒక పని చేయగలిగితే, ప్రతి tool call రెండుసార్లు రన్ చేయడానికి సురక్షితంగా ఉండేలా చూడండి.

ఈ ఐదు తనిఖీలతో మీ ఏజెంట్లను నిర్మించండి:

  • ప్రతి tool idempotency keyని అంగీకరిస్తుందా?
  • కీ సమయం కంటే ఉద్దేశ్యం (intent) ఆధారంగా ఉందా?
  • ప్రతి retry లోనూ అదే కీని ఉపయోగిస్తున్నారా?
  • డూప్లికేట్ కీల కోసం సర్వర్ నిల్వ చేయబడిన ఫలితాలను తిరిగి ఇస్తుందా?
  • సుదీర్ఘ పనుల కోసం మధ్యంతర దశలు సేవ్ చేయబడ్డాయా?

ప్యాటర్న్ అదే. కేవలం లేయర్ మాత్రమే మారింది.

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