ਮੈਂ ਕਿਵੇਂ AI ਨੂੰ ਸਾਡੇ 3 ਸਾਲ ਪੁਰਾਣੇ ਫਿਨਟੈਕ (fintech) ਕੋਡਬੇਸ 'ਤੇ ਗਲਤ ਜਾਣਕਾਰੀ (hallucinating) ਦੇਣ ਤੋਂ ਰੋਕਿਆ
AI ਕੋਡਿੰਗ ਟੂਲ ਅਸਲ ਪ੍ਰੋਡਕਸ਼ਨ ਪ੍ਰੋਜੈਕਟਾਂ 'ਤੇ ਅਸਫਲ ਰਹਿੰਦੇ ਹਨ। ਉਹ ਨਵੇਂ ਕੋਡ 'ਤੇ ਕੰਮ ਕਰਦੇ ਹਨ ਪਰ ਇਤਿਹਾਸ ਵਾਲੇ ਪੁਰਾਣੇ ਕੋਡਬੇਸਾਂ 'ਤੇ ਟੁੱਟ ਜਾਂਦੇ ਹਨ।
ਮੈਂ ਇਹ ਆਪਣੇ ਫਿਨਟੈਕ ਪ੍ਰੋਜੈਕਟ ਨਾਲ ਬਹੁਤ ਮੁਸ਼ਕਲ ਤਰੀਕੇ ਨਾਲ ਸਿੱਖਿਆ। ਸਾਡੇ ਕੋਲ ਦੋ React frontends, ਇੱਕ admin panel, ਅਤੇ ਇੱਕ FastAPI backend ਹੈ। ਸਾਡਾ ਡੇਟਾਬੇਸ ਗੁੰਝਲਦਾਰ ਹੈ। ਇਸ ਵਿੱਚ ਸੰਵੇਦਨਸ਼ੀਲ ਵਿੱਤੀ ਅਤੇ ਉਪਭੋਗਤਾ ਡੇਟਾ ਹੁੰਦਾ ਹੈ।
ਅਸੀਂ ਤੇਜ਼ੀ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ AI ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਇਹ ਤੁਰੰਤ ਅਸਫਲ ਰਹੀ।
ਮੈਂ AI ਨੂੰ ਇੱਕ contacts table ਬਣਾਉਣ ਲਈ ਕਿਹਾ। ਇਸਨੇ ਨਾਮ ਅਤੇ ਈਮੇਲ ਲਈ ਨਵੇਂ ਕਾਲਮ ਬਣਾ ਦਿੱਤੇ। ਇਹ ਕਾਲਮ ਸਾਡੇ users table ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਸਨ। AI ਨੇ foreign key ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਬਜਾਏ ਡੇਟਾ ਨੂੰ ਡੁਪਲੀਕੇਟ ਕਰ ਦਿੱਤਾ। ਉਸਨੂੰ ਇਸ ਗੱਲ ਦਾ ਕੋਈ ਅਹਿਸਾਸ ਨਹੀਂ ਸੀ ਕਿ ਸਾਡਾ users table ਮੌਜੂਦ ਹੈ।
ਮੈਂ AI ਨੂੰ ਬਿਹਤਰ ਕੋਡ ਲਿਖਣ ਲਈ ਕਿਹਾ ਜਾਣਾ ਬੰਦ ਕਰ ਦਿੱਤਾ। ਮੈਂ ਇਹ ਪੁੱਛਣਾ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤਾ ਕਿ ਚੰਗੇ ਫੈਸਲੇ ਲੈਣ ਲਈ AI ਨੂੰ ਕੀ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ।
AI ਉਨਾ ਹੀ ਚੰਗਾ ਹੁੰਦਾ ਹੈ ਜਿੰਨਾ ਸੰਦਰਭ (context) ਤੁਸੀਂ ਇਸਨੂੰ ਦਿੰਦੇ ਹੋ। ਅਸੀਂ ਆਪਣੇ ਸੰਦਰਭ ਨੂੰ ਸਪਸ਼ਟ ਅਤੇ ਅਧਿਕਾਰਤ ਬਣਾਇਆ। ਇੱਥੇ ਉਹ ਸਿਸਟਮ ਹੈ ਜੋ ਅਸੀਂ ਬਣਾਇਆ ਹੈ:
• ADR Files: ਅਸੀਂ ਇੱਕ docs/adrs/ ਫੋਲਡਰ ਬਣਾਇਆ। ਇਹ ਫਾਈਲਾਂ ਰਿਕਾਰਡ ਕਰਦੀਆਂ ਹਨ ਕਿ ਅਸੀਂ ਆਰਕੀਟੈਕਚਰਲ ਫੈਸਲੇ ਕਿਉਂ ਲੈਂਦੇ ਹਾਂ। ਇੱਕ ਫਾਈਲ (ADR-001) AI ਨੂੰ ਦੱਸਦੀ ਹੈ: "ਪਹਿਲਾਂ ਮੌਜੂਦਾ tables ਦੀ ਜਾਂਚ ਕਰੋ। Foreign keys ਦੀ ਵਰਤੋਂ ਕਰੋ। ਉਪਭੋਗਤਾ ਡੇਟਾ ਨੂੰ ਕਦੇ ਵੀ ਡੁਪਲੀਕੇਟ ਨਾ ਕਰੋ।"
• context.md: ਇਹ ਫਾਈਲ ਸਾਡੇ ਵਿਸ਼ੇਸ਼ ਸ਼ਬਦਾਂ ਦੀ ਵਿਆਖਿਆ ਕਰਦੀ ਹੈ। ਇਹ AI ਨੂੰ ਦੱਸਦੀ ਹੈ ਕਿ ਸਾਡੇ ਸਿਸਟਮ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਸੰਕਲਪ ਇੱਕ ਦੂਜੇ ਨਾਲ ਕਿਵੇਂ ਜੁੜੇ ਹੋਏ ਹਨ।
• plot.md: ਇਹ ਇੱਕ ਉੱਚ-ਪੱਧਰੀ ਨਕਸ਼ਾ ਹੈ। ਇਹ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਸਾਡੇ ਪ੍ਰੋਜੈਕਟ ਦੇ ਵੱਖ-ਵੱਖ ਹਿੱਸੇ ਕਿਵੇਂ ਜੁੜੇ ਹੋਏ ਹਨ।
• ਸਖ਼ਤ ਨਿਯਮ (Strict Rules): ਅਸੀਂ AI ਨੂੰ ਦੱਸਿਆ ਕਿ docs directory ਅੰਤਿਮ ਅਧਿਕਾਰ ਹੈ। ਇਸਨੂੰ ਇਹਨਾਂ ਨਿਯਮਾਂ ਦੀ ਕ੍ਰਮਵਾਰ ਪਾਲਣਾ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।
• ਲਾਜ਼ਮੀ ਟੈਸਟ (Mandatory Tests): ਹਰ ਨਵੇਂ API route ਲਈ test cases ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।
ਇਹ ਸਿਸਟਮ AI ਨੂੰ ਭਵਿੱਖਬਾਣੀਯੋਗ (predictable) ਬਣਾਉਂਦਾ ਹੈ।
ਇੱਕ ਵਾਰ, AI ਨੇ ਇੱਕ shared function ਨੂੰ ਬਦਲ ਦਿੱਤਾ ਜਿਸ ਨਾਲ ਐਪ ਦੇ ਅੱਠ ਹੋਰ ਹਿੱਸੇ ਟੁੱਟ ਗਏ। ਕਿਉਂਕਿ ਸਾਡੇ ਕੋਲ ਟੈਸਟ ਸਨ, AI ਨੇ ਅਸਫਲਤਾਵਾਂ ਨੂੰ ਦੇਖ ਲਿਆ। ਇਸਨੇ ਫੰਕਸ਼ਨ ਦਾ ਇੱਕ ਨਵਾਂ ਵਰਜਨ ਬਣਾ ਕੇ ਆਪਣੀ ਗਲਤੀ ਨੂੰ ਸੁਧਾਰ ਲਿਆ ਜੋ ਪੁਰਾਣੀਆਂ ਅਤੇ ਨਵੀਆਂ ਦੋਵਾਂ ਲੋੜਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦਾ ਸੀ। ਟੈਸਟਾਂ ਤੋਂ ਬਿਨਾਂ, ਉਹ ਬੱਗ (bug) ਪ੍ਰੋਡਕਸ਼ਨ ਤੱਕ ਪਹੁੰਚ ਜਾਂਦਾ।
ਤੁਹਾਡੇ ਕੋਡਬੇਸ ਨੂੰ ਨਾ ਜਾਣਨ ਲਈ AI ਨੂੰ ਦੋਸ਼ ਦੇਣਾ ਬੰਦ ਕਰੋ। ਇਸਨੂੰ ਇੱਕ ਨਵੇਂ ਕਰਮਚਾਰੀ ਵਾਂਗ ਸਮਝੋ। ਤੁਸੀਂ ਕਿਸੇ ਨਵੇਂ ਕਰਮਚਾਰੀ ਨੂੰ ਤੁਹਾਡੇ ਨਿਯਮਾਂ ਨੂੰ ਨਾ ਜਾਣਨ ਲਈ ਦੋਸ਼ ਨਹੀਂ ਦਿੰਦੇ। ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਦਸਤਾਵੇਜ਼ (documentation) ਅਤੇ ਆਨਬੋਰਡਿੰਗ (onboarding) ਦਿੰਦੇ ਹੋ।
ਸਾਡਾ ਢਾਂਚਾ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ:
docs/
- context.md (ਸ਼ਬਦ ਅਤੇ ਸੰਬੰਧ)
- plot.md (ਉੱਚ-ਪੱਧਰੀ ਨਕਸ਼ਾ)
- adr/ (ਵਿਸ਼ੇਸ਼ ਨਿਯਮ ਜਿਵੇਂ ਕਿ table ਬਣਾਉਣਾ ਜਾਂ API structure)
ਤੁਹਾਡੇ ਵਰਕਫਲੋ ਲਈ ਤਿੰਨ ਸੁਝਾਅ:
- ਆਪਣੇ ADRs ਵਿੱਚ ਵਿਸ਼ੇਸ਼ ਹੋਵੋ। ਅਸਪਸ਼ਟ ਸਲਾਹ ਦੀ ਬਜਾਏ ਸਪਸ਼ਟ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- docs ਨੂੰ ਅਧਿਕਾਰਤ ਬਣਾਓ। AI ਨੂੰ ਦੱਸੋ ਕਿ ਇਹ ਨਿਯਮ ਪਹਿਲਾਂ ਆਉਂਦੇ ਹਨ।
- ਗਲਤੀਆਂ ਨੂੰ ਨਿਯਮਾਂ ਵਿੱਚ ਬਦਲੋ। ਹਰ ਵਾਰ ਜਦੋਂ AI ਅਸਫਲ ਹੁੰਦਾ ਹੈ, ਇਸਨੂੰ ਰੋਕਣ ਲਈ ਇੱਕ ਨਵਾਂ ADR ਬਣਾਓ।
ਇਹ AI ਨੂੰ ਸੰਪੂਰਨ ਨਹੀਂ ਬਣਾਉਂਦਾ। ਇਹ ਇਸਨੂੰ ਨਿਰੰਤਰ (consistent) ਬਣਾਉਂਦਾ ਹੈ।
Optional learning community: https://t.me/GyaanSetuAi
