મેં બ્રાઉઝરમાં એક CAD એડિટર બનાવ્યું, અને પછી તેને વાપરવા માટે એક LLM ને તાલીમ આપી

મેં મારા એપને પૂછ્યું: "ત્યાં કેટલા દરવાજા અને બારીઓ છે?"

AI એ સંખ્યા જણાવીને જવાબ આપ્યો. પછી તેણે આપમેળે કંઈક ઉમેર્યું:

"નોંધ: D3 માત્ર 300 mm પહોળો છે. આ કદાચ ખોટી રીતે ઓળખાયેલ દરવાજો હોઈ શકે છે. શું તમે ઈચ્છો છો કે હું તે તપાસું?"

તે સાચું હતું. મારા સિસ્ટમે ભૂમિતિના એક ભાગને 30 સેમીના દરવાજામાં ફેરવી દીધો હતો. કોઈ પણ માણસે તેના પર ધ્યાન આપ્યું નહોતું. મોડેલે ડેટા વાંચ્યો, શૂઝના બોક્સ કરતાં પણ સાંકડો દરવાજો જોયો અને તેને ફ્લેગ કર્યો.

તે ક્ષણ એક વિશાળ એન્જિનિયરિંગ પડકારનું પરિણામ હતું. મારે AutoCAD DWG ફાઇલોને પાર્સ કરવી પડી, હજારો રેન્ડમ લાઇન્સમાંથી બિલ્ડિંગ મોડેલ્સ ફરીથી બનાવવા પડ્યા, શૂન્યથી 2D એડિટર બનાવવું પડ્યું અને તેને Claude સાથે જોડવું પડ્યું.

મેં તે કેવી રીતે બનાવ્યું તે અહીં છે.

ડેટાની સમસ્યા DWG ફાઇલમાં દીવાલો હોતી નથી. તેમાં લાઇન્સ હોય છે. આ પ્રોજેક્ટમાં બધું જ રસપ્રદ કામ આ બે વાક્યો વચ્ચેના અંતરાલમાં થાય છે.

આ ફાઇલોને હેન્ડલ કરવા માટે મેં બે નિયમો અનુસર્યા:

  • પાર્સરને સબપ્રોસેસ તરીકે ચલાવો. જો 30 વર્ષ જૂનું પાર્સર ક્રેશ થાય, તો તે મારા સર્વરને બંધ ન કરે.
  • ફાઇલ પર ક્યારેય વિશ્વાસ ન કરો. DWG હેડર્સ ઘણીવાર યુનિટ્સ વિશે ખોટું બોલે છે. હું હેડરને અવગણું છું અને સાચું સ્કેલ શોધવા માટે વાસ્તવિક નંબરો તપાસું છું.

એક્સટ્રેક્શન પાઇપલાઇન મેં લાઇન્સના સમૂહને એક સ્ટ્રક્ચર્ડ મોડેલમાં ફેરવ્યો:

  • દીવાલો સેન્ટરલાઇન્સ છે.
  • દરવાજા અને બારીઓ હોસ્ટ દીવાલો સાથે જોડાઈ જાય છે.
  • રૂમ એ નામ અને એરિયા ધરાવતા પોલીગોન છે.

મેં ક્લાસિફિકેશન માટે એક સરળ યુક્તિનો ઉપયોગ કર્યો. મેં લેયરના નામ માટે સબસ્ટ્રિંગ મેચિંગનો ઉપયોગ કર્યો. જો લેયરનું નામ "WAND" અથવા "MAUER" હોય, તો સિસ્ટમ જાણે છે કે તે દીવાલ છે. જો લેયરનું કોઈ નામ ન હોય, તો સિસ્ટમ અનુમાન લગાવવા માટે ભૂમિતિનો ઉપયોગ કરે છે.

એડિટર મેં રૉ Canvas 2D કોન્ટેક્સ્ટનો ઉપયોગ કરીને એડિટર બનાવ્યું. તેને ઝડપી રાખવા માટે, મેં ત્રણ લેયરનો ઉપયોગ કર્યો:

  • લેયર 1: સ્ટેટિક ગ્રીડ અને મૂળ લાઇન્સ.
  • લેયર 2: મોડેલ (દીવાલો, રૂમ, દરવાજા).
  • લેયર 3: એક્ટિવ કર્સર અને પ્રિવ્યૂઝ.

આનાથી લગભગ 1,000 દીવાલો હોવા છતાં ફ્રેમ રેટ 60 FPS પર રહ્યો.

AI કોપાયલટ મારે માત્ર વાત કરતો ચેટબોટ નથી જોઈતો હતો. મારે કામ કરતો એજન્ટ જોઈતો હતો. મેં Claude ને મોડેલ વાંચવા અને એડિટ કરવા માટે તેર ટૂલ્સ આપ્યા.

તેને સુરક્ષિત રાખવા માટે, મેં ત્રણ નિયમો અનુસર્યા:

  • એક જ રાઈટ પાથ: AI એ જ વેલિડેટેડ કોડનો ઉપયોગ કરે છે જે મેન્યુઅલ UI વાપરે છે. જો UI તેને સેવ ન કરી શકે, તો AI પણ તેને સેવ કરી શકશે નહીં.
  • રિકવરેબલ એરર્સ: જો AI એવી જગ્યાએ દરવાજો મૂકવાનો પ્રયાસ કરે જ્યાં તે ફિટ ન થતો હોય, તો ટૂલ એરર રિટર્ન કરે છે. AI તે એરર વાંચે છે અને બીજી જગ્યાએ પ્રયાસ કરે છે.
  • અનડૂ સ્ટોરી: દરેક AI એક્શનને એક સિંગલ ટ્રાન્ઝેક્શનમાં સમાવવામાં આવે છે. જો AI ભૂલ કરે, તો Ctrl+Z દબાવવાથી બધું સુધરી જાય છે.

શીખવા જેવી બાબતો

  • ભૂમિતિના બગ્સ એવા આકારોમાં છુપાયેલા હોય છે જેનું તમે ટેસ્ટિંગ નથી કરતા. લંબચોરસ બિલ્ડિંગ્સ સરળ છે. L-આકારની બિલ્ડિંગ્સ બધું બગાડી નાખે છે.
  • તમારા ટૂલ્સને ફઝ (fuzz) કરો. LLM એક ફઝર છે. તેને કડક કોડ બાઉન્ડ્રીઝ સાથે હેન્ડલ કરો.
  • અઘરો ભાગ AI નથી. તે ડેટા ફાઉન્ડેશન છે. કારણ કે ભૂમિતિ મજબૂત હતી, તેથી AI ઇન્ટિગ્રેશન અઠવાડિયાને બદલે દિવસોમાં પૂરું થઈ ગયું.

સ્ત્રોત: https://dev.to/arif/i-built-a-cad-editor-in-the-browser-then-taught-an-llm-to-use-it-1l92