నేను బ్రౌజర్‌లోనే ఒక CAD ఎడిటర్‌ను నిర్మించాను, ఆపై దానిని ఉపయోగించడానికి ఒక LLMకి నేర్పించాను

నేను నా యాప్‌ని ఇలా అడిగాను: "అక్కడ ఎన్ని తలుపులు మరియు కిటికీలు ఉన్నాయి?"

AI ఆ సంఖ్యలను తెలియజేసింది. ఆపై అది అడగకుండానే ఒక విషయాన్ని జోడించింది:

"గమనిక: D3 కేవలం 300 mm వెడల్పు మాత్రమే ఉంది. ఇది బహుశా తప్పుగా గుర్తించబడిన తలుపు కావచ్చు. నేను దీనిని తనిఖీ చేయాలా?"

అది నిజమే. నా సిస్టమ్ ఒక జ్యామితీయ భాగాన్ని 30 సెం.మీ తలుపుగా మార్చేసింది. ఏ మనిషి కూడా దానిని గమనించలేదు. మోడల్ డేటాను చదివి, షూ బాక్స్ కంటే తక్కువ వెడల్పు ఉన్న తలుపును చూసి, దానిని గుర్తించింది.

ఆ క్షణం ఒక భారీ ఇంజనీరింగ్ సవాలుకు ప్రతిఫలంలా అనిపించింది. నేను AutoCAD DWG ఫైల్‌లను పార్స్ చేయాలి, వేల సంఖ్యలో ఉన్న యాదృచ్ఛిక లైన్ల నుండి బిల్డింగ్ మోడల్‌లను పునర్నిర్మించాలి, మొదటి నుండి ఒక 2D ఎడిటర్‌ను నిర్మించాలి మరియు దానిని Claudeతో అనుసంధానించాలి.

నేను దానిని ఎలా నిర్మించానో ఇక్కడ ఉంది.

డేటా సమస్య ఒక DWG ఫైల్‌లో గోడలు ఉండవు. అందులో లైన్లు మాత్రమే ఉంటాయి. ఈ ప్రాజెక్ట్‌లోని ఆసక్తికరమైన అంశాలన్నీ ఈ రెండు వాక్యాల మధ్య ఉన్న ఖాళీలోనే ఉన్నాయి.

ఈ ఫైల్‌లను హ్యాండిల్ చేయడానికి నేను రెండు నియమాలను పాటించాను:

  • పార్సర్‌ను సబ్‌ప్రాసెస్‌గా రన్ చేయాలి. ఒకవేళ ఆ 30 ఏళ్ల పాత పార్సర్ క్రాష్ అయినా, అది నా సర్వర్‌ను ఆపదు.
  • ఫైల్‌ను ఎప్పుడూ నమ్మవద్దు. DWG హెడర్‌లు తరచుగా యూనిట్ల గురించి తప్పుగా చెబుతుంటాయి. నేను హెడర్‌ను విస్మరించి, అసలైన స్కేల్‌ను కనుగొనడానికి వాస్తవ సంఖ్యలను చూస్తాను.

ఎక్స్‌ట్రాక్షన్ పైప్‌లైన్ నేను లైన్ల సమూహాన్ని ఒక నిర్మాణాత్మక మోడల్‌గా మార్చాను:

  • గోడలు సెంటర్‌లైన్‌లుగా ఉంటాయి.
  • తలుపులు మరియు కిటికీలు హోస్ట్ గోడలకు అనుసంధానించబడతాయి (snap).
  • గదులు పేర్లు మరియు వైశాల్యాలు కలిగిన పాలీగాన్‌లుగా ఉంటాయి.

వర్గీకరణ కోసం నేను ఒక చిన్న ట్రిక్‌ను ఉపయోగించాను. లేయర్ పేర్ల కోసం సబ్‌స్ట్రింగ్ మ్యాచింగ్‌ను ఉపయోగించాను. ఒక లేయర్ పేరు "WAND" లేదా "MAUER" అని ఉంటే, అది గోడ అని సిస్టమ్‌కు తెలుస్తుంది. ఒకవేళ లేయర్‌కు పేరు లేకపోతే, సిస్టమ్ జ్యామితిని ఉపయోగించి ఊహిస్తుంది.

ఎడిటర్ నేను ఒక రా కాన్వాస్ 2D కాంటెక్స్ట్‌ను ఉపయోగించి ఎడిటర్‌ను నిర్మించాను. వేగంగా ఉండటం కోసం, నేను మూడు లేయర్లను ఉపయోగించాను:

  • లేయర్ 1: స్టాటిక్ గ్రిడ్ మరియు అసలు లైన్లు.
  • లేయర్ 2: మోడల్ (గోడలు, గదులు, తలుపులు).
  • లేయర్ 3: యాక్టివ్ కర్సర్ మరియు ప్రివ్యూలు.

దీనివల్ల దాదాపు 1,000 గోడలు ఉన్నప్పటికీ ఫ్రేమ్ రేట్ 60 FPS వద్ద స్థిరంగా ఉంది.

AI కోపైలట్ నాకు కేవలం మాట్లాడే చాట్‌బాట్ వద్దు. పని చేసే ఏజెంట్ కావాలి. మోడల్‌ను చదవడానికి మరియు ఎడిట్ చేయడానికి నేను Claudeకి పదమూడు టూల్స్‌ను ఇచ్చాను.

దానిని సురక్షితంగా ఉంచడానికి, నేను మూడు నియమాలను పాటించాను:

  • ఒకే రైట్ పాత్: మాన్యువల్ UI ఉపయోగించే ఖచ్చితమైన వాలిడేటెడ్ కోడ్‌నే AI కూడా ఉపయోగిస్తుంది. UI దేనినైతే సేవ్ చేయలేదో, AI కూడా దానిని సేవ్ చేయలేదు.
  • రికవరేబుల్ ఎర్రర్స్: ఒకవేళ తలుపు సరిపోని చోట AI దానిని ఉంచడానికి ప్రయత్నిస్తే, ఆ టూల్ ఒక ఎర్రర్‌ను తిరిగి ఇస్తుంది. AI ఆ ఎర్రర్‌ను చదివి వేరే చోట ప్రయత్నిస్తుంది.
  • అన్‌డూ స్టోరీ: ప్రతి AI చర్య ఒకే ట్రాన్సాక్షన్‌గా పరిగణించబడుతుంది. AI ఏదైనా తప్పు చేస్తే, Ctrl+Z నొక్కితే చాలు, అంతా సరిదిద్దబడుతుంది.

పాఠాలు

  • మీరు పరీక్షించని ఆకారాలలో జ్యామితీయ బగ్‌లు దాగి ఉంటాయి. దీర్ఘచతురస్రాకార భవనాలు సులభం. L-ఆకారపు భవనాలు అన్నింటినీ తలకిందులు చేస్తాయి.
  • మీ టూల్స్‌ను ఫజ్ చేయండి. LLM అనేది ఒక ఫజ్జర్. దానిని కఠినమైన కోడ్ బౌండరీలతో ఎదుర్కోండి.
  • కష్టమైన భాగం AI కాదు. అది డేటా ఫౌండేషన్. జ్యామితి బలంగా ఉండటం వల్ల, AI ఇంటిగ్రేషన్ వారాల సమయం పట్టకుండా కేవలం కొన్ని రోజుల్లోనే పూర్తయింది.

మూలం: https://dev.to/arif/i-built-a-cad-editor-in-the-browser-then-taught-an-llm-to-use-it-1l92