Nilijenga Edita wa CAD kwenye Kivinjari, Kisha Nikamfundisha LLM Kautumia
Niliuliza programu yangu: "Kuna milango na madirisha mangapi?"
AI ilijibu kwa kutoa idadi. Kisha ikajoongeza kitu bila kuombwa:
"Zingatia: D3 ina upana wa mm 300 pekee. Huenda hii ni mlango uliotambuliwa vibaya. Unataka nikague?"
Ilikuwa sahihi. Mfumo wangu ulikuwa umegeuza sehemu ya jiometri kuwa mlango wa sentimita 30. Hakuna binadamu aliyegundua hilo. Modeli ilisoma data, ikauona mlango ulio wazi kuliko sanduku la viatu, na kuutoa tahadhari.
Wakati huo ulikuwa matokeo ya changamoto kubwa ya kihandisi. Ilibidi nichanganue (parse) faili za AutoCAD DWG, nijenge upya mifano ya majengo kutoka kwenye maelfu ya mistari ya ovyo, nijenge edita wa 2D kuanzia mwanzo, na uunganishe na Claude.
Hivi ndivyo nilivyojenga.
Tatizo la Data
Faili ya DWG haina kuta. Ina mistari. Kila kitu cha kuvutia katika mradi huu kinatokea katika nafasi kati ya sentensi hizo mbili.
Nilifuata sheria mbili kushughulikia faili hizi:
- Endesha mchanganuzi (parser) kama subprocess. Ikiwa mchanganuzi wa miaka 30 utafeli, hautazima seva yangu.
- Usiamini faili kamwe. Vichwa vya habari (headers) vya DWG mara nyingi hudanganya kuhusu vipimo. Ninapuuza kichwa cha habari na kuangalia namba halisi ili kupata kipimo halisi.
Mchakato wa Uchimbaji (Extraction Pipeline)
Nilibadilisha mchanganyiko wa mistari kuwa modeli iliyopangwa:
- Kuta ni mistari ya katikati (centerlines).
- Milango na madirisha hujishikiza kwenye kuta mama.
- Vyumba ni poligoni zenye majina na maeneo.
Nilitumia mbinu rahisi kwa ajili ya uainishaji. Nilitumia substring matching kwa majina ya tabaka (layers). Ikiwa tabaka linaandikwa "WAND" au "MAUER," mfumo unajua kuwa ni ukuta. Ikiwa tabaka halina jina, mfumo hutumia jiometri kukisia.
Edita
Nilijenga edita kwa kutumia Canvas 2D context ghafi. Ili kuifanya iwe na kasi, nilitumia tabaka tatu:
- Tabaka la 1: Gridi ya kudumu na mistari ya asili.
- Tabaka la 2: Modeli (kuta, vyumba, milango).
- Tabaka la 3: Kisimbo (cursor) kinachofanya kazi na maonyesho ya awali (previews).
Hii ilifanya kasi ya fremu (frame rate) ibaki kwenye FPS 60 hata kukiwa na karibu kuta 1,000.
AI Copilot
Sikutaka chatbot inayozungumza tu. Nilitaka wakala (agent) anayefanya kazi. Nilimpa Claude zana kumi na tatu za kusoma na kuhariri modeli.
Ili kuifanya iwe salama, nilifuata sheria tatu:
- Njia moja ya kuandika: AI hutumia kodi ile ile iliyothibitishwa kama UI ya mwongozo. Ikiwa UI haiwezi kuihifadhi, AI haiwezi kuihifadhi.
- Makosa yanayoweza kurekebishwa: Ikiwa AI itajaribu kuweka mlango mahali ambapo hautoshi, zana itarudisha kosa (error). AI inasoma kosa hilo na kujaribu sehemu nyingine.
- Historia ya undo: Kila kitendo cha AI kinaunganishwa katika muamala (transaction) mmoja. Ikiwa AI itafanya kosa, kubonyeza Ctrl+Z mara moja kunarekebisha kila kitu.
Mafunzo
- Hitilafu za jiometri hujificha kwenye maumbo ambayo hufanyi majaribio nayo. Majengo ya mstatili ni rahisi. Majengo yenye umbo la L yanaharibu kila kitu.
- Fanya fuzzing kwenye zana zako. LLM ni fuzzer. Ikabiliane nayo kwa mipaka madhubuti ya kodi.
- Sehemu ngumu si AI. Ni msingi wa data. Kwa sababu jiometri ilikuwa imara, uunganishaji wa AI ulichukua siku badala ya wiki.
Chanzo: https://dev.to/arif/i-built-a-cad-editor-in-the-browser-then-taught-an-llm-to-use-it-1l92
