ప్రస్తుతం ప్రతి AI సంభాషణలోనూ ఏజెంట్లు రాజ్యమేలుతున్నాయి. డెమోలు చూస్తే అవి మనుషుల సహాయం లేకుండా ఆలోచించే, వ్యూహరచన చేసే మరియు సమస్యలను పరిష్కరించే స్వయంప్రతిపత్త డిజిటల్ అసిస్టెంట్లుగా కనిపిస్తాయి. అయితే, వాటి ఇంటర్‌ఫేస్‌ను లోతుగా పరిశీలిస్తే, అంతకంటే చాలా సరళమైన విషయాన్ని మీరు కనుగొంటారు. ఏజెంట్ అనేది కేవలం ఒక లూప్ (loop) లో నడుస్తున్న లాంగ్వేజ్ మోడల్ మాత్రమే. ఇది ఒక డిజైన్ ప్యాటర్న్, చైతన్యం కాదు. ఈ వ్యత్యాసాన్ని అర్థం చేసుకోవడం చాలా ముఖ్యం, ఎందుకంటే ఇది మీరు ఈ వ్యవస్థలను ఎలా నిర్మిస్తారు, డీబగ్ చేస్తారు మరియు వాటిని ఎంతవరకు నమ్ముతారు అనే అంశాలను మారుస్తుంది.

ఏజెంట్ నిజానికి ఏమిటి

ఒక సాధారణ చాట్‌బాట్ అనేది సింగిల్-షాట్ ఫంక్షన్. మీరు ఒక ప్రాంప్ట్ టైప్ చేస్తారు. మోడల్ తదుపరి టోకెన్లను అంచనా వేసి ఒక టెక్స్ట్ బ్లాక్‌ను తిరిగి ఇస్తుంది. ఆ తర్వాత అది ఆగిపోతుంది. తన సమాధానం ఖచ్చితమైనదా కాదా అని అది తనిఖీ చేయదు. వెబ్ లింక్ పనిచేస్తుందో లేదో లేదా గణన (calculation) సరైనదో కాదో అది ధృవీకరించదు. అది ఒకే ప్రయత్నంలో తన ఉత్తమ అంచనాను మీకు అందిస్తుంది మరియు మౌనంగా ఉండిపోతుంది.

ఒక ఏజెంట్ ఆ సింగిల్ షాట్‌ను పునరావృతమయ్యే చక్రంగా మారుస్తుంది. మోడల్ ఇప్పటికీ టెక్స్ట్‌ను రూపొందిస్తుంది, కానీ ఇప్పుడు అది ఒక నియంత్రిత లూప్ లోపల పనిచేస్తుంది, అక్కడ అది బాహ్య ప్రపంచాన్ని ప్రభావితం చేయగలదు మరియు ఏమి జరుగుతుందో దానికి అనుగుణంగా స్పందించగలదు.

ఆ చక్రం ఇలా ఉంటుంది:

  • లక్ష్యాన్ని అంచనా వేయడం మరియు ఏమి చేయాలో ఆలోచించడం.
  • ఒక చర్య తీసుకోవడం, సాధారణంగా ఒక టూల్ లేదా APIని పిలవడం ద్వారా.
  • ఆ చర్య యొక్క ఫలితాన్ని గమనించడం.
  • ఆ కొత్త సమాచారం ఆధారంగా మళ్ళీ ఆలోచించడం.

పని పూర్తయ్యే వరకు లేదా సిస్టమ్ సేఫ్టీ లిమిట్‌ను చేరుకునే వరకు ఈ చక్రం పునరావృతమవుతుంది. అసలు రహస్యం ఇదే. ఇందులో ఎటువంటి దాగి ఉన్న రీజనింగ్ ఇంజిన్ లేదు. నిజమైన టూల్స్ నుండి వచ్చే నిజమైన డేటాను ఉపయోగించి మోడల్ తన మార్గాన్ని తాను సరిదిద్దుకునే అవకాశం ఇవ్వడం వల్ల ఈ మ్యాజిక్ జరుగుతుంది.

ReAct: థాట్-యాక్షన్-అబ్జర్వేషన్ సైకిల్

ఈ లూప్‌ను అమలు చేయడానికి అత్యంత సాధారణ మార్గం ReAct ప్యాటర్న్, దీని అర్థం Reason plus Act. లూప్‌లోని ప్రతి దశలో, మోడల్ మూడు విభిన్న దశల ద్వారా వెళుతుంది.

మొదట, మోడల్ ఒక Thoughtను ఉత్పత్తి చేస్తుంది. ఇది ప్రస్తుత పరిస్థితిని ప్రతిబింబిస్తుంది, అసలు లక్ష్యాన్ని గుర్తుంచుకుంటుంది మరియు తదుపరి ఏమి తెలుసుకోవాలని నిర్ణయించుకుంటుంది. రెండవది, అది ఒక Actionను ఎంచుకుంటుంది. ఇది వెబ్ సెర్చ్, డేటాబేస్ క్వెరీ, కాలిక్యులేటర్ కాల్ లేదా ఫైల్‌ను చదవమని కోరడం కావచ్చు. మూడవది, అది ఒక Observationను అందుకుంటుంది. సిస్టమ్ మోడల్ వెలుపల ఆ చర్యను అమలు చేస్తుంది మరియు ముడి ఫలితాన్ని (raw result) సంభాషణ చరిత్రలోకి తిరిగి పంపిస్తుంది. మోడల్ ఆ కొత్త పరిశీలనను తన కొత్త వాస్తవంగా ఉపయోగించుకుని తదుపరి లూప్‌ను ప్రారంభిస్తుంది.

ఒక సాధారణ ఉదాహరణను పరిశీలిద్దాం. మీరు ఒక ఏజెంట్‌ను ఆస్టిన్‌లో రేపు వర్షం పడుతుందో లేదో చెప్పమని అడిగారనుకోండి. మోడల్ "నాకు ఆస్టిన్ వాతావరణ సూచన కావాలి" అని ఆలోచించవచ్చు. దాని చర్య నగరం పేరుతో వెదర్ APIని పిలవడం. పరిశీలన (observation) ముడి JSON రూపంలో వస్తుంది: ఉష్ణోగ్రత రీడింగ్ మరియు వర్షపాతం సంభావ్యత. మోడల్ మళ్ళీ ఆలోచిస్తుంది, "వాతావరణ సూచన ప్రకారం డెబ్బై శాతం వర్షం పడే అవకాశం ఉంది," మరియు దాని చివరి చర్య ఆ సమాచారాన్ని మీకు అర్థమయ్యేలా సాధారణ ఇంగ్లీష్ సమాధానంగా అందించడం.

ఈ నిర్మాణం చాలా ముఖ్యం ఎందుకంటే ఇది మోడల్‌కు వాస్తవికతను అందిస్తుంది. మోడల్ ముందుకు వెళ్లే ముందు సెర్చ్ చేసి ఫలితాలను చదవాల్సి వస్తే, అది సొంతంగా వాస్తవాలను సృష్టించలేదు. పరిశీలన (observation) తదుపరి ఆలోచనపై ఒక కఠినమైన నిబంధనగా పనిచేస్తుంది. మోడల్ మాట్లాడే ముందు చూడాల్సి ఉండటం వల్ల, ఇది ఊహించి చెప్పడాన్ని (invention) చాలా కష్టతరం చేస్తుంది.

నమ్మదగిన లూప్‌ను నిర్మించడానికి మీకు ఏమి కావాలి

ఈ ప్యాటర్న్‌ను ప్రొడక్షన్‌లో నడపడానికి కేవలం తెలివైన ప్రాంప్ట్ మాత్రమే సరిపోదు. మీకు మూడు ఆచరణాత్మక గార్డ్‌రైల్స్ (guardrails) అవసరం.

స్టెప్ బడ్జెట్‌ను నిర్ణయించండి. ఎల్లప్పుడూ గరిష్ట లూప్ ఇటరేషన్ల సంఖ్యను నిర్వచించండి. ఒక పరిమితి లేకపోతే, ఏజెంట్ తన తోకను తాను వెంటాడినట్లుగా—వెతకడం, గమనించడం, ఆలోచించడం, మళ్ళీ వెతకడం—మీ API బడ్జెట్‌ను పూర్తిగా ఖర్చు చేసే వరకు చేస్తూనే ఉంటుంది. స్టెప్ లిమిట్ దానిని ముగించడాన్ని (termination) బలవంతం చేస్తుంది. పరిమితికి చేరుకున్న తర్వాత పాక్షిక ఫలితాన్ని తిరిగి ఇవ్వాలా, మనిషికి పంపాలా లేదా కేవలం విఫలమవ్వాలా అనేది మీరు నిర్ణయించవచ్చు.

కోడ్ ఎగ్జిక్యూషన్‌ను మీరే నిర్వహించండి. లాంగ్వేజ్ మోడల్ టూల్స్‌ను రన్ చేయదు. అది కేవలం చర్యలను సూచిస్తుంది, సాధారణంగా ఒక టూల్ పేరు మరియు పారామీటర్లను అందిస్తూ స్ట్రక్చర్డ్ టెక్స్ట్ లేదా JSONను అవుట్‌పుట్‌గా ఇస్తుంది. మీ కోడ్