Codex ઓર્કેસ્ટ્રેશન માટેનું ઓપન-સોર્સ વિશિષ્ટીકરણ: Symphony
એલેક્સ કોટલિઆર્સ્કી, વિક્ટર ઝુ અને ઝેક બ્રોક દ્વારા
છ મહિના પહેલાં એક આંતરિક પ્રોડક્ટિવિટી ટૂલ પર કામ કરતી વખતે અમારી ટીમે (તે સમયે) એક વિવાદાસ્પદ નિર્ણય લીધો: અને અમે અમારો રેપો માનવ દ્વારા લખાયેલા કોઈ કોડ વગર બનાવશું. અમારા પ્રોજેક્ટની રિપોઝિટરીમાંની દરેક લાઈન Codex દ્વારા જનરેટ કરવી પડતી હતી.
તે કાર્યસાધ્ય બનાવવા માટે અમે અમારા એન્જિનિયરિંગ વર્કફ્લોને મૂળથી ફરીથી ડિઝાઇન કર્યો છે. અમે એજન્ટ-મૈત્રીપૂર્ણ રિપોઝિટરી બનાવી, સ્વચાલિત પરીક્ષણો અને રક્ષણાત્મક ઉપાયોમાં ભારે રોકાણ કર્યું અને Codex ને સંપૂર્ણ ટીમમેટ તરીકે ગણ્યું છે. અમે તે યાત્રાને અમારી અગાઉની હાર્નેસ એન્જિનિયરિંગ પરની બ્લોગ પોસ્ટમાં દસ્તાવેજીકૃત કરેલી હતી.
અને તે કામ કર્યું હતુ પરંતુ ત્યારપછી અમને આગામી અવરોધનો સામનો કરવો પડ્યો છે: સંદર્ભ બદલવાનું.
આ નવી સમસ્યા ઉકેલવા માટે અમે Symphony નામની એક સિસ્ટમ બનાવી છે. Symphony(નવી વિન્ડોમાં ખૂલે છે) એક એજન્ટ ઓર્કેસ્ટ્રેટર છે, જે લીનીયર જેવા પ્રોજેક્ટ-મેનેજમેન્ટ બોર્ડને કોડિંગ એજન્ટ્સ માટે કંટ્રોલ પ્લેનમાં રૂપાંતરિત કરે છે. દરેક ખુલ્લા ટાસ્કને એક એજન્ટ સોંપવામાં આવે છે, એજન્ટ્સ સતત ચાલે છે અને માનવો પરિણામોની સમીક્ષા કરે છે.
આ પોસ્ટ સમજાવે છે કે અમે Symphony કેવી રીતે બનાવેલ છે —જેના પરિણામે કેટલીક ટીમોમાં મર્જ થયેલા પુલ રિક્વેસ્ટમાં 500% નો વધારો થયો—અને તેનો ઉપયોગ કરીને તમારા પોતાના ઇશ્યૂ ટ્રેકરને હંમેશા સક્રિય એજન્ટ ઓર્કેસ્ટ્રેટરમાં કેવી રીતે ફેરવી શકાય છે.
ઇન્ટરેક્ટિવ કોડિંગ એજન્ટ્સની ઉચ્ચતમ મર્યાદા ધરાવે છે
ઉપયોગમાં વધારે સરળ બનતા હોવા છતાં કોડિંગ એજન્ટ્સ—તેમને વેબ એપ્સ અથવા સીએલઆઈ દ્વારા ઍક્સેસ કરવામાં આવે—હજી પણ ઇન્ટરએક્ટિવ ટૂલ્સ છે.
OpenAI માં એજેન્ટિક કાર્યનો વ્યાપ વધતા અમને એક નવા પ્રકારનો બોજ અનુભવ કર્યો છે. દરેક એન્જિનિયર થોડાં Codex સત્રો ખોલતા, કાર્યો સોંપતા, આઉટપુટની સમીક્ષા કરતા, એજન્ટને દિશા આપતા અને આ પ્રક્રિયા પુનરાવર્તિત કરતા રહ્યાં. વ્યવહારમાં મોટાભાગના લોકો સંદર્ભ બદલવું મુશ્કેલ બનવા લાગે તે પહેલાં એક સમયે ત્રણથી પાંચ સત્રો આરામથી સંભાળી શકતા હતા. તેના પછી ઉત્પાદકતા ઘટી છે. અમે ભૂલી જતા કે કયું સેશન શું કરી રહ્યું હતું અને એજન્ટ્સને યોગ્ય માર્ગ પર લાવવા માટે ટર્મિનલ્સ વચ્ચે જતાં અને અધવચ્ચે અટકી ગયેલા લાંબા કાર્યોને ડિબગ કરતા.
એજન્ટો ઝડપી હતા પરંતુ અમારી પાસે સિસ્ટમ અવરોધ હતો: માનવીય ધ્યાન. અમે અસરકારક રીતે અત્યંત સક્ષમ જુનિયર એન્જિનિયર્સની એક ટીમ બનાવી હતી અને પછી અમારા માનવ એન્જિનિયર્સને તેમનું માઇક્રોમેનેજમેન્ટ કરવા સોંપેલ હતું. તે સ્કેલ થવાનું ન હતું.
દૃષ્ટિકોણમાં પરિવર્તન
અમને સમજાયું કે અમે ખોટી ચીજવસ્તુને ઑપ્ટિમાઇઝ કરી રહ્યા હતા. અમે અમારી સિસ્ટમને કોડિંગ સત્રો અને મર્જ કરેલા પીઆરએસની આસપાસ ગોઠવી રહ્યા હતા, જ્યારે પીઆરએસ અને સત્રો ખરેખર અંતિમ લક્ષ્યાંક સુધી પહોંચવા માટેના સાધન છે. સોફ્ટવેર વર્કફ્લોઝ મોટાભાગે ડિલિવરેબલ્સને કેન્દ્રમાં રાખીને ગોઠવાયેલા હોય છે: ઇશ્યુ, કાર્યો, ટિકિટ્સ, માઈલસ્ટોન્સ છે.
તેથી અમે પોતાની જાતને પૂછ્યું કે જો અમે એજન્ટોની સીધી દેખરેખ રાખવાનું બંધ કરીએ અને તેના બદલે તેમને અમારા ટાસ્ક ટ્રેકરમાંથી કામ લેવાની છૂટ આપીએ તો શું થશે.
એ વિચાર Symphony બન્યો, જે એક લખિત સ્પેક છે કે જે એજન્ટિક કાર્યને ઓર્કેસ્ટ્રેટ કરવા માટે સુપરવાઇઝર તરીકે કાર્ય કરે છે.
અમારા ઇશ્યૂ ટ્રેકરને એજન્ટ ઓર્કેસ્ટ્રેટર તરીકે ફેરવવું
Symphonyની શરૂઆત એક સરળ ખ્યાલથી થઈ છે: કોઈપણ ખુલ્લું કાર્ય એજન્ટ દ્વારા હાથ ધરવામાં આવીને પૂર્ણ થવું જોઈએ. બહુવિધ ટૅબ્સમાં Codex સેશન્સ મેનેજ કરવાની બદલે અમે અમારા ઇશ્યૂ ટ્રૅકરને નિયંત્રણ મંચ બનાવ્યું છે.
આ સેટઅપમાં, દરેક ખુલ્લો લીનીયર ઇશ્યૂ એક સમર્પિત એજન્ટ વર્કસ્પેસ સાથે નકશો બનાવે છે. Symphony સતત ટાસ્ક બોર્ડને મોનિટર કરે છે અને ખાતરી કરે છે કે દરેક સક્રિય ટાસ્ક પૂરી થાય ત્યાં સુધી લૂપમાં એક એજન્ટ કાર્યરત રહે છે. જો કોઈ એજન્ટ ક્રેશ થાય અથવા અટકી જાય તો Symphony તેને ફરીથી શરૂ કરે છે. જો નવું કામ આવે તો Symphony તેને હાથમાં લે છે અને કામ ગોઠવવાનું શરૂ કરે છે.
અમે ટિકિટની સ્થિતિના આધારે અમારું વર્કફ્લો બનાવ્યું, જેમાં ટાસ્ક મેનેજર લીનીરને સ્ટેટ મશીન તરીકે ઉપયોગમાં લેવામાં આવ્યો.
વ્યવહારમાં, Symphony કામને સત્રો અને પુલ રિક્વેસ્ટથી અલગ કરે છે. કેટલાક મુદ્દા અનેક રેપોઝમાં બહુવિધ PRs ઉત્પન્ન કરે છે; જ્યારે અન્ય ફક્ત તપાસ અથવા વિશ્લેષણ હોય છે, જે ક્યારેય કોડબેઝને સ્પર્શતા નથી.
એકવાર કામને આ રીતે એબ્સ્ટ્રેક્ટ કરવામાં આવે પછી ટિકિટ્સ કામના ઘણાં મોટા એકમોનું પ્રતિનિધિત્વ કરી શકે છે.
અમે જટિલ ફીચર્સ અને ઇન્ફ્રાસ્ટ્રક્ચર માઈગ્રેશન્સને ઓર્કેસ્ટ્રેટ કરવા નિયમિતપણે Symphony નો ઉપયોગ કરીએ છીએ. ઉદાહરણ તરીકે અમે એવો ટાસ્ક ફાઇલ કરી શકીએ જેમાં એજન્ટને કોડબેઝ, સ્લેક અથવા નોશનનું વિશ્લેષણ કરવા અને અમલીકરણ યોજના તૈયાર કરવા કહેવામાં આવે. એકવાર અમે યોજનાથી સંતુષ્ટ થઈએ પછી એજન્ટ કાર્યોનું ટ્રી જનરેટ કરે છે, કામને તબક્કામાં વિભાજિત કરીને અને કાર્યો વચ્ચેની નિર્ભરતા નિર્ધારિત કરીને.
એજન્ટો ફક્ત અવરોધિત ન હોય તેવા કાર્યો પર જ કામ શરૂ કરે છે જેથી આ ડીએજી (અમલના પગલાંની શ્રેણી) માટે અમલ સ્વાભાવિક રીતે અને શ્રેષ્ઠ રીતે સમાંતર રીતે આગળ વધે છે. ઉદાહરણ તરીકે અમે રિએક્ટ અપગ્રેડને વિટા પરના માઇગ્રેશન પર અવલંબિત હોવાથી અવરોધિત તરીકે ચિહ્નિત કર્યો. અપેક્ષા મુજબ, એજન્ટ્સે વિટા પર માઇગ્રેશન પૂર્ણ થયા પછી જ રિએક્ટ અપગ્રેડ કરવાનું શરૂ કર્યું.
એજન્ટ્સ પોતે પણ કામ બનાવી શકે છે. અમલવારી અથવા સમીક્ષા દરમિયાન તેઓ ઘણીવાર એવા સુધારા ધ્યાનમાં લે છે જે વર્તમાન કાર્યના વ્યાપની બહાર આવતા હોય છે: પ્રદર્શન સંબંધિત સમસ્યા, રિફેક્ટરિંગની તક અથવા વધુ સારી આર્કિટેક્ચર. જ્યારે એવું થાય છે, ત્યારે તેઓ ફક્ત એક નવો ઇશ્યૂ ફાઇલ કરે છે, જેનું મૂલ્યાંકન કરીને અમે પછી માટે શેડ્યૂલ કરી શકીએ—આ અનુગામી કાર્યોમાંથી ઘણાં એજન્ટ્સ દ્વારા પણ હાથ ધરવામાં આવે છે. જ્યારે અમે આ પ્રક્રિયાની દેખરેખ રાખીએ છીએ ત્યારે એજન્ટ્સ વ્યવસ્થિત રહે છે તથા કામ આગળ વધતું રાખે છે.
કામ કરવાની આ રીત અસ્પષ્ટ કામની શરૂઆત કરવા માટેની જ્ઞાનાત્મક મહેનતને નોંધપાત્ર રીતે ઘટાડી દે છે. જો એજન્ટ કંઈક ખોટું કરે છે તો એ પણ ઉપયોગી માહિતી ગણાય છે અને અમારા માટે તેનો ખર્ચ લગભગ શૂન્ય છે. અમે બહુ ઓછા ખર્ચે એજન્ટ માટે ગો પ્રોટોટાઇપ બનાવવા અને અન્વેષણ કરવા ટિકિટ નોંધાવી શકીએ છીએ અને અમને ન ગમતી કોઈપણ અજમાયશો સરળતાથી રદ્દ કરી છીએ.
કારણ કે ઓર્કેસ્ટ્રેટર ડેવબોક્સ પર ચાલે છે અને ક્યારેય ઊંઘતુ નથી અને અમે ગમે ત્યાંથી કાર્ય ઉમેરી શકીએ છીએ તથા ખાતરી રાખી શકીએ છીએ કે કોઈ એજન્ટ તેને લઈ લેશે. ઉદાહરણ તરીકે અમારી ટીમના એક એન્જિનિયરે નબળા Wi‑Fi પર આરામદાયક કેબિનમાંથી પોતાના ફોન પરની લિનિયર ઍપ વડે ત્રણ મહત્વના્ણ ફેરફારો કર્યા છે.
આ રીતે કામ કરવાથી અન્વેષણમાં પણ વધારો થાય છે
Symphony સાથે કામ કરવાની અસરો જોતાં સૌથી સ્પષ્ટ ફેરફાર આઉટપુટમાં જોવા મળ્યો છે. OpenAI ની કેટલીક ટીમોમાં અમે પહેલા ત્રણ અઠવાડિયામાં મુખ્ય બ્રાન્ચમાં મર્જ થયેલા પીઆરની સંખ્યામાં 500%નો વધારો જોયો છે. OpenAI ની બહાર લીનીયરના સ્થાપક કારી સારીનેનએ અમે Symphony રજૂ કર્યું ત્યારે બનાવવામાં આવેલા વર્કસ્પેસમાં આવેલા અચાનક વધારાનો(નવી વિન્ડોમાં ખૂલે છે) ઉલ્લેખ કર્યો છે . પરંતુ વધુ વ્યાપક બદલાવ એ છે કે ટીમો કામ વિશે કેવી રીતે વિચારે છે.
જ્યારે અમારા એન્જિનિયર્સ Codex સેશન્સની દેખરેખ રાખવામાં હવે સમય પસાર કરતાં નથી ત્યારે કોડમાં ફેરફારોનું અર્થશાસ્ત્ર સંપૂર્ણપણે બદલાઈ જાય છે. દરેક ફેરફારનો અંદાજીત ખર્ચ ઘટે છે કારણ કે હવે અમે અમલીકરણને આગળ વધારવામાં માનવીય પ્રયત્નો લગાવતા નથી.
તેનાથી અમારું વર્તન બદલાઈ ગયું છે. Symphonyમાં અનુમાનાત્મક કાર્યો શરૂ કરવું હવે ખૂબ સરળ બની ગયું છે. વિચાર અજમાવો, રિફેક્ટરનું અન્વેષણ કરો, પૂર્વધારણાનું પરીક્ષણ કરો તથા ફક્ત આશાસ્પદ પરિણામો રાખો.
તે કામ કોણ શરૂ કરી શકે છે તેનો વ્યાપકપણે વિસ્તારે છે. અમારા પ્રોડક્ટ મેનેજર અને ડિઝાઇનર હવે ફીચર રિક્વેસ્ટ્સ સીધા Symphony માં ફાઇલ કરી શકાય છે. તેમને રેપો ચેક આઉટ કરવાની અથવા Codex સેશન મેનેજ કરવાની કોઈ જરૂર નથી. તેઓ સુવિધાનું વર્ણન કરે છે તથા બદલામાં એક રિવ્યૂ પૅકેટ મેળવે છે કે જેમાં વાસ્તવિક પ્રોડક્ટની અંદર કાર્યરત સુવિધાનો વીડિયો વોકથ્રૂ શામેલ હોય છે.
Symphony મોટા મોનોરેપોઝમાં પણ ચમકે છે (જેમ કે OpenAI માં છે) કે જ્યાં પીઆરને મર્જ કરવાની અંતિમ કડી ધીમી તથા નાજુક હોય છે. સિસ્ટમ સીઆઈ પર નજર રાખે છે, જરૂરી હોય ત્યારે રીબેઝ કરે છે, સંઘર્ષો ઉકેલે છે, અસ્થિર ચેક્સ ફરીથી ચલાવે છે અને સામાન્ય રીતે ફેરફારોને પાઇપલાઇનમાં માર્ગદર્શન આપે છે. જ્યાં સુધી ટિકિટ Merging સુધી પહોંચે છે ત્યાં સુધી અમને વિશ્વાસ હોય છે કે ફેરફાર માનવીય દેખરેખ વગર મુખ્ય બ્રાન્ચમાં સામેલ થઈ જશે.
Symphony લાગુ કર્યા પછી અમે વધુ કામ એજન્ટ્સને સોંપીએ છીએ અને વધુ મુશ્કેલ અને વધુ અન્વેષણાત્મક કાર્યો પર ધ્યાન કેન્દ્રિત કરીએ છીએ.
પ્રગતિની સાથે નવી અને અલગ પ્રકારની સમસ્યા પણ આવે છે
આ સ્તરે ઓપરેટ કરવાથી કેટલાક ફાયદા અને ગેરફાયદા થાય છે. જ્યારે અમે એજન્ટોને ઇન્ટરેક્ટિવ રીતે દિશા આપવાથી તેમને ટિકિટ સ્તરે કામ સોંપવા તરફ આગળ વધ્યા ત્યારે અમે કામની મધ્યમાં તેમને સતત માર્ગદર્શન આપવાની અને જરૂર પડે ત્યારે દિશા સુધારવાની ક્ષમતા ગુમાવી દીધી. ક્યારેક એજન્ટે એવું કંઈક સર્જન કર્યું જે સંપૂર્ણપણે નિશાન ચૂકી ગયું છે. તે ઉપયોગી રહ્યું—તે નિષ્ફળતાએ સિસ્ટમમાં રહેલી ખામીઓ ઉજાગર કરી અને તેને વધુ મજબૂત બનાવવામાં અમને મદદ કરી છે.
પરિણામને મેન્યુઅલી પેચ કરવાને બદલે અમે સુરક્ષા નિયંત્રણો અને કુશળતા ઉમેર્યાં જેથી એજન્ટો આગામી વખતે સફળ થઈ શકે છે. સમય જતાં તેના કારણે અમે અમારા હાર્નેસમાં નવી ક્ષમતા ઉમેરી, જેમ કે એન્ડ-ટુ-એન્ડ ટેસ્ટ્સ ચલાવવી, Chrome DevTools દ્વારા એપને નિયંત્રિત કરવી અને QA સ્મોક ટેસ્ટ્સનું સંચાલન કરવું. અમે અમારા દસ્તાવેજીકરણમાં નોંધપાત્ર સુધારો કર્યો અને સારું કેવું હોવું જોઈએ તે સ્પષ્ટ કર્યું છે.
દરેક કાર્ય Symphony ની કાર્યશૈલીને અનુરૂપ નથી. કેટલીક સમસ્યાઓ માટે હજુ પણ એન્જિનિયરોને ઇન્ટરેક્ટિવ Codex સેશન્સ સાથે સીધું કામ કરવાની જરૂર પડે છે અને ખાસ કરી અસ્પષ્ટ સમસ્યા અથવા એવું કાર્ય, જેમાં મજબૂત નિર્ણયશક્તિ અને નિષ્ણાતતા જરૂરી હોય છે. વ્યવહારમાં આ સામાન્ય રીતે અમારા એન્જિનિયરો માટે સમય વિતાવવાના સૌથી રસપ્રદ તથા આનંદદાયક કાર્યો હોય છે.
ફરક એ છે કે Symphony રૂટિન બાબતમાં અમલીકરણનું મોટાભાગનું કામ સંભાળી શકે છે. તે એન્જિનિયરોને સતત નાના કાર્યો વચ્ચે સંદર્ભ પરિવર્તનને બદલે એક સમયે એક જ મુશ્કેલ સમસ્યા પર ધ્યાન કેન્દ્રિત કરવા દે છે.
અમે એ પણ શીખ્યા કે એજન્ટ્સને સ્ટેટ મશીનમાં કઠોર નોડ તરીકે ગણવું સારી રીતે કાર્ય કરતું નથી. મોડલ વધુ સ્માર્ટ બનતાં જાય છે અને આપણે તેમને જે બોક્સમાં બેસાડવાનો પ્રયાસ કરીએ છીએ, તેનાથી પણ મોટી સમસ્યાઓ ઉકેલી શકે છે. અમારા એજેન્ટિક કાર્યના પ્રારંભિક વર્ઝનમાં Codex ને ફક્ત કાર્ય અમલમાં મૂકવા માટે કહેવામાં આવતું હતું. તે અભિગમ ખૂબ મર્યાદિત સાબિત થયો છે. Codex અનેક પીઆર બનાવવા તેમજ સમીક્ષા પ્રતિભાવ વાંચવા અને તેને સંબોધવા માટે સંપૂર્ણ રીતે સક્ષમ છે. તેથી અમે તેને ટૂલ્સ આપ્યા—gh સીએલઆઈ, સીઆઈ લૉગ્સ વાંચવાની કુશળતાઓ, વગેરે—અને હવે અમે Codex ને વધુ કામ કરવા કહી શકીએ છીએ, જેમ કે જૂના પીઆર બંધ કરવા અથવા પૂરા થયેલા સામે છોડી દેવાયેલા કામના રિપોર્ટ્સ મેળવવા છે. આ પ્રકારનાં કાર્યો પ્રારંભિક ફિચર અમલીકરણના દાયરાથી ઘણાં બહાર હતાં.
તેથી અમે આખરે એજન્ટ્સને કડક ટ્રાન્ઝિશન્સ આપવાને બદલે ઉદ્દેશો આપવાની દિશામાં આગળ વધ્યા કે જેમ સારો મેનેજર પોતાની ટીમના સીધા રિપોર્ટને લક્ષ્ય સોંપે છે. મોડલ્સની શક્તિ તેમની તર્ક કરવાની ક્ષમતામાં છે એટલે તેમને સાધનો અને સંદર્ભ આપો અને તેમને પોતાનું શ્રેષ્ઠ કામ કરવા દો.
Symphony બનાવવામાં Symphony નો ઉપયોગ
જ્યારે તમે Symphony રિપોઝિટરી(નવી વિન્ડોમાં ખૂલે છે) ખોલો છો ત્યારે તમે સૌપ્રથમ નોંધશો કે Symphony ટેકનિકલ રીતે ફક્ત SPEC.md ફાઇલ છે—સમસ્યા અને અભિપ્રેત ઉકેલની વ્યાખ્યા છે. જટિલ દેખરેખ સિસ્ટમ બનાવવાને બદલે અમે સમસ્યા અને અભિપ્રેત ઉકેલો વ્યાખ્યાયિત કર્યા છે અને એજન્ટ્સને ઉચ્ચ-સ્તરનું માર્ગદર્શન આપ્યું છે.
સંદર્ભ અમલીકરણ Elixir માં લખાયેલું છે—કારણ કે જ્યારે કોડ અસરકારક રીતે ફ્રી હોય ત્યારે તમે છેવટે ભાષાને તેમની શક્તિ માટે પસંદ કરી શકો છો જેમ કે Elixir ની કન્કરન્સી—પરંતુ મૂળ વિચારને એક સરળ માર્કડાઉન દસ્તાવેજમાં વ્યક્ત કરી શકાય છે. અમે તમને તમાર મનપસંદ કોડિંગ એજન્ટને સ્પેક તરફ નિર્દેશિત કરવા અને તેને તેની પોતાની આવૃત્તિ અમલમાં મુકાવવા પ્રોત્સાહિત કરી રહ્યાં છીએ.
Symphony ની નું પ્રથમ વર્ઝન ફક્ત tmux માં ચાલી રહેલું Codex સેશન હતું જે લીનીયરને પોલ કરી રહ્યું હતું અને નવા કાર્યો માટે સબ-એજન્ટ્સ શરૂ કરી રહ્યું હતું. તે કામ તો કરતું હતું પરંતુ ખાસ વિશ્વસનીય ન હતું. બીજી આવૃત્તિ અમારી મુખ્ય પ્રોજેક્ટ રિપોઝિટરીની અંદર સ્થિત હતી કે જે એજન્ટ્સને ધ્યાનમાં રાખી નિર્માણ કરવામાં આવી હતી. અમે આ રેપોમાં ઉચ્ચ ગુણવત્તાનું કામ કરવા માટે એજન્ટ્સને જરૂરી કુશળતા તથા સંદર્ભ આપવા એજન્ટ હાર્નેસ પહેલેથી જ બનાવી દીધું હતું, તેથી Symphony ફક્ત આ તમામ એકસાથે જોડે છે.
એકવાર મૂળભૂત કાર્યક્ષમતા ઉપલબ્ધ થઈ, અમે Symphony બનાવવા માટે Symphony નો ઉપયોગ કર્યો હતો.
જ્યારે અમે આંતરિક રીતે કાર્યોનું સંચાલન કરતી અને તેનું પ્રૂફ-ઓફ-વર્ક વીડિયો જોડતી સિસ્ટમનો ડેમો કર્યો ત્યારે પ્રતિભાવ ખૂબ જ સકારાત્મક રહ્યો છે : અમારી Symphony પ્રોજેક્ટ ચૅનલ વિકસતી ગઈ છે અને સમગ્ર સંસ્થાની ટીમોએ તેનો સ્વાભાવિક રીતે ઉપયોગ શરૂ કર્યો. OpenAI ખાતે બાહ્ય રીતે લોન્ચ કરવા માટે આંતરિક પ્રોડક્ટ-માર્કેટ ફિટ એક પૂર્વશરત રહેલ છે. OpenAI ખાતે અમે જોયેલ ઉપયોગના આધાર પર એ સ્પષ્ટ થયું કે અમારે Symphony ને કંપનીની સીમાની બહાર શેર કરવી જોઈએ.
એટલે અમે આ વિચારને એક સ્વતંત્ર SPEC.md માં અલગ કર્યો અને Codex ને તેને અમલમાં મૂકવા માટે કહ્યું. સંદર્ભ અમલીકરણ માટે અમે Elixir પસંદ કર્યું, જે એક તુલનાત્મક રીતે વિશિષ્ટ ભાષા છે અને સમકાલીન પ્રક્રિયાને ઓર્કેસ્ટ્રેટ કરવા અને તેમની દેખરેખ રાખવા માટે ઉત્તમ પ્રિમિટિવ્સ ધરાવે છે. Codex એ વન-શોટમાં Elixir અમલીકરણ બનાવ્યું અને ત્યારથી અમે સ્પેક અને અમલીકરણ બંને પર સતત ઇટરેટ કરતા રહ્યા છીએ. સ્પેકને વધારે સુધારવા માટે અમે Codex ને તેને ટાઈપસ્ક્રીપ્ટ , ગો, રસ્ટ, જાવા, પાઈથોન જેવી અન્ય ભાષામાં અમલમાં મૂકવા કહ્યું છે અને પરિણામોનો ઉપયોગ કરીને અસ્પષ્ટતા ઓળખી સિસ્ટમને સરળ બનાવી છે. તે દરેક ભાષામાં સફળ થયું છે.
Symphony બનાવવાની પ્રક્રિયા દરમિયાન અમે ઘણી બધી અનુષંગિક જટિલતા દૂર કરી છે જેમ કે ચોક્કસ રિપોઝિટરી અથવા લીનીયર એમસીપી પરની નિર્ભરતા. Symphony હવે અમારી આંતરિક રિપોઝિટરીઓ અથવા વર્કફ્લો પર નિર્ભર નથી. મૂળભૂત અભિગમ સરળ બની ગયો છે:
દરેક ઓપન ટાસ્ક માટે, સુનિશ્ચિત કરો કે એજન્ટ તેના પોતાના વર્કસ્પેસમાં ચાલી રહ્યો છે.
ચાલુ કામમાં મદદ કરવા ઉપરાંત વિકાસ વર્કફ્લો હવે એજન્ટ્સ માટે જાણીતી અને અનુસરવાની પ્રક્રિયા બની રહી છે. વિકાસ વર્કફ્લો—કોઈ ઈશ્યુ પર કામ કરવા, રેપો ચેક આઉટ કરવું તેને પ્રગતિમાં મૂકવું જેથી PM ને ખબર પડે કે તેના પર કામ થઈ રહ્યું છે, પીઆર ઉમેરવો, તેને સમીક્ષા સ્થિતિમાં ખસેડવું, વીડિયો જોડવા વગેરે—હવે એક સરળ WORKFLOW.md ફાઇલમાં કૅપ્ચર કરવામાં આવ્યો છે. આ તમામ એવી પ્રક્રિયા છે જેનું માનવોએ પાલન કર્યું હતું, પરંતુ તેનું ક્યારેય દસ્તાવેજીકરણ કરવામાં આવ્યું ન હતું. આ અંતર્નિહિત પગલાંના સમૂહ પર નિર્ભર રહેવાને બદલે હવે અમે તેને દસ્તાવેજીકૃત કરીએ છીએ અને Symphony એજન્ટ્સને તેનું પાલન કરાવે છે. આ અમને એવા એજન્ટ બનાવવાની મંજૂરી આપે છે જે અમારી સાથે મળીને કામ કરે છે. જો અમે નક્કી કરીએ કે એજન્ટ્સે સંપૂર્ણ થયેલા કામ સાથે સ્વ-ચિંતન પણ જોડવું જોઈએ તો અમે તેને WORKFLOW.md માં ઉમેરશું અને Symphony એજન્ટ્સને તે પગલા સુધી દોરી જશે.
અમને એપ સર્વર મોડ(નવી વિન્ડોમાં ખૂલે છે)માં Codexનો ઉપયોગ કરવાની તક પણ મળી છે, જે Codex માટેનો બિલ્ટ-ઇન હેડલેસ મોડ છે. આ મોડે અમને Codex ચલાવવાની અને થ્રેડ શરૂ કરવા અથવા ટર્ન્સ પર પ્રતિસાદ આપવા જેવી બાબતો માટે સારી રીતે દસ્તાવેજિત જેસન-આરપીસી એપીઆઈ દ્વારા તેની સાથે પ્રોગ્રામેટિક રીતે વાત કરવાની મંજૂરી આપી છે. સીએલઆઈ અથવા લાઇવ tmux સત્રો દ્વારા Codex સાથે ઇન્ટરેક્ટ કરવાનો પ્રયાસ કરતાં આ વધારે અનુકૂળ અને સ્કેલેબલ છે.
Codex એપ સર્વર અમારા ઉપયોગના ઉદાહરણ માટે એકદમ યોગ્ય હતું: તેમાં જોડાવા માટે નોબ્સ અને હુક્સ ઉપલબ્ધ હોવા સાથે અમે Codex દ્વારા પ્રદાન કરવામાં આવતા હાર્નેસનો લાભ લઈ છીએ. ઉદાહરણ તરીક, સબએજન્ટ્સ સમક્ષ લીનીયર ઍક્સેસ ટોકનને ઉજાગર કરવાનું ટાળવા માટે, અમે ડાયનેમિક ટૂલ કૉલ્સ(નવી વિન્ડોમાં ખૂલે છે) નો ઉપયોગ કરીને કાચા linear_graphql ફંક્શનને એક્સપોઝ કરીએ છીએ, જે એમસીપી પર આધાર રાખ્યા વિના અથવા કન્ટેનર્સ સમક્ષ ઍક્સેસ ટોકનને ઉજાગર કર્યા વગર લીનીર પર મનસ્વી વિનંતીઓ એક્ઝિક્યુટ કરે છે.
આગળ શું
Symphony એક ઇરાદાપૂર્વક ન્યૂનતમ ઓર્કેસ્ટ્રેશન લેયર છે. લીનીયર જેવા વિવિધ વર્કફ્લો ટૂલ્સ સાથે જોડવામાં આવે ત્યારે Codex App Server ની શક્તિ દર્શાવવા માટે અમે તેને ઓપન સોર્સ કરી રહ્યા છીએ. આથી, અમે Symphony ને સ્ટેન્ડઅલોન પ્રોડક્ટ તરીકે જાળવી રાખવાની યોજના ધરાવતા નથી. તેને સંદર્ભ અમલીકરણ તરીકે માનો છો. જે રીતે ઘણા ડેવલપર્સે તેમની રિપોઝિટરીઓનું સ્કેફોલ્ડિંગ કરવા માટે તેમના કોડિંગ એજન્ટ્સને હાર્નેસ એન્જીનિયરિંગ પોસ્ટ તરફ નિર્દેશિત કર્યા હતા તેવી જ રીતે અમને આશા છે કે તમે તમારા પર્યાવરણોને અનુરૂપ તમારી પોતાની આવૃત્તિઓ બનાવવા માટે તમારા મનપસંદ કોડિંગ એજન્ટને Symphony સ્પેક(નવી વિન્ડોમાં ખૂલે છે) અને રિપોઝિટરી(નવી વિન્ડોમાં ખૂલે છે) તરફ નિર્દેશિત કરશો.
શક્તિ Codex અને તેના એપ સર્વરમાંથી આવે છે. Symphony એ Codex ને લીનિયર સાથે જોડવાની એક રીત હતી—એ બે વસ્તુઓ જેનો અમે પહેલેથી જ ઉપયોગ કરતા હતા—કાર્ય વ્યવસ્થાપનની સમસ્યા ઉકેલવા માટે. જેમ જેમ કોડિંગ એજન્ટ્સ વધારે કરવામાં અને સૂચનાનું પાલન કરવામાં વધુ સારા બનતા જાય છે, તેમ અમને લાગે છે કે બીજી કંપનીમાં પણ અડચણ કોડ લખવાથી ખસીને એજન્ટિક કામનું સંચાલન કરવા તરફ જશે . રોમાંચક બાબત એ છે કે આ કોડિંગ એજન્ટ સિસ્ટમ્સ સાથે પ્રયોગ કરવા માટે અવરોધ હવે આશ્ચર્યજનક રીતે ઓછો છે. તમે Codex સાથે સરળતાથી વસ્તુ બનાવી શકો છો.
સમુદાયના વિશેષ ઉલ્લેખો
રિલીઝ પછીના અઠવાડિયામાં એન્જીનિયરીંગ સમુદાય Symphony નો ઉપયોગ કરી રહ્યો છે તે જોઈને અમને ખૂબ આનંદ થાય છે અને 23.04.2023 સુધીમાં 15,000 થી વધુ ગિટહબ સ્ટાર્સ(નવી વિન્ડોમાં ખૂલે છે) પ્રાપ્ત થયા છે.