డిజిటల్ బ్యాంక్‌లో ఖాతా బ్యాలెన్స్‌లను తప్పుగా చెప్పే సపోర్ట్ బాట్ కేవలం పనికిరానిది మాత్రమే కాదు, అది ప్రమాదకరం కూడా. ఆర్థిక సంభాషణలకు ఖచ్చితమైన సంఖ్యలు, ధృవీకరించబడిన పేయీలు (payees) మరియు ప్రతి క్లెయిమ్‌కు ఆడిట్ ట్రయల్ అవసరం. లార్జ్ లాంగ్వేజ్ మోడల్స్ సంభాషణల్లో అద్భుతంగా పనిచేస్తాయి, కానీ అవి హాలూసినేట్ (hallucinate) చేస్తాయి. ఒక వినియోగదారు “నా ఖాతాలో ఎంత ఉంది?” అని అడిగినప్పుడు, మోడల్ ఊహలకు కాకుండా డేటాబేస్‌ను సంప్రదించాలి. ఫంక్షన్ కాలింగ్ (function calling) సరిగ్గా ఇదే చేస్తుంది, మరియు ఇది ఈ ప్రాజెక్ట్ యొక్క ప్రధాన ఉద్దేశ్యం.

Google యొక్క Gemma 4 డెవలపర్‌లకు సంక్లిష్టమైన సూచనలను అనుసరించగల మరియు ప్రాంతీయ మాండలికాల్లో కూడా సహజమైన సంభాషణను కొనసాగించగల సామర్థ్యం ఉన్న 31-బిలియన్ పారామీటర్ మోడల్‌ను అందిస్తుంది. Google AI Studioతో కలిపి ఉపయోగించినప్పుడు, ఇది ఒక వేగవంతమైన ప్రోటోటైపింగ్ వాతావరణంగా మారుతుంది, ఇక్కడ మీరు సర్వర్‌ను తాకకముందే టూల్స్‌ను నిర్వచించవచ్చు, ఎడ్జ్ కేస్‌లను (edge cases) పరీక్షించవచ్చు మరియు పనిచేసే JavaScript కోడ్‌ను ఎగుమతి చేయవచ్చు. ఇక్కడ లక్ష్యం ఖాతా బ్యాలెన్స్‌లను తనిఖీ చేసే, లావాదేవీల స్థితిని ట్రాక్ చేసే మరియు బిల్లులను చెల్లించే ఒక ఫిన్‌టెక్ సపోర్ట్ ఏజెంట్‌ను రూపొందించడం. ముఖ్యంగా, వినియోగదారు నైజీరియన్ పిడ్జిన్ (Nigerian Pidgin) లో మాట్లాడితే, అది కూడా అదే భాషలో స్పందిస్తుంది, ఆర్థిక వాస్తవాలను తప్పుగా సృష్టించకుండా అదే టోన్‌ను అనుసరిస్తుంది.

ఆర్థిక బాట్‌ల కోసం ఫంక్షన్ కాలింగ్ ఎందుకు ముఖ్యం

ఫంక్షన్ కాలింగ్ లేకుండా, ఒక లాంగ్వేజ్ మోడల్ ప్రతి ప్రశ్నను ఒక సృజనాత్మక రచనగా భావిస్తుంది. మీరు బ్యాలెన్స్ గురించి అడిగితే, అది తన శిక్షణ డేటాలోని నమూనాల నుండి వినడానికి నిజంలా అనిపించే ఒక సంఖ్యను సృష్టించవచ్చు. నిజమైన డబ్బుతో సంబంధం ఉన్నప్పుడు ఇటువంటి లోపం అస్సలు ఆమోదయోగ్యం కాదు.

ఫంక్షన్ కాలింగ్ ఈ ప్రక్రియను మారుస్తుంది. బ్యాలెన్స్‌ను తెలుసుకోవడం మోడల్ పని కాదు. వినియోగదారు ఉద్దేశ్యాన్ని గుర్తించడం, సరైన టూల్‌ను ఎంచుకోవడం మరియు పారామీటర్లను సేకరించడం దాని పని. వినియోగదారు “Check my balance” అని రాసినప్పుడు, Gemma 4 ఒక స్ట్రక్చర్డ్ JSON రిక్వెస్ట్‌ను విడుదల చేస్తుంది—అంటే account_id తో get_balance కి చేసే కాల్ వంటిది. మీ బ్యాకెండ్ ఆ కాల్‌ను కోర్ బ్యాంకింగ్ సిస్టమ్‌లో అమలు చేసి, అసలైన సంఖ్యను పొంది, దానిని తిరిగి సంభాషణలోకి పంపిస్తుంది. అప్పుడు మాత్రమే మోడల్ వినియోగదారుకు అర్థమయ్యే వాక్యాన్ని రూపొందిస్తుంది. ప్రతి సమాధానం బ్యాకెండ్‌కు చేసే టూల్ కాల్ ద్వారా వస్తుంది. మోడల్ బాహ్య లాజిక్ ద్వారా నియంత్రించబడటం వల్ల, హాలూసినేషన్లు API సరిహద్దులోనే ఆగిపోతాయి.

ఈ విధానం స్పష్టమైన ఆడిట్ ట్రైల్స్‌ను కూడా సృష్టిస్తుంది. ప్రతి టూల్ రిక్వెస్ట్ మరియు దానికి సంబంధించిన ఫలితం మెసేజ్ హిస్టరీలో నమోదవుతాయి. నియంత్రణ సంస్థలు (Regulators) మరియు రిస్క్ టీమ్‌లు బ్యాలెన్స్ ఎప్పుడు తనిఖీ చేయబడింది మరియు వినియోగదారు ఏ సంఖ్యను అందుకున్నారో ఖచ్చితంగా తనిఖీ చేయగలరు.

Google AI Studioలో ఏజెంట్‌ను డిజైన్ చేయడం

ఈ వర్క్‌ఫ్లో Google AI Studioలో ప్రారంభమవుతుంది. సంభాషణ మరియు సూచనలను అనుసరించడానికి అనుకూలీకరించబడిన gemma-4-31b-it ని ఎంచుకోండి.

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

ఆ తర్వాత టూల్ స్కీమాస్‌ను (tool schemas) నిర్వచించండి. వీటిని మోడల్ మరియు మీ బ్యాకెండ్ మధ్య ఒప్పందాలుగా భావించండి. మీకు కనీసం మూడు అవసరం:

  1. get_balance
    పారామీటర్లు: account_id (string, తప్పనిసరి)
    తిరిగి ఇస్తుంది: ప్రస్తుత బ్యాలెన్స్ మరియు కరెన్సీ.

  2. get_transaction_status
    పారామీటర్లు: transaction_reference (string, తప్పనిసరి)
    తిరిగి ఇస్తుంది: పెండింగ్, పూర్తయింది లేదా విఫలమైంది వంటి స్థితి (status), మరియు టైమ్‌స్టాంప్.

  3. pay_bill
    పారామీటర్లు: biller_code (string, తప్పనిసరి), amount (number, తప్పనిసరి), account_pin (string, మీ ఫ్లో ఆధారంగా ఐచ్ఛికం)
    తిరిగి ఇస్తుంది: కన్ఫర్మేషన్ రిఫరెన్స్ లేదా ఎర్రర్ మెసేజ్.

ప్రతి స్కీమా ఫంక్షన్ పేరు, వివరణ మరియు పారామీటర్ లక్షణాలను వివరించే ప్రామాణిక JSON ఫార్మాట్‌ను ఉపయోగిస్తుంది. వివరణాత్మక ఫీల్డ్‌లు (description fields) చాలా ముఖ్యం. మోడల్ ఏ టూల్‌ను ఎప్పుడు ఉపయోగించాలో అర్థం చేసుకునేలా వాటిని వ్రాయండి. అస్పష్టమైన వివరణలు తప్పు టూల్ ఎంపికకు దారితీస్తాయి, కాబట్టి స్పష్టంగా ఉండండి: “వినియోగదారు తమ ప్రస్తుత ఖాతా బ్యాలెన్స్‌ను తెలుసుకోవాలనుకున్నప్పుడు get_balanceని ఉపయోగించండి. లావాదేవీల చరిత్ర కోసం దీనిని ఉపయోగించవద్దు.”

బ్రౌజర్‌లో ప్రోటోటైపింగ్ చేయడం

మీరు ఒక్క Express రూట్‌ను కూడా వ్రాయకముందే, AI Studio యొక్క చాట్ ప్యానెల్‌లో మొత్తం సంభాషణ ప్రవాహాన్ని పరీక్షించండి. ఇది బ్యాకెండ్ రీవర్క్ సమయాన్ని ఆదా చేస్తుంది. నైజీరియన్ పిడ్జిన్‌లో ఒక ప్రశ్నను టైప్ చేయండి: “Wetin remain inside my account?” Gemma 4 సరిగ్గా get_balance కాల్‌ను విడుదల చేస్తుందో లేక శిక్షణ డేటా నుండి సమాధానం చెప్పడానికి ప్రయత్నిస్తుందో గమనించండి. ఒకవేళ అది పారామీటర్లను తప్పుగా ఇస్తే—బహుశా account_id కి బదులుగా account_number ఉపయోగిస్తే—మీరు అక్కడే స్కీమా వివరణను సరిచేయవచ్చు.

వైఫల్య మోడ్‌లను (failure modes) కూడా పరీక్షించండి. రిఫరెన్స్ నంబర్ ఇవ్వకుండా లావాదేవీ స్థితిని (transaction status) అడగండి. సరిగ్గా సూచించబడిన మోడల్, లేని పారామీటర్‌ కోసం వినియోగదారుని అడగాలి లేదా తన వద్ద ఉన్న సమాచారంతో టూల్‌ను కాల్ చేసి, బ్యాకెండ్ నుండి వాలిడేషన్ ఎర్రర్‌ను వచ్చేలా చేయాలి. మీరు ఈ ప్రవర్తనలను సాండ్‌బాక్స్‌లో (sandbox) చూడాలి, ప్రొడక్షన్‌లో కాదు.

ప్రాంప్ట్‌లు మరియు స్కీమాలు సరిగ్గా పనిచేసిన తర్వాత, JavaScript కోడ్‌ను ఎగుమతి చేయండి. AI Studio మీ సిస్టమ్ ప్రాంప్ట్, యూజర్ మెసేజ్ మరియు టూల్ డెఫినిషన్లతో API రిక్వెస్ట్‌ను రూపొందించే ఒక క్లీన్ స్నిప్పెట్‌ను అందిస్తుంది. ఇది మీ బ్యాకెండ్ లాజిక్ యొక్క పునాది అవుతుంది.

Express Backend ను కనెక్ట్ చేయడం

ఎగుమతి చేసిన కోడ్‌ను తీసుకుని దానిని ఒక Express అప్లికేషన్‌లో ఉపయోగించండి. దీని ఆర్కిటెక్చర్ సరళంగా ఉంటుంది, కానీ ఎగ్జిక్యూషన్ లూప్ (execution loop) అనేది కీలకమైన భాగం.

యూజర్ మెసేజ్ మరియు ఏదైనా సెషన్ హిస్టరీని అంగీకరించే ఒక POST ఎండ్‌పాయింట్—బహుశా /chat—ను సెటప్ చేయండి. మీ హోస్టింగ్ ఎంపికను బట్టి, OpenAI-అనుకూలమైన API లేదా Google యొక్క స్వంత ఇన్ఫరెన్స్ ఎండ్‌పాయింట్ ద్వారా మీరు వీటిని Gemma 4 ఎండ్‌పాయింట్‌కు ఫార్వార్డ్ చేయవచ్చు.

మోడల్ నుండి వచ్చే ప్రతిస్పందన రెండు రకాల్లో ఒకటిగా ఉంటుంది. అది తుది టెక్స్ట్ మెసేజ్ కావచ్చు, లేదా డేటా కోసం tool_callను కలిగి ఉండవచ్చు. మీరు టూల్ కాల్ అందుకున్నప్పుడు, మీ బ్యాకెండ్‌లో దానికి సంబంధించిన ఫంక్షన్‌ను అమలు చేయండి. బ్యాలెన్స్ కోసం డేటాబేస్‌ను క్వెరీ చేయండి. బిల్ స్టేటస్ కోసం పేమెంట్ ప్రాసెసర్‌ను సంప్రదించండి. టూల్ ఫలితాన్ని tool రోల్‌తో కొత్త మెసేజ్‌గా సంభాషణ చరిత్రకు (conversation history) జోడించి, మొత్తం అప్‌డేట్ చేయబడిన అర్రేను Gemma 4కి తిరిగి పంపండి.

మోడల్ తుది టెక్స్ట్ సమాధానాన్ని ఇచ్చే వరకు ఈ లూప్‌ను పునరావృతం చేయండి. ఆ సమాధానం మీరు అందించిన వాస్తవ డేటా ఆధారంగా ఉంటుంది. Express దీనిని సమన్వయం చేయడం సులభతరం చేస్తుంది, ఎందుకంటే లూప్‌లోని ప్రతి పాస్ కేవలం మరొక HTTP రిక్వెస్ట్ మాత్రమే, మరియు మీరు టూల్ ఎగ్జిక్యూషన్‌ను క్లీన్‌గా async/await చేయవచ్చు.

ప్రారంభ అభివృద్ధి సమయంలో, ఈ టూల్ కాల్స్‌ను మాక్ డేటా (mock data)తో అను