ನನ್ನ AI ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ಪದೇ ಪದೇ ವಿಫಲವಾಗುತ್ತಿತ್ತು — ನಾನು ಬದಲಾಯಿಸಿದ ವಿಷಯಗಳು
ಆರು ವಾರಗಳ ಹಿಂದೆ, ನನ್ನ AI ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ಅಸಂಬದ್ಧವಾದ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತಿತ್ತು.
ಅದು ಕಂಪಿಲ್ ಆಗುವ ಆದರೆ ಯಾವುದೇ ಕೆಲಸ ಮಾಡದ ಫಂಕ್ಷನ್ಗಳನ್ನು ಬರೆಯುತ್ತಿತ್ತು. ತಪ್ಪು ಕಾರಣಗಳಿಗಾಗಿ ಅದು ಟೆಸ್ಟ್ಗಳನ್ನು ಪಾಸು ಮಾಡುತ್ತಿತ್ತು. ಒಂದು ಬಗ್ ಅನ್ನು ಸರಿಪಡಿಸಿದರೆ, ಮೂರು ಹೊಸ ಬಗ್ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತಿತ್ತು.
ಏಜೆಂಟ್ ಸಮಸ್ಯೆಯೆಂದು ನಾನು ಭಾವಿಸಿದ್ದೆ. ಆದರೆ ನಾನು ತಪ್ಪಾಗಿದ್ದೆ. ಸಮಸ್ಯೆ ನನ್ನ ಸ್ವಂತ ಶಿಸ್ತಿನ ಕೊರತೆಯಾಗಿತ್ತು.
ನಾನು ನನ್ನ ಇಂಜಿನಿಯರಿಂಗ್ ಕೆಲಸದ ಶೇಕಡಾ 40 ರಷ್ಟು ಭಾಗಕ್ಕೆ AI ಏಜೆಂಟ್ ಅನ್ನು ಬಳಸುತ್ತೇನೆ. ಇದು ರಿಫ್ಯಾಕ್ಟರ್ಗಳು (refactors), ಟೆಸ್ಟ್ ಜನರೇಷನ್ ಮತ್ತು ಬಗ್ ತನಿಖೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ನನ್ನ ಕೋಡ್ಬೇಸ್ ಅಸ್ತವ್ಯಸ್ತವಾಗಿದ್ದಾಗ, AI ಆ ಅಸ್ತವ್ಯಸ್ತತೆಯನ್ನು 3 ಪಟ್ಟು ಹೆಚ್ಚು ಮಾಡಿತು.
AI ಶಿಸ್ತನ್ನು ಬದಲಿಸುವುದಿಲ್ಲ. ಅದು ನಿಮ್ಮಲ್ಲಿ ಈಗಾಗಲೇ ಇರುವ ಗುಣಗಳನ್ನು ಅಥವಾ ದೋಷಗಳನ್ನು ವೃದ್ಧಿಸುತ್ತದೆ (amplifies).
ಫಲಿತಾಂಶವನ್ನು ಸರಿಪಡಿಸಲು ನಾನು ನನ್ನ ವರ್ಕ್ಫ್ಲೋ ಅನ್ನು ಈ ಕೆಳಗಿನಂತೆ ಬದಲಾಯಿಸಿದೆ:
ಟೆಸ್ಟ್ಗಳು ವರ್ತನೆಯನ್ನು (behavior) ಖಚಿತಪಡಿಸಬೇಕು, ಸ್ಥಿತಿಯನ್ನಲ್ಲ (state). "assert user is not None" ಎಂಬ ರೀತಿಯ ಟೆಸ್ಟ್ಗಳನ್ನು ಬರೆಯುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಅದು ಸುಳ್ಳು. ಒಂದು ಟೆಸ್ಟ್ "assert user.email == expected_email" ನಂತಹ ನಿರ್ದಿಷ್ಟ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಬೇಕು. ಟೆಸ್ಟ್ ದುರ್ಬಲವಾಗಿದ್ದರೆ, AI ಅದನ್ನು ಬಳಸಿಕೊಂಡು ತಪ್ಪು ಮಾಡುತ್ತದೆ.
ಪ್ರತಿಯೊಂದು ಡಿಫ್ (diff) ಅನ್ನು ಓದಿ. ನಾನು ಕೋಡ್ ಅನ್ನು ನೋಡದೆಯೇ ರಿಫ್ಯಾಕ್ಟರ್ಗಳನ್ನು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತಿದ್ದೆ. ಇದು ಸರ್ಕ್ಯುಲರ್ ಡಿಪೆಂಡೆನ್ಸಿಗಳು (circular dependencies) ಮತ್ತು ಅಸ್ತವ್ಯಸ್ತವಾದ ಆರ್ಕಿಟೆಕ್ಚರ್ಗೆ ಕಾರಣವಾಯಿತು. ಒಂದು ಬದಲಾವಣೆ ಏಕೆ ಉತ್ತಮವಾಗಿದೆ ಎಂದು ನೀವು ವಿವರಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಅದನ್ನು ತಿರಸ್ಕರಿಸಿ.
ಸ್ಟೇಟ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿರಿಸಿ (Make state explicit). ಕ್ಯಾಶೆಗಳು (caches) ಅಥವಾ ಸೆಷನ್ಗಳನ್ನು (sessions) ಹೇಗೆ ನಿರ್ವಹಿಸಬೇಕು ಎಂಬುದನ್ನು AI "ಗೊತ್ತುಕಲಿ" ಎಂದು ಬಿಡಬೇಡಿ. ಇವುಗಳನ್ನು ನಿಮ್ಮ ಪ್ರಾಂಪ್ಟ್ಗಳು ಅಥವಾ ಸ್ಕೀಮಾಗಳಲ್ಲಿ (schemas) ವ್ಯಾಖ್ಯಾನಿಸಿ. ಅಸ್ಪಷ್ಟವಾದ ಸ್ಟೇಟ್ ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ (production) ಕ್ರ್ಯಾಶ್ ಆಗುವಂತಹ ಮೌನ ಬಗ್ಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಏಜೆಂಟ್ ಮಾಡುವ ಬದಲಾವಣೆಗಳಿಗೆ ನಿಮ್ಮದೇ ಆದ ಟೆಸ್ಟ್ಗಳನ್ನು ಬರೆಯಿರಿ. ಏಜೆಂಟ್ ಪ್ರತಿ ಬಾರಿ ಕೋಡ್ ಬದಲಾಯಿಸಿದಾಗ, ನಾನು ಮೊದಲು ಮನುಷ್ಯರು ಬರೆದ ಟೆಸ್ಟ್ ಅನ್ನು ಬರೆಯುತ್ತೇನೆ. ಇದಕ್ಕೆ 15 ನಿಮಿಷಗಳು ಬೇಕಾಗಬಹುದು, ಆದರೆ ಇದು ಗಂಟೆಗಟ್ಟಲೆ ಡಿಬಗ್ ಮಾಡುವುದನ್ನು ತಪ್ಪಿಸುತ್ತದೆ.
ವಿಫಲತೆಗಳು ಸ್ಪಷ್ಟವಾಗಿರಲಿ (Demand loud failures). ಒಂದು ಬದಲಾವಣೆಯು ಟೆಸ್ಟ್ಗಳನ್ನು ಪಾಸು ಮಾಡಿದ್ದರೂ ತರ್ಕವನ್ನು (logic) ಹಾಳುಮಾಡಿದರೆ, ಸಿಸ್ಟಮ್ ಅದನ್ನು ಗುರುತಿಸಬೇಕು. "ಟೆಸ್ಟ್ಗಳು ಪಾಸು ಆಗಿವೆ, ಈಗ ಕಳುಹಿಸಬಹುದು" ಎಂಬುವುದನ್ನು ಎಂದಿಗೂ ಮಾನ್ಯವಾದ ಮಾನದಂಡವಾಗಿ ಸ್ವೀಕರಿಸಬೇಡಿ.
ಫಲಿತಾಂಶಗಳು:
- ವಾರಕ್ಕೆ ಬಗ್ಗಳ ಸಂಖ್ಯೆ 5 ರಿಂದ 1 ಕ್ಕಿಂತ ಕಡಿಮೆಗೆ ಇಳಿಕೆಯಾಯಿತು.
- ವಾರಕ್ಕೆ ಡಿಬಗ್ ಮಾಡುವ ಸಮಯ 6 ಗಂಟೆಗಳಿಂದ 1 ಗಂಟೆಗೆ ಇಳಿಕೆಯಾಯಿತು.
ಏಜೆಂಟ್ ಬದಲಾಗಲಿಲ್ಲ. ನಾನು ಬದಲಾದೆ.
ನೀವು AI ಏಜೆಂಟ್ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಮೊದಲು ನಿಮ್ಮ ಕೋಡ್ಬೇಸ್ ಅನ್ನು ಸರಿಪಡಿಸಿಕೊಳ್ಳಿ. ನಿಮ್ಮ ಟೆಸ್ಟ್ಗಳನ್ನು ಸುಧಾರಿಸಿ, ನಿಮ್ಮ ಸ್ಟೇಟ್ ಅನ್ನು ಸ್ಪಷ್ಟಪಡಿಸಿ ಮತ್ತು ನಿಮ್ಮ ರಿವ್ಯೂಗಳನ್ನು (reviews) ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಮಾಡಿ.
ಏಜೆಂಟ್ ಒಂದು ಕನ್ನಡಿಯಿದ್ದಂತೆ. ನೀವು ವೃದ್ಧಿಸಲು ಯೋಗ್ಯವಾದದ್ದನ್ನು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
ಮೂಲ: https://dev.to/susiloharjo/my-ai-coding-agent-kept-breaking-what-i-changed-4l5f
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi
