Jinsi Nilivyofanya AI Iache Kuleta Majibu ya Uwongo (Hallucinating) kwenye Codebase Yetu ya Fintech ya Miaka 3
Zana za uandishi wa kodi za AI hufeli kwenye miradi halisi ya uzalishaji (production). Zinafanya kazi kwenye kodi mpya lakini zinashindwa kwenye codebase za zamani zenye historia.
Nilijifunza hili kwa njia ngumu kupitia mradi wetu wa fintech. Tuna React frontends mbili, jopo la admin (admin panel), na FastAPI backend. Database yetu ni tata. Inahifadhi data nyeti za kifedha na za watumiaji.
Tulijaribu kutumia AI ili kuongeza kasi. Ilifeli mara moja.
Nilimwomba AI itengeneze jedwali la mawasiliano (contacts table). Iliunda safu (columns) mpya za majina na barua pepe. Safu hizi tayari zilikuwepo kwenye jedwali letu la watumiaji (users table). AI ilijirudia data badala ya kutumia foreign key. Haikujua kabisa kuwa jedwali letu la watumiaji lilikuwepo.
Niliacha kuuliza jinsi ya kumfanya AI aandike kodi bora zaidi. Nilianza kuuliza ni nini AI inahitaji kujua ili ifanye maamuzi sahihi.
AI ni nzuri tu kulingana na muktadha (context) unaoupa. Tulifanya muktadha wetu uwe wazi na wenye mamlaka. Huu hapa ni mfumo tuliojenga:
• Files za ADR: Tulitengeneza folda ya docs/adrs/. Files hizi zinarekodi kwa nini tunafanya maamuzi ya usanifu (architectural decisions). File moja (ADR-001) inaiambia AI: "Kagua majedwali yaliyopo kwanza. Tumia foreign keys. Usijirudie data ya mtumiaji kamwe."
• context.md: File hili linaelezea istilahi zetu mahususi. Inaiambia AI jinsi dhana tofauti zinavyohusiana katika mfumo wetu.
• plot.md: Hii ni ramani ya kiwango cha juu. Inaonyesha jinsi sehemu tofauti za mradi wetu zinavyounganishwa.
• Sheria Kali: Tuliiambia AI kuwa directory ya docs ndiyo mamlaka kuu. Lazima ifuate sheria hizi kwa mpangilio.
• Majaribio ya Lazima: Kila njia mpya ya API (API route) lazima iwe na kesi za majaribio (test cases).
Mfumo huu unafanya AI iwe inayotabirika.
Wakati mmoja, AI ilibadilisha function ya pamoja (shared function) ambayo iliharibu sehemu nyingine nane za programu. Kwa sababu tulikuwa na majaribio, AI iliona makosa hayo. Ilirekebisha kosa lake lenyewe kwa kuunda toleo jipya la function hiyo ambalo liliendeshwa na mahitaji ya zamani na mapya. Bila majaribio, hitilafu (bug) hiyo ingefika kwenye uzalishaji (production).
Acha kulaumu AI kwa kutojua codebase yako. Itendee kama mfanyakazi mpya. Humlaumu mfanyakazi mpya kwa kutojua sheria zako. Unampa nyaraka (documentation) na mafunzo ya awali (onboarding).
Muundo wetu unaonekana hivi:
docs/
- context.md (Istilahi na miunganisho)
- plot.md (Ramani ya kiwango cha juu)
- adr/ (Sheria mahususi kama uundaji wa majedwali au muundo wa API)
Vidokezo vitatu kwa mtiririko wako wa kazi:
- Kuwa mahususi kwenye ADR zako. Tumia maelekezo ya wazi badala ya ushauri usio na mpangilio.
- Fanya docs ziwe na mamlaka. Iambie AI kuwa sheria hizi ndizo za kwanza.
- Badili makosa kuwa sheria. Kila wakati AI inapofeli, tengeneza ADR mpya ili kuzuia hilo.
Hii haifanyi AI kuwa kamilifu. Inafanya iwe thabiti.
Jumuiya ya hiari ya kujifunza: https://t.me/GyaanSetuAi
