કોઈ લેંગ્વેજ મોડલને પૂછો કે “strawberry” શબ્દમાં કેટલા અક્ષરો છે. શક્ય છે કે તે ખોટું કહેશે. તે દસ કહી શકે છે. તે અગિયાર કહી શકે છે. તે પૂરા આત્મવિશ્વાસ સાથે બોલશે, છતાં તે ખોટું હશે. તે જ મોડલને લોન પર ચક્રવૃદ્ધિ વ્યાજની ગણતરી કરવા માટે, અથવા બે મોટી સંખ્યાઓનો સરવાળો કરવા માટે, અથવા બે તારીખો વચ્ચેના વ્યવસાયિક દિવસો (business days) ગણવા માટે કહો, અને તમને ઘણીવાર એક વ્યાજબી દેખાતો જવાબ મળશે જેમાં અંકો થોડા, જોખમી રીતે ખોટા હશે.

આવું એટલા માટે થાય છે કારણ કે લાર્જ લેંગ્વેજ મોડલ્સ સંખ્યાઓ વિશે માણસોની જેમ તર્ક (reasoning) કરતા નથી. તેઓ ટોકન્સ (tokens) ની આગાહી કરે છે. એક ટોકન આખો શબ્દ, શબ્દનો ભાગ અથવા એક સિંગલ અંક હોઈ શકે છે. જ્યારે મોડલ “strawberry” જુએ છે, ત્યારે તે એક હરોળમાં ગોઠવાયેલા આઠ અલગ-અલગ અક્ષરો જોતું નથી. તે માત્ર થોડા ટુકડાઓ (chunks) જુએ છે. તેને અક્ષરો ગણતા શીખવવામાં આવ્યું નથી, માત્ર આગળ કયો ટેક્સ્ટનો ટુકડો આવશે તેની આગાહી કરવાનું શીખવવામાં આવ્યું છે. આ જ મર્યાદા અંકગણિત (arithmetic) ને પણ લાગુ પડે છે. મોડલ પાસે કોઈ આંતરિક કેલ્ક્યુલેટર નથી. તેમાં 'કેરી લોજિક' (carry logic) નો અભાવ છે. તેને સ્થાનના મૂલ્ય (place value) ની કોઈ વાસ્તવિક સમજ નથી. જ્યારે તે 148 ને 279 વડે ગુણે છે, ત્યારે તે ગુણાકાર કરી રહ્યું નથી હોતું. તે તેના ટ્રેનિંગ દરમિયાન જોયેલા સમાન અભિવ્યક્તિઓ સાથે પેટર્ન-મેચિંગ કરી રહ્યું હોય છે, અને અંકોનો કયો ક્રમ પછી આવવો જોઈએ તેનો અંદાજ લગાવતું હોય છે. નાની સરવાળા માટે આ પેટર્ન કામ કરવા માટે પૂરતી મજબૂત હોય છે. પરંતુ ચોકસાઈની જરૂર હોય તેવી કોઈપણ બાબતમાં, આ અંદાજ અંતે નિષ્ફળ જાય છે.

બે કામ, એક બોટ

સ્ટાન્ડર્ડ પ્રોમ્પ્ટિંગ પદ્ધતિઓ એક જ સિસ્ટમને એકસાથે બે ખૂબ જ અલગ કામ કરવા માટે કહે છે. પ્રથમ, સમસ્યાના તર્કને સમજવો. બીજું, ચોક્કસ ગણતરી કરવી. મોડલ પ્રથમ કાર્યમાં ખરેખર પ્રભાવશાળી છે. તે શબ્દ સમસ્યા (word problem) વાંચી શકે છે, વેરિયેબલ્સ (variables) કાઢી શકે છે, સંબંધો નક્કી કરી શકે છે અને ઉકેલનો માર્ગ આયોજિત કરી શકે છે. પરંતુ પછી તેણે પોતાના કેલ્ક્યુલેટર તરીકે કામ કરવું પડે છે. ત્યાં જ સાંકળ તૂટી જાય છે. ત્રીજા સ્ટેપમાં એક જ અંક ભૂલથી લખાઈ જાય તો તે પછીના દરેક સ્ટેપને બગાડી નાખે છે. તર્ક પોતે સંપૂર્ણ હોઈ શકે છે, છતાં અંતિમ જવાબ ખોટો હોય છે કારણ કે મોડલે ખોટી રીતે સરવાળો કર્યો હોય છે.

પ્રોગ્રામ-એઇડેડ લેંગ્વેજ મોડલ્સ (Program-Aided Language Models), અથવા PAL, કામને વિભાજિત કરીને આ સમસ્યાનો ઉકેલ લાવે છે. મોડલ પાસે જવાબ માંગવાને બદલે, તમે તેની પાસે પ્રોગ્રામ માંગો છો.

અહીં પ્રક્રિયા ખરેખર કેવી રીતે કામ કરે છે તે જુઓ. તમે સમસ્યા રજૂ કરો છો. મોડલ તર્ક નક્કી કરે છે, વેરિયેબલ્સ વ્યાખ્યાયિત કરે છે અને અલ્ગોરિધમનું માળખું તૈયાર કરે છે. પછી, પરિણામની જાતે ગણતરી કરવાને બદલે, તે એક નાની સ્ક્રિપ્ટ લખે છે, સામાન્ય રીતે Python માં. તે સ્ક્રિપ્ટ વાસ્તવિક કોડ ઇન્ટરપ્રિટર (code interpreter) ને સોંપવામાં આવે છે. ઇન્ટરપ્રિટર તર્ક ચલાવે છે અને ચોક્કસ, નિર્ધારિત (deterministic) પરિણામ આપે છે. મોડલ ગણિતનું વર્ણન કરે છે. Python ગણિત કરે છે.

પ્રેક્ટિસમાં એક્ઝિક્યુટેબલ રીઝનિંગ (Executable Reasoning)

PAL ને એક્ઝિક્યુટેબલ રીઝનિંગ તરીકે વિચારો. જો કોઈ સ્ક્રિપ્ટ સમસ્યા ઉકેલી શકે તેમ હોય, તો મોડલને સ્ક્રિપ્ટ લખવા દો.

એક નક્કર ઉદાહરણ લો. તમારે ₹50,000 ની ફિક્સ્ડ ડિપોઝિટ પર વાર્ષિક 8.5 ટકા વ્યાજ દરે, ત્રિમાસિક (quarterly) ચક્રવૃદ્ધિ વ્યાજ સાથે, સાત વર્ષ માટે મેચ્યોરિટી રકમની ગણતરી કરવાની જરૂર છે. જો તમે સીધું જ લેંગ્વેજ મોડલને પૂછશો, તો તે કદાચ સૂત્ર લખશે, કિંમતો મૂકશે અને 'ચેઈન ઓફ થોટ' (chain of thought) માં પરિણામની ગણતરી કરશે. જોકે, ધ્યાનથી જોશો તો તમને ખબર પડશે કે તેણે ત્રિમાસિક ચક્રવૃદ્ધિમાં ભૂલ કરી છે, કદાચ વ્યાજ દરને ખોટી રીતે વહેંચી દીધો હોય, અથવા તેણે કોઈ મધ્યવર્તી સ્ટેપને રાઉન્ડ-ઓફ કરીને ભૂલ આગળ વધારી દીધી હોય. જવાબ વ્યાજબી લાગે છે પરંતુ તે સેંકડો રૂપિયાથી અલગ હોય છે.

PAL સાથે, આ પ્રક્રિયા બદલાઈ જાય છે. તમે મોડલને Python કોડ જનરેટ કરવા માટે સૂચના આપો છો જે principal = 50000, rate = 0.085, time = 7, અને n = 4 વ્યાખ્યાયિત કરે છે, અને પછી amount = principal * (1 + rate/n) ** (n * time) ની ગણતરી કરે છે. મોડલ કોડ આપે છે. Python રનટાઇમ તેને એક્ઝિક્યુટ કરે છે. તમને દરેક વખતે છેલ્લી દશાંશ સંખ્યા સુધીનું ચોક્કસ આંકડો મળે છે. ગુણાકારમાં કોઈ અંદાજ લગાવવાની જરૂર નથી, કોઈ કાલ્પનિક શેષ નથી, અને કોઈ આત્મવિશ્વાસ સાથેની રાઉન્ડિંગ ભૂલ નથી.

આ જ પેટર્ન તારીખની ગણતરીને પણ લાગુ પડે છે. મોડલને પૂછો કે વીકેન્ડ્સ (weekends) સિવાય, આજે થી બરાબર 120 વ્યવસાયિક દિવસો પછી કઈ તારીખ આવશે. ફક્ત ટેક્સ્ટ-આધારિત મોડલ આગળની ગણતરી કરતી વખતે શનિવાર પર ભૂલ કરી શકે છે. PAL અભિગમ મોડલને datetime અને calendar લોજિકનો ઉપયોગ કરીને સ્ક્રિપ્ટ લખવા દે છે, અને પછી ઇન્ટરપ્રિટરને ચોકસાઈથી ગણતરી કરવા દે છે. ડેટા મેનિપ્યુલેશન પણ આ જ રીતે કામ કરે છે. જો તમારે અસ્તવ્યસ્ત CSV પાર્સ કરવાની જરૂર હોય, નેસ્ટેડ JSON ફિલ્ટર કરવાની હોય, અથવા ઝડપી સ્ટેટિસ્ટિકલ ટ્રાન્સફોર્મ ચલાવવાની હોય, તો મોડલે તર્ક તૈયાર કરવો જોઈએ જ્યારે ઇન્ટરપ્રિટર ઇટરેશન સંભાળે.

આ ખરેખર કેમ મહત્વનું છે

ગદ્ય (prose) જવાબોથી એક્ઝિક્યુટેબલ કોડ તરફનું પરિવર્તન ત્રણ વ્યવહારુ ફાયદાઓ આપે છે.

નિશ્ચિતતા (Determinism). એક જ પ્રશ્ન બે વાર પૂછવામાં આવે ત્યારે લેંગ્વેજ મોડેલ તેના શબ્દોમાં ફેરફાર કરી શકે છે અથવા કોઈ આંકડો બદલી શકે છે. ઇન્ટરપ્રિટર દરેક વખતે સમાન ઇનપુટ માટે સમાન આઉટપુટ આપે છે. એકાઉન્ટિંગ, લોજિસ્ટિક્સ, શેડ્યુલિંગ અને કોઈપણ એન્જિનિયરિંગ ગણતરીમાં તે સ્થિરતા ખૂબ જ મહત્વપૂર્ણ છે જ્યાં સુસંગતતા એ વૈકલ્પિક નથી.

ચકાસણીક્ષમતા (Verifiability). જ્યારે મોડેલ તમને તર્કના ત્રણ ફકરા આપે છે, ત્યારે તમારે એક ખોટો આંકડો શોધવા માટે દરેક વાક્ય વાંચવું પડે છે. જ્યારે તે તમને દસ લીટીની સ્ક્રિપ્ટ આપે છે, ત્યારે તમે કોડની સમીક્ષા કરી શકો છો. ઇન્ટરપ્રિટર ચલાવતા પહેલા તમે ચકાસી શકો છો કે ચક્રવૃદ્ધિ વ્યાજનું સૂત્ર સાચું છે કે નહીં. તમે વેરિયેબલના નામ તપાસી શકો છો, 'off-by-one' ભૂલો શોધી શકો છો અને ઉકેલનું વર્ઝન-કંટ્રોલ (version-control) પણ કરી શકો છો. છુપાયેલી ભૂલોની શક્યતામાં મોટો ઘટાડો થાય છે.

વિશ્વસનીયતા (Reliability). મોડેલ તેના નિર્ધારિત કાર્યક્ષેત્રમાં રહે છે. તે તે જ કરે છે જેના માટે તેને બનાવવામાં આવ્યું છે: સ્ટ્રક્ચર, સિમેન્ટિક્સ અને સમસ્યાના વિભાજન (problem decomposition) વિશે તર્ક કરવો. મશીન તે જ કરે છે જેના માટે તેને બનાવવામાં આવ્યું છે: સચોટ રીતે ગણતરી કરવી. આ 'separation of concerns' એ જ રીતે છે જેના દ્વારા વિશ્વસનીય સોફ્ટવેરનું આર્કિટેક્ચર તૈયાર કરવામાં આવે છે. કમ્પોઝિશન (Composition), મોનોલિથિક ડિઝાઇન (monolithic design) કરતા વધુ સારું છે.

તેને અવિશ્વસનીય કોડ તરીકે ચલાવો

સાવચેતી રાખવી જરૂરી છે. જનરેટ થયેલા કોડને અવિશ્વસનીય ઇનપુટ તરીકે ગણવો જોઈએ. મોડેલ અનંત લૂપ (infinite loop), બિનજરૂરી નેટવર્ક રિક્વેસ્ટ અથવા તમે ન માંગેલી ફાઇલ સિસ્ટમ ઓપરેશન ધરાવતી સ્ક્રિપ્ટ લખી શકે છે. આ પ્રોગ્રામ્સને હંમેશા એક અલગ સેન્ડબોક્સ (sandbox) ની અંદર જ ચલાવો. મર્યાદિત અધિકારો ધરાવતા કન્ટેનર્સ, નેટવર્ક એક્સેસ વગરના સર્વરલેસ ફંક્શન્સ, અથવા મર્યાદિત CPU સમય અને કોઈ પર્સિસ્ટન્ટ સ્ટોરેજ વગરના કડક રીતે નિયંત્રિત વાતાવરણનો ઉપયોગ કરો. અહીં સુરક્ષા એ માત્ર એક નોંધ નથી. તે સિસ્ટમ ડિઝાઇનનો એક ભાગ છે.

PAL ક્યાં શ્રેષ્ઠ કામ કરે છે, અને ક્યાં અટકી જાય છે

PAL ગણિત, તારીખો અને સ્ટ્રક્ચર્ડ ડેટા મેનિપ્યુલેશન માટે અદભૂત રીતે કામ કરે છે. તે ટેક્સ્ટ-આધારિત તર્કને નુકસાન પહોંચાડતી યાંત્રિક ભૂલોને દૂર કરે છે.

જોકે, તે ખરાબ લોજિકને સુધારી શકતું નથી. જો મોડેલ ખોટું સૂત્ર પસંદ કરે છે,