Jak sprawiłem, że AI przestało halucynować w naszym 3-letnim fintechowym codebase

Narzędzia AI do kodowania zawodzą w prawdziwych projektach produkcyjnych. Działają przy nowym kodzie, ale rozkładają się na starych codebase'ach z historią.

Nauczyłem się tego na własnej skórze podczas naszego projektu fintechowego. Mamy dwa frontendy w React, panel administracyjny i backend w FastAPI. Nasza baza danych jest złożona. Przechowuje wrażliwe dane finansowe i dane użytkowników.

Próbowaliśmy używać AI, aby przyspieszyć pracę. Nie udało się od razu.

Poprosiłem AI o stworzenie tabeli kontaktów. Stworzyło nowe kolumny dla imion i adresów e-mail. Te kolumny istniały już w naszej tabeli użytkowników. AI zduplikowało dane zamiast użyć klucza obcego. Nie miało pojęcia, że nasza tabela użytkowników w ogóle istnieje.

Przestałem pytać, jak sprawić, by AI pisało lepszy kod. Zacząłem pytać, co AI musi wiedzieć, aby podejmować dobre decyzje.

AI jest tak dobre, jak kontekst, który mu podasz. Sprawiliśmy, że nasz kontekst stał się jawny i wiążący. Oto system, który zbudowaliśmy:

• Pliki ADR: Stworzyliśmy folder docs/adrs/. Pliki te rejestrują, dlaczego podejmujemy konkretne decyzje architektoniczne. Jeden plik (ADR-001) mówi AI: „Najpierw sprawdź istniejące tabele. Używaj kluczy obcych. Nigdy nie duplikuj danych użytkowników”.

• context.md: Ten plik wyjaśnia nasze specyficzne terminy. Informuje AI, jak różne pojęcia łączą się ze sobą w naszym systemie.

• plot.md: To mapa wysokiego poziomu. Pokazuje, jak poszczególne elementy naszego projektu są ze sobą połączone.

• Ścisłe zasady: Powiedzieliśmy AI, że katalog docs jest ostatecznym źródłem prawdy. Musi przestrzegać tych zasad w podanej kolejności.

• Obowiązkowe testy: Każda nowa trasa API musi posiadać przypadki testowe.

Ten system sprawia, że AI staje się przewidywalne.

Raz AI zmieniło wspólną funkcję, co zepsuło osiem innych części aplikacji. Dzięki testom AI zauważyło błędy. Naprawiło własny błąd, tworząc nową wersję funkcji, która obsługiwała zarówno stare, jak i nowe wymagania. Bez testów ten błąd trafiłby na produkcję.

Przestań obwiniać AI za to, że nie zna twojego codebase'u. Traktuj je jak nowego pracownika. Nie obwiniasz nowego pracownika za to, że nie zna twoich zasad. Dajesz mu dokumentację i proces wdrożenia.

Nasza struktura wygląda tak:

docs/

  • context.md (Terminy i powiązania)
  • plot.md (Mapa wysokiego poziomu)
  • adr/ (Specyficzne zasady, takie jak tworzenie tabel czy struktura API)

Trzy wskazówki dla twojego workflow:

  • Bądź konkretny w swoich ADR-ach. Używaj jasnych instrukcji zamiast ogólnikowych porad.
  • Spraw, aby dokumentacja była wiążąca. Powiedz AI, że te zasady są nadrzędne.
  • Zamieniaj błędy w zasady. Za każdym razem, gdy AI zawiedzie, stwórz nowy plik ADR, aby temu zapobiec.

To nie sprawia, że AI jest idealne. To sprawia, że jest spójne.

Źródło: https://dev.to/jaskiratanand/how-i-made-ai-stop-hallucinating-on-our-3-year-old-fintech-codebase-3g0h

Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi