ਮੈਂ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਇੱਕ CAD Editor ਬਣਾਇਆ, ਫਿਰ ਇੱਕ LLM ਨੂੰ ਇਸਨੂੰ ਵਰਤਣਾ ਸਿਖਾਇਆ
ਮੈਂ ਆਪਣੇ ਐਪ ਨੂੰ ਪੁੱਛਿਆ: "ਉੱਥੇ ਕਿੰਨੇ ਦਰਵਾਜ਼ੇ ਅਤੇ ਖਿੜਕੀਆਂ ਹਨ?"
AI ਨੇ ਗਿਣਤੀ ਦੱਸੀ। ਫਿਰ ਉਸਨੇ ਬਿਨਾਂ ਪੁੱਛੇ ਕੁਝ ਹੋਰ ਜੋੜ ਦਿੱਤਾ:
"ਨੋਟ: D3 ਸਿਰਫ਼ 300 mm ਚੌੜਾ ਹੈ। ਇਹ ਸ਼ਾਇਦ ਗਲਤ ਤਰੀਕੇ ਨਾਲ ਪਛਾਣਿਆ ਗਿਆ ਦਰਵਾਜ਼ਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਮੈਂ ਇਸਦੀ ਜਾਂਚ ਕਰਾਂ?"
ਇਹ ਸਹੀ ਸੀ। ਮੇਰੇ ਸਿਸਟਮ ਨੇ ਜਿਓਮੈਟਰੀ ਦੇ ਇੱਕ ਹਿੱਸੇ ਨੂੰ 30 cm ਦੇ ਦਰਵਾਜ਼ੇ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਸੀ। ਕਿਸੇ ਇਨਸਾਨ ਨੇ ਇਸ ਵੱਲ ਧਿਆਨ ਨਹੀਂ ਦਿੱਤਾ ਸੀ। ਮਾਡਲ ਨੇ ਡੇਟਾ ਪੜ੍ਹਿਆ, ਇੱਕ ਜੁੱਤੀ ਦੇ ਡੱਬੇ ਨਾਲੋਂ ਵੀ ਤੰਗ ਦਰਵਾਜ਼ਾ ਦੇਖਿਆ, ਅਤੇ ਇਸ ਨੂੰ ਫਲੈਗ (flag) ਕਰ ਦਿੱਤਾ।
ਉਹ ਪਲ ਇੱਕ ਵੱਡੀ ਇੰਜੀਨੀਅਰਿੰਗ ਚੁਣੌਤੀ ਦਾ ਫਲ ਸੀ। ਮੈਨੂੰ AutoCAD DWG ਫਾਈਲਾਂ ਨੂੰ ਪਾਰਸ (parse) ਕਰਨਾ ਪਿਆ, ਹਜ਼ਾਰਾਂ ਰੈਂਡਮ ਲਾਈਨਾਂ ਤੋਂ ਇਮਾਰਤ ਦੇ ਮਾਡਲ ਨੂੰ ਮੁੜ ਉਸਾਰਨਾ ਪਿਆ, ਸ਼ੁਰੂ ਤੋਂ ਇੱਕ 2D editor ਬਣਾਉਣਾ ਪਿਆ, ਅਤੇ ਇਸਨੂੰ Claude ਨਾਲ ਜੋੜਨਾ ਪਿਆ।
ਇੱਥੇ ਦੱਸਿਆ ਗਿਆ ਹੈ ਕਿ ਮੈਂ ਇਸਨੂੰ ਕਿਵੇਂ ਬਣਾਇਆ।
ਡੇਟਾ ਦੀ ਸਮੱਸਿਆ
ਇੱਕ DWG ਫਾਈਲ ਵਿੱਚ ਕੰਧਾਂ ਨਹੀਂ ਹੁੰਦੀਆਂ। ਇਸ ਵਿੱਚ ਲਾਈਨਾਂ ਹੁੰਦੀਆਂ ਹਨ। ਇਸ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਸਭ ਕੁਝ ਇਨ੍ਹਾਂ ਦੋਵਾਂ ਵਾਕਾਂ ਦੇ ਵਿਚਕਾਰਲੇ ਖਾਲੀ ਸਥਾਨ ਵਿੱਚ ਵਾਪਰਦਾ ਹੈ।
ਮੈਂ ਇਹਨਾਂ ਫਾਈਲਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਦੋ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕੀਤੀ:
- ਪਾਰਸਰ (parser) ਨੂੰ ਇੱਕ subprocess ਵਜੋਂ ਚਲਾਓ। ਜੇਕਰ 30 ਸਾਲ ਪੁਰਾਣਾ ਪਾਰਸਰ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਮੇਰੇ ਸਰਵਰ ਨੂੰ ਬੰਦ ਨਹੀਂ ਕਰਦਾ।
- ਫਾਈਲ 'ਤੇ ਕਦੇ ਭਰੋਸਾ ਨਾ ਕਰੋ। DWG headers ਅਕਸਰ ਯੂਨਿਟਾਂ ਬਾਰੇ ਗਲਤ ਜਾਣਕਾਰੀ ਦਿੰਦੇ ਹਨ। ਮੈਂ header ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦਾ ਹਾਂ ਅਤੇ ਅਸਲ ਸਕੇਲ ਲੱਭਣ ਲਈ ਅਸਲ ਅੰਕਾਂ ਨੂੰ ਦੇਖਦਾ ਹਾਂ।
ਐਕਸਟਰੈਕਸ਼ਨ ਪਾਈਪਲਾਈਨ
ਮੈਂ ਲਾਈਨਾਂ ਦੇ ਸਮੂਹ ਨੂੰ ਇੱਕ ਸੰਰਚਿਤ (structured) ਮਾਡਲ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ:
- ਕੰਧਾਂ ਸੈਂਟਰਲਾਈਨਾਂ (centerlines) ਹਨ।
- ਦਰਵਾਜ਼ੇ ਅਤੇ ਖਿੜਕੀਆਂ ਮੇਨ ਕੰਧਾਂ ਨਾਲ ਜੁੜ ਜਾਂਦੇ ਹਨ।
- ਕਮਰੇ ਨਾਮ ਅਤੇ ਖੇਤਰਫਲ (areas) ਵਾਲੇ ਪੌਲੀਗਨ (polygons) ਹਨ।
ਮੈਂ ਵਰਗੀਕਰਨ (classification) ਲਈ ਇੱਕ ਸਧਾਰਨ ਤਰੀਕਾ ਵਰਤਿਆ। ਮੈਂ ਲੇਅਰ (layer) ਦੇ ਨਾਮਾਂ ਲਈ substring matching ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਜੇਕਰ ਕੋਈ ਲੇਅਰ "WAND" ਜਾਂ "MAUER" ਕਹਿੰਦੀ ਹੈ, ਤਾਂ ਸਿਸਟਮ ਜਾਣਦਾ ਹੈ ਕਿ ਇਹ ਇੱਕ ਕੰਧ ਹੈ। ਜੇਕਰ ਕਿਸੇ ਲੇਅਰ ਦਾ ਕੋਈ ਨਾਮ ਨਹੀਂ ਹੈ, ਤਾਂ ਸਿਸਟਮ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ ਲਈ ਜਿਓਮੈਟਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
ਐਡੀਟਰ
ਮੈਂ ਇੱਕ raw Canvas 2D context ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਐਡੀਟਰ ਬਣਾਇਆ। ਇਸਨੂੰ ਤੇਜ਼ ਰੱਖਣ ਲਈ, ਮੈਂ ਤਿੰਨ ਲੇਅਰਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ:
- ਲੇਅਰ 1: ਸਟੈਟਿਕ ਗਰਿੱਡ ਅਤੇ ਅਸਲ ਲਾਈਨਾਂ।
- ਲੇਅਰ 2: ਮਾਡਲ (ਕੰਧਾਂ, ਕਮਰੇ, ਦਰਵਾਜ਼ੇ)।
- ਲੇਅਰ 3: ਐਕਟਿਵ ਕਰਸਰ ਅਤੇ ਪ੍ਰੀਵਿਊ।
ਇਸ ਨਾਲ ਲਗਭਗ 1,000 ਕੰਧਾਂ ਦੇ ਨਾਲ ਵੀ ਫਰੇਮ ਰੇਟ 60 FPS 'ਤੇ ਰਿਹਾ।
AI ਕੋਪਾਇਲਟ
ਮੈਂ ਅਜਿਹਾ ਚੈਟਬੋਟ ਨਹੀਂ ਚਾਹੁੰਦਾ ਸੀ ਜੋ ਸਿਰਫ਼ ਗੱਲਾਂ ਕਰੇ। ਮੈਂ ਇੱਕ ਅਜਿਹਾ ਏਜੰਟ ਚਾਹੁੰਦਾ ਸੀ ਜੋ ਕੰਮ ਕਰੇ। ਮੈਂ Claude ਨੂੰ ਮਾਡਲ ਨੂੰ ਪੜ੍ਹਨ ਅਤੇ ਐਡਿਟ ਕਰਨ ਲਈ ਤੇਰਾਂ ਟੂਲ ਦਿੱਤੇ।
ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ, ਮੈਂ ਤਿੰਨ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕੀਤੀ:
- ਇੱਕ ਰਾਈਟ ਪਾਥ (write path): AI ਉਹੀ ਵੈਲੀਡੇਟਡ ਕੋਡ ਵਰਤਦਾ ਹੈ ਜੋ ਮੈਨੂਅਲ UI ਵਰਤਦਾ ਹੈ। ਜੇਕਰ UI ਇਸਨੂੰ ਸੇਵ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਤਾਂ AI ਵੀ ਇਸਨੂੰ ਸੇਵ ਨਹੀਂ ਕਰ ਸਕਦਾ।
- ਰਿਕਵਰੇਬਲ ਗਲਤੀਆਂ (Recoverable errors): ਜੇਕਰ AI ਦਰਵਾਜ਼ੇ ਨੂੰ ਅਜਿਹੀ ਜਗ੍ਹਾ ਰੱਖਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ ਜਿੱਥੇ ਉਹ ਫਿੱਟ ਨਹੀਂ ਹੁੰਦਾ, ਤਾਂ ਟੂਲ ਇੱਕ ਗਲਤੀ (error) ਦਿੰਦਾ ਹੈ। AI ਉਸ ਗਲਤੀ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ ਅਤੇ ਕਿਸੇ ਹੋਰ ਜਗ੍ਹਾ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ।
- ਇੱਕ ਅਨਡੂ (undo) ਕਹਾਣੀ: ਹਰ AI ਐਕਸ਼ਨ ਨੂੰ ਇੱਕ ਸਿੰਗਲ ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਵਿੱਚ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ AI ਕੋਈ ਗਲਤੀ ਕਰਦਾ ਹੈ, ਤਾਂ Ctrl+Z ਦਬਾਉਣ ਨਾਲ ਸਭ ਕੁਝ ਠੀਕ ਹੋ ਜਾਂਦਾ ਹੈ।
ਸਬਕ
- ਜਿਓਮੈਟਰੀ ਬੱਗ (bugs) ਉਨ੍ਹਾਂ ਆਕਾਰਾਂ ਵਿੱਚ ਲੁਕੇ ਹੁੰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ਤੁਸੀਂ ਟੈਸਟ ਨਹੀਂ ਕਰਦੇ। ਆਇਤਾਕਾਰ ਇਮਾਰਤਾਂ ਆਸਾਨ ਹੁੰਦੀਆਂ ਹਨ। L-ਆਕਾਰ ਦੀਆਂ ਇਮਾਰਤਾਂ ਸਭ ਕੁਝ ਵਿਗਾੜ ਦਿੰਦੀਆਂ ਹਨ।
- ਆਪਣੇ ਟੂਲਸ ਨੂੰ ਫਜ਼ (fuzz) ਕਰੋ। LLM ਇੱਕ ਫਜ਼ਰ (fuzzer) ਹੈ। ਇਸਦਾ ਸਾਹਮਣਾ ਸਖ਼ਤ ਕੋਡ ਸੀਮਾਵਾਂ ਨਾਲ ਕਰੋ।
- ਮੁਸ਼ਕਲ ਹਿੱਸਾ AI ਨਹੀਂ ਹੈ। ਇਹ ਡੇਟਾ ਫਾਊਂਡੇਸ਼ਨ (data foundation) ਹੈ। ਕਿਉਂਕਿ ਜਿਓਮੈਟਰੀ ਮਜ਼ਬੂਤ ਸੀ, ਇਸ ਲਈ AI ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਵਿੱਚ ਹਫ਼ਤਿਆਂ ਦੀ ਬਜਾਏ ਸਿਰਫ਼ ਕੁਝ ਦਿਨ ਲੱਗੇ।
ਸਰੋਤ: https://dev.to/arif/i-built-a-cad-editor-in-the-browser-then-taught-an-llm-to-use-it-1l92
