Come ho fatto smettere l'IA di allucinare sul nostro codebase fintech di 3 anni
Gli strumenti di coding basati su IA falliscono nei veri progetti di produzione. Funzionano sul codice nuovo, ma vanno in crisi su codebase datate che hanno una storia alle spalle.
L'ho imparato a mie spese con il nostro progetto fintech. Abbiamo due frontend in React, un pannello di amministrazione e un backend in FastAPI. Il nostro database è complesso. Contiene dati finanziari e degli utenti sensibili.
Abbiamo provato a usare l'IA per accelerare i tempi. È fallito immediatamente.
Ho chiesto all'IA di creare una tabella contatti. Ha creato nuove colonne per nomi ed email. Queste colonne esistevano già nella nostra tabella utenti. L'IA ha duplicato i dati invece di usare una chiave esterna. Non aveva idea che la nostra tabella utenti esistesse.
Ho smesso di chiedere come far scrivere codice migliore all'IA. Ho iniziato a chiedere di cosa l'IA avesse bisogno per prendere buone decisioni.
L'IA è valida solo quanto il contesto che le fornisci. Abbiamo reso il nostro contesto esplicito e autorevole. Ecco il sistema che abbiamo costruito:
• File ADR: Abbiamo creato una cartella docs/adrs/. Questi file registrano il motivo per cui prendiamo decisioni architettoniche. Un file (ADR-001) dice all'IA: "Controlla prima le tabelle esistenti. Usa le chiavi esterne. Non duplicare mai i dati degli utenti."
• context.md: Questo file spiega i nostri termini specifici. Spiega all'IA come i diversi concetti si relazionano tra loro nel nostro sistema.
• plot.md: Questa è una mappa di alto livello. Mostra come si collegano le diverse parti del nostro progetto.
• Regole rigorose: Abbiamo detto all'IA che la directory docs è l'autorità suprema. Deve seguire queste regole in ordine.
• Test obbligatori: Ogni nuova rotta API deve avere dei casi di test.
Questo sistema rende l'IA prevedibile.
Una volta, l'IA ha modificato una funzione condivisa che ha rotto altre otto parti dell'app. Poiché avevamo i test, l'IA ha rilevato i fallimenti. Ha corretto il proprio errore creando una nuova versione della funzione che gestiva sia i requisiti vecchi che quelli nuovi. Senza i test, quel bug sarebbe arrivato in produzione.
Smettetela di incolpare l'IA perché non conosce il vostro codebase. Trattatela come una nuova assunzione. Non si rimprovera un nuovo assunto perché non conosce le vostre regole. Gli si forniscono documentazione e onboarding.
La nostra struttura è questa:
docs/
- context.md (Termini e connessioni)
- plot.md (Mappa di alto livello)
- adr/ (Regole specifiche come la creazione di tabelle o la struttura delle API)
Tre consigli per il vostro workflow:
- Siate specifici nei vostri ADR. Usate istruzioni chiare invece di consigli vaghi.
- Rendete la documentazione autorevole. Dite all'IA che queste regole hanno la precedenza.
- Trasformate gli errori in regole. Ogni volta che l'IA fallisce, create un nuovo ADR per prevenirlo.
Questo non rende l'IA perfetta. La rende coerente.
Community di apprendimento opzionale: https://t.me/GyaanSetuAi
