અવાજ (Voice) એ એક એવું ફીચર બની ગયું છે જેને દરેક AI એજન્ટ પ્લેટફોર્મ ઝડપથી લોન્ચ કરવા માટે દોડી રહ્યું છે. સ્પષ્ટ પગલું એ છે કે તેને એક સ્વતંત્ર ચેનલ તરીકે બનાવવું, જે તમારા web app, તમારા CLI ટૂલ અથવા તમારા Telegram બોટની બાજુમાં હોય. તે સહજ લાગે છે. તમે અવાજ જુઓ છો, તમે અવાજ ઇન્ટરફેસ બનાવો છો. પરંતુ આ વૃત્તિ એક નાજુક આર્કિટેક્ચર બનાવે છે. તે કામનું ડુપ્લીકેશન કરે છે, તમારા લોગ્સને બગાડે છે અને ધીમે ધીમે તમારા પ્રોજેક્ટના સંદર્ભને (context) ખોરવી નાખે છે.
APC અને APX માં, અમે એક અલગ રસ્તો પસંદ કર્યો છે. અવાજ એ ચેનલ નથી. તે એક મોડ (mode) છે. તે કોઈ સપાટીને બદલવાને બદલે તેની ઉપર કામ કરે છે. આ તફાવતને યોગ્ય રીતે સમજવો એ જ સિસ્ટમને વિખરાઈ જતી અટકાવે છે.
ખોટું એબ્સ્ટ્રેક્શન (The Wrong Abstraction)
જ્યારે તમે અવાજને તેની પોતાની ચેનલ તરીકે ગણો છો, ત્યારે તમે પરોક્ષ રીતે એવું માની લો છો કે એજન્ટ સાથે બોલીને વાત કરવી એ તેની સાથે ટાઈપ કરીને વાત કરવા કરતા મૂળભૂત રીતે અલગ વાતચીત છે. એન્જિનિયરિંગ ટીમો આના જવાબમાં કોડબેઝને વિભાજિત કરે છે. અચાનક ત્યાં એક CLI ચેનલ અને એક અલગ voice-CLI ચેનલ હોય છે. ત્યાં એક web ચેનલ અને એક સમાંતર voice-web ચેનલ હોય છે. દરેક માટે અલગ પ્રોમ્પ્ટ વેરિએશન, ફોર્મેટિંગ નિયમો અને કોન્ટેક્સ્ટ હેન્ડલિંગ લોજિકની જરૂર પડે છે.
અહીંથી જ અરાજકતા શરૂ થાય છે. એજન્ટના વર્તનમાં કરેલા નાના ફેરફારને હવે અનેક પ્રોમ્પ્ટ ટ્રીઝમાં કોપી કરવા પડે છે. જો ટીમ એક સપાટી ભૂલી જાય, તો અનુભવ વિખરાઈ જાય છે. વપરાશકર્તાઓને ટેક્સ્ટ પર એક પ્રકારનો ટોન અને સ્પીચ પર થોડી અલગ પર્સનાલિટી મળે છે. સમય જતાં, આ નાની અસંગતતાઓ સિસ્ટમ ડ્રિફ્ટમાં પરિણમે છે. પોર્ટેબલ કોન્ટેક્સ્ટ લેયર પોર્ટેબલ રહેતું નથી કારણ કે તેણે એક શાખામાં વોકલ ડિલિવરી અને બીજી શાખામાં સાયલન્ટ ટેક્સ્ટ બંનેને ધ્યાનમાં લેવું પડે છે. એબ્સ્ટ્રેક્શન લીક થાય છે, અને તમારું એક સમયે એકીકૃત પ્રોજેક્ટ ડેફિનેશન ચેનલ-સ્પેસિફિક હેક્સના સંગ્રહમાં ફેરવાઈ જાય છે.
કોન્ટેક્સ્ટને રનટાઇમથી અલગ પાડવું (Splitting Context from Runtime)
આને રોકવા માટે, અમે બે લેયર્સ વચ્ચે જવાબદારીઓ વહેંચી દીધી છે જે સંપૂર્ણપણે અલગ રહે છે.
APC પ્રોજેક્ટ કોન્ટેક્સ્ટ ધરાવે છે. તે એજન્ટ્સ, નિયમો અને કૌશલ્યો (skills) વ્યાખ્યાયિત કરે છે જે એક પ્રોજેક્ટ બનાવે છે. તેને સિસ્ટમના સ્થિર અર્થ તરીકે ગણો. તે માળખાગત પ્રશ્નોના જવાબ આપે છે. આ એજન્ટ શું જાણે છે? તેને શું કરવાની મંજૂરી છે? તે કયા ટૂલ્સનો ઉપયોગ કરી શકે છે? જવાબ સ્ક્રીન પર દેખાય, ચેટ API દ્વારા મોકલવામાં આવે અથવા સ્પીકર દ્વારા સંભળાવવામાં આવે, તેનાથી APC ને કોઈ લેવાદેવા ન હોવી જોઈએ.
APX રનટાઇમ લેયર સંભાળે છે. તે તમે ખરેખર જે સપાટીઓનો ઉપયોગ કરો છો તેનું સંચાલન કરે છે: CLI, web application, desktop interface, Telegram bot. જ્યારે વપરાશકર્તા વિનંતી મોકલે છે, ત્યારે APX નક્કી કરે છે કે પ્રતિસાદ ક્યાં અને કેવી રીતે રજૂ કરવો. જવાબ વાંચવા માટે ફોર્મેટ કરવો કે બોલવા માટે ઓપ્ટિમાઇઝ કરવો તે રનટાઇમની બાબત છે. તે APX માં હોવો જોઈએ, APC માં નહીં.
આ અલગતાનો અર્થ એ છે કે APC માં વ્યાખ્યાયિત પ્રોજેક્ટ APX કેટલી પણ સપાટીઓ રજૂ કરે તેટલો અકબંધ રહે છે. કોન્ટ્રાક્ટ (contract) બદલાતો નથી. માત્ર પ્રેઝન્ટેશન લેયર બદલાય છે.
મોડ્સ ખરેખર કેવી રીતે કામ કરે છે (How Modes Actually Work)
અમારા અમલીકરણમાં, Telegram, CLI અને web app જેવી સપાટીઓ (surfaces) ચેનલો છે. ચેનલ તમને જણાવે છે કે ઇન્ટરેક્શન ક્યાં થયું હતું. અવાજને ચેનલ મેટાડેટા દ્વારા એક મોડ તરીકે લેયર કરવામાં આવે છે. મોડ તમને જણાવે છે કે પ્રતિસાદ કેવો હોવો જોઈએ.
પ્રોમ્પ્ટ બિલ્ડર આ સીમાનું સન્માન કરે છે. તે APC માં પ્રોજેક્ટ કોન્ટેક્સ્ટમાંથી ડેટા લે છે, અને પછી ચેનલ મેટાડેટાની તપાસ કરે છે. જો ડેસ્કટોપ સપાટી voice mode માં ચાલી રહી હોય, તો બિલ્ડર તે સમયે જ લક્ષિત સૂચનાઓ ઉમેરે છે. કદાચ તે મોડેલને ટૂંકા વાક્યો, સંશ્લેષણ (synthesis) માટે સ્પષ્ટ વિરામચિહ્નો અથવા બોલાતી સંખ્યાના નિયમો તરફ દોરી જાય છે. જો સમાન ડેસ્કટોપ સપાટી text mode માં ચાલી રહી હોય, તો તે વોકલ સૂચનાઓ પ્રોમ્પ્ટમાં ક્યારેય પ્રવેશતી નથી.
પરિણામ એક સપાટી દીઠ એક જ પ્રોમ્પ્ટ ટ્રી છે. કોઈ અલગ voice-desktop શાખા નથી. કોઈ whisper-web વેરિઅન્ટ નથી. મોડિફાયર ત્યારે જ લાગુ થાય છે જ્યારે રનટાઇમ તેની માંગ કરે છે, અને તે પણ છેલ્લી જવાબદારીભરી ક્ષણે. મુખ્ય પ્રોમ્પ્ટ સ્થિર રહે છે.
તમને શું મળે છે (What You Gain)
આ આર્કિટેક્ચર ત્રણ નક્કર રીતે ફાયદો આપે છે.
ઓછો મેન્ટેનન્સ ખર્ચ. જો અવાજ તેની પોતાની ચેનલ હોત, તો દરેક સપાટીને જોડીની જરૂર પડત. તમારે એક CLI ચેનલ અને એક voice-CLI ચેનલ, એક Telegram ચેનલ અને એક voice-Telegram ચેનલ વગેરે જાળવવી પડત. જ્યારે પણ તમે સિસ્ટમ પ્રોમ્પ્ટમાં ફેરફાર કરો, ફોર્મેટિંગ બગ સુધારો અથવા કૌશલ્ય વર્ણન સુધારો, ત્યારે તમારે તે ફેરફાર બંને ટ્રીઝમાં ફેલાવવો પડશે. જો તમે એક પણ ભૂલી જશો, તો વપરાશકર્તાઓ તફાવત નોંધી લેશે. મોડનો ઉપયોગ કરીને, તમે દરેક સપાટી દીઠ એક જ પ્રોમ્પ્ટ ટ્રી રાખો છો. અવાજ એ રસ્તાના વિભાજનને બદલે એક કન્ડિશનલ ઓવરલે બની જાય છે, જેથી તમે ઇન્ટરેક્ટ કરવા માટે નવા રસ્તાઓ ઉમેરો તેમ તમારો કાર્યભાર રેખીય (linear) રહે છે.
ચોક્કસ લોગિંગ. ચેનલો રેકોર્ડ કરે છે કે ઇન્ટરેક્શન ક્યાં થયું હતું. મોડ્સ રેકોર્ડ કરે છે કે જવાબ કેવી રીતે પહોંચાડવામાં આવ્યો હતો. ડેસ્કટોપ ઇન્ટરેક્શન ડેસ્કટોપ ઇન્ટરેક્શન જ રહે છે, પછી ભલે વપરાશકર્તા તેને વાંચે અથવા સાંભળે. જ્યારે તમારી ટીમ બગ ટ્રેસ કરે છે અથવા એનાલિટિક્સની સમીક્ષા કરે છે, ત્યારે તેઓએ 'desktop-voice' અને 'desktop-text' ને અલગ પ્રોડક્ટ સપાટીઓ તરીકે ગણીને તેમની વચ્ચે મેળ બેસાડવાની જરૂર પડતી નથી. ચેનલ આઇડેન્ટિફાયર સ્વચ્છ રહે છે, અને મોડ ફ્લેગ મેટાડેટામાં તેની બાજુમાં વ્યવસ્થિત રીતે રહે છે. તમારા લોગ્સ સચોટ રહે છે, અને ડિબગિંગ સરળ રહે છે કારણ કે લોકેશન અને બિહેવિયર એકબીજા સાથે ગૂંચવાયેલા હોતા નથી.
સ્વચ્છ પ્રોજેક્ટ કોન્ટેક્સ્ટ. APC કોન્ટ્રાક્ટ વ્યાખ્યાયિત કરે છે. તેને તેનાથી કોઈ ફરક પડવો જોઈએ નહીં કે જવાબ બોલવામાં આવ્યો છે, ધીમેથી કહેવામાં આવ્યો છે, અથવા મોનોસ્પેસ ફોન્ટમાં રજૂ કરવામાં આવ્યો છે. તે રનટાઇમ બાબતો છે. APX ની અંદર વોઇસ ફોર્મેટિંગ રાખીને, અમે APC ની પોર્ટેબિલિટી જાળવી રાખીએ છીએ. તમે વોઇસ-વિશિષ્ટ ફોર્મેટિંગ ધારણાઓ અથવા સ્પીચ-ઓપ્ટિમાઇઝેશનના વધારાના જટિલ તત્વો વગર APC પ્રોજેક્ટ ડેફિનેશનને લઈ સંપૂર્ણપણે નવા રનટાઇમ એન્વાયરમેન્ટમાં મૂકી શકો છો. સીમા જળવાઈ રહે છે, અને પ્રોજેક્ટનો અર્થ સ્થિર રહે છે.
ડેસ્કટોપ પર પુરાવો
અમારો પોતાનો ડેસ્કટોપ પાથ રોજિંદા ઉપયોગમાં આનું પ્રદર્શન કરે છે. ડેસ્કટોપ એ સપાટી છે. જ્યારે વપરાશકર્તા સ્પીચ ઇનેબલ કરે છે, ત્યારે સિસ્ટમ તે જ ડેસ્કટોપ સપાટીને વોઇસ મોડમાં ચલાવે છે. કારણ કે વોઇસ મોડ લેયરમાં રહે છે, ડેસ્કટોપ ચેનલ તેનો સંપૂર્ણ કોન્ટેક્સ્ટ અને બિહેવિયર જાળવી રાખે છે. તે અલગ નિયમો સાથેની અલગ પ્રોડક્ટ બની જતી નથી. પ્રોમ્પ્ટ બિલ્ડર ફક્ત ફ્લેગને નોટિસ કરે છે અને જ્યારે જરૂરી હોય ત્યારે જ વોઇસ સૂચનાઓ ઉમેરે છે. જ્યારે વપરાશકર્તા ફરીથી ટેક્સ્ટ પર સ્વિચ કરે છે, ત્યારે તે સૂચનાઓ સંપૂર્ણપણે અદૃશ્ય થઈ જાય છે. પાયાનો પ્રોજેક્ટ કોન્ટેક્સ્ટ ક્યારેય બદલાયો નથી. ડેસ્કટોપ હંમેશા ડેસ્કટોપ જ હતું.
મુખ્ય સારાંશ
મુખ્ય વિચાર સરળ છે. APC સ્થિર પ્રોજેક્ટ અર્થનું વર્ણન કરે છે. APX રનટાઇમ એક્ઝિક્યુશનનું વર્ણન કરે છે. વોઇસ એ સપાટી પરનો એક મોડિફાયર છે, તેની બદલી નથી. તે રીતે કામ કરો, અને તમારા પ્રોમ્પ્ટ્સ નાના રહેશે. તમારા લોગ્સ સ્પષ્ટ રહેશે. તમારા
