ಲೋಕಲ್ ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ಗಳು ಒಂದು ಎನ್ವಿರಾನ್ಮೆಂಟ್ ಸಮಸ್ಯೆ
ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ಸೆಟಪ್ನಲ್ಲಿ ಪ್ರಾಂಪ್ಟ್ (prompt) ಇನ್ನು ಮುಂದೆ ಕೇಂದ್ರಬಿಂದುವಾಗಿಲ್ಲ.
ಹೆಚ್ಚಿನ ಡೆಮೊಗಳು ಪ್ರಾಂಪ್ಟ್ ಅನ್ನೇ ಸಂಪೂರ್ಣ ಉತ್ಪನ್ನದಂತೆ ತೋರಿಸುತ್ತವೆ. ನೀವು ಒಂದು ಫೀಚರ್ ಕೇಳುತ್ತೀರಿ. ಏಜೆಂಟ್ ಫೈಲ್ಗಳನ್ನು ಓದುತ್ತದೆ. ಕೋಡ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡುತ್ತದೆ. ಟೆಸ್ಟ್ಗಳನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ಇದು ವಿಡಿಯೋದಲ್ಲಿ ನೋಡಲು ತುಂಬಾ ಸರಳವಾಗಿ ಕಾಣಿಸುತ್ತದೆ.
ನಿಜವಾದ ಲೋಕಲ್ ಏಜೆಂಟ್ಗಳು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿರುತ್ತವೆ. ಒಂದು ಏಜೆಂಟ್ ನಿಮ್ಮ ರೆಪೊಸಿಟರಿ (repo) ಜೊತೆ ಇರುವುದು, ಕಮಾಂಡ್ಗಳನ್ನು ರನ್ ಮಾಡುವುದು ಮತ್ತು ಟೂಲ್ಗಳನ್ನು ಬಳಸುವಾಗ, ಮುಖ್ಯ ಪ್ರಶ್ನೆಯೇ ಬದಲಾಗುತ್ತದೆ.
ಅದು "ನಾನು ಪರಿಪೂರ್ಣ ಪ್ರಾಂಪ್ಟ್ ಬರೆದಿದ್ದೇನೆಯೇ?" ಎಂದಲ್ಲ. ಬದಲಾಗಿ "ನಾನು ಈ ವಸ್ತುವಿಗೆ ಎಂತಹ ಎನ್ವಿರಾನ್ಮೆಂಟ್ (environment) ನೀಡಿದ್ದೇನೆ?" ಎಂದಾಗುತ್ತದೆ.
ಚಾಟ್ ಅಸಿಸ್ಟೆಂಟ್ (chat assistant) ಗೆ ಸ್ಪಷ್ಟವಾದ ಮಿತಿಗಳಿವೆ. ನೀವು ಸಂದರ್ಭವನ್ನು (context) ಪೇಸ್ಟ್ ಮಾಡುತ್ತೀರಿ, ಅದು ನಿಮಗೆ ಪಠ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಆದರೆ ಲೋಕಲ್ ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ವಿಭಿನ್ನವಾಗಿದೆ. ಅದು ನಿಮ್ಮ ಶೆಲ್ (shell), ಲೋಕಲ್ ಟೂಲ್ಸ್, ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ಗಳು ಮತ್ತು ಕ್ರೆಡೆನ್ಶಿಯಲ್ಗಳನ್ನು (credentials) ಬಳಸುತ್ತದೆ. ಇಲ್ಲಿ ಎನ್ವಿರಾನ್ಮೆಂಟ್ ಅನ್ನೇ ನಿಜವಾದ ಉತ್ಪನ್ನವಾಗುತ್ತದೆ.
ಲೋಕಲ್ ಏಜೆಂಟ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡುವುದು ಎಂದರೆ ಡೆವಲಪರ್ ಇನ್ಫ್ರಾಸ್ಟ್ರಕ್ಚರ್ (developer infrastructure) ಸಿದ್ಧಪಡಿಸುವುದು ಎಂದರ್ಥ. ಇದು ಕೇವಲ ಒಂದು AI ಟೂಲ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವುದು ಮಾತ್ರವಲ್ಲ.
ನೀವು ನಿರ್ಧರಿಸಲೇಬೇಕು:
- ಏಜೆಂಟ್ ಏನನ್ನು ಓದಬಲ್ಲದು?
- ಅದು ಏನನ್ನು ಎಡಿಟ್ ಮಾಡಬಲ್ಲದು?
- ಅದು ಯಾವ ಕಮಾಂಡ್ಗಳನ್ನು ರನ್ ಮಾಡಬಲ್ಲದು?
- ಡಿಫಾಲ್ಟ್ ಆಗಿ ಯಾವ ಟೂಲ್ಗಳು ಲಭ್ಯವಿವೆ?
- ಸ್ಟೇಟ್ (state) ಎಲ್ಲಿರುತ್ತದೆ?
- ಇನ್ನೊಬ್ಬ ಡೆವಲಪರ್ ಈ ಸೆಟಪ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸಲು (reproduce) ಸಾಧ್ಯವೇ?
- ಏಜೆಂಟ್ ಯಾವ ಪುರಾವೆಗಳನ್ನು (evidence) ಬಿಟ್ಟು ಹೋಗುತ್ತದೆ?
ಈ ಉತ್ತರಗಳು ಅಸ್ಪಷ್ಟವಾಗಿದ್ದರೆ, ನಿಮ್ಮ ಪ್ರಾಂಪ್ಟ್ ನಿಮ್ಮನ್ನು ಉಳಿಸಲಾರದು.
ಉತ್ತಮ ಪ್ರಾಂಪ್ಟ್ ಒಂದು ಉತ್ತರವನ್ನು ಸುಧಾರಿಸುತ್ತದೆ. ಆದರೆ ಉತ್ತಮ ಎನ್ವಿರಾನ್ಮೆಂಟ್ ಇಡೀ ಲೂಪ್ ಅನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.
ಏಜೆಂಟ್ ಸೆಟಪ್ ಅನ್ನು ನೀವು CI/CD ಅಥವಾ ಡಿಪ್ಲಾಯ್ಮೆಂಟ್ ಗೇಟ್ಗಳಂತೆ (deployment gates) ಪರಿಗಣಿಸಿ. ಇದನ್ನು ವೈಯಕ್ತಿಕ ಆದ್ಯತೆಯಾಗಿ ನೋಡಬೇಡಿ. ಇದನ್ನು ಒಂದು ಸಿಸ್ಟಮ್ ಆಗಿ ಪರಿಗಣಿಸಿ.
ಒಂದು ಏಜೆಂಟ್ ಫೈಲ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಬಲ್ಲದು ಆದರೆ ಚೆಕ್ಗಳನ್ನು (checks) ರನ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಅದು ಕಣ್ಣಿಗೆ ಬಟ್ಟೆ ಕಟ್ಟಿದ ಕೋಡ್ ಜನರೇಟರ್ ಇದ್ದಂತೆ. ಹೆಚ್ಚು ಇಂಟಿಗ್ರೇಷನ್ಗಳು (integrations) ಒಳ್ಳೆಯವು ಎಂದು ಭಾವಿಸಿ ನೀವು ಪ್ರತಿಯೊಂದು ಟೂಲ್ಗೂ ಕನೆಕ್ಟ್ ಮಾಡಿದ್ದರೆ, ನೀವು ಅರಿವಿಲ್ಲದೆಯೇ ಒಂದು ಪರ್ಮಿಷನ್ ಮಾಡೆಲ್ ಅನ್ನು (permission model) ಸೃಷ್ಟಿಸಿದ್ದೀರಿ ಎಂದರ್ಥ.
ಗುರಿಯೆಂದರೆ ಸಣ್ಣ ಮತ್ತು ಪರಿಶೀಲಿಸಬಹುದಾದ (inspectable) ಸಾಮರ್ಥ್ಯಗಳತ್ತ ಸಾಗುವುದು.
"ಈ ಟೆಸ್ಟ್ ರನ್ ಮಾಡಿ ಮತ್ತು ಫೇಲ್ಯರ್ಗಳನ್ನು ಸಾರಾಂಶ ಮಾಡಿ" ಎಂಬ ನಿರ್ದಿಷ್ಟ ಕೌಶಲ್ಯವು, "ಎಲ್ಲವೂ ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ" ಎಂಬ ಮುಕ್ತ ಸೂಚನೆಗಿಂತ ಉತ್ತಮವಾಗಿದೆ. ಮೊದಲನೆಯದು ಒಂದು ಹಾದಿಯನ್ನು (trail) ಬಿಡುತ್ತದೆ. ಎರಡನೆಯದು ಕೇವಲ ನಾಟಕೀಯತೆಯನ್ನು (theater) ಆಹ್ವಾನಿಸುತ್ತದೆ.
ಉತ್ತಮ ಸಾಫ್ಟ್ವೇರ್ ಮಿತಿಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ.
ಏಜೆಂಟ್ ಎಷ್ಟು ಟೂಲ್ಗಳಿಗೆ ಕನೆಕ್ಟ್ ಆಗಬಲ್ಲದು ಎಂಬುದರ ಮೇಲೆ ಗಮನ ಹರಿಸಬೇಡಿ. ಬದಲಾಗಿ ಪ್ರತಿ ಟೂಲ್ ಏಜೆಂಟ್ಗೆ ಏನು ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ ಎಂಬುದರ ಮೇಲೆ ಗಮನ ಹರಿಸಿ. ಅದು ಸ್ಟೇಟ್ ಅನ್ನು ಬದಲಾಯಿಸಬಲ್ಲದೇ (mutate state)? ಅದು ಪ್ರೊಡಕ್ಷನ್ಗೆ ತಲುಪಬಲ್ಲದೇ? ಅದು ಸೀಕ್ರೆಟ್ಗಳನ್ನು (secrets) ಬಹಿರಂಗಪಡಿಸುತ್ತದೆಯೇ?
ಔಟ್ಪುಟ್ (Output) ಎಂದರೆ ಲೇವರೇಜ್ (leverage) ಎಂದಲ್ಲ. ಏಜೆಂಟ್ಗಳು ಹೆಚ್ಚಿನ ಕೋಡ್ ಮತ್ತು ಹೆಚ್ಚಿನ ಬ್ರಾಂಚ್ಗಳನ್ನು ರಚಿಸಬಹುದು. ಕೆಲಸವು ಓದಲು ಸುಲಭವಾಗಿಲ್ಲದಿದ್ದರೆ, ಇದು ರಿವ್ಯೂ ಡೆಬ್ಟ್ (review debt) ಅನ್ನು ಸೃಷ್ಟಿಸಬಹುದು.
ಲೋಕಲ್ ಸೆಟಪ್ ಮಾನವನ ಕೆಲಸವನ್ನು ಸುಲಭಗೊಳಿಸಬೇಕು. ಅದು ಕೇವಲ ಏಜೆಂಟ್ ಅನ್ನು ವೇಗಗೊಳಿಸಿದರೆ ಮಾತ್ರ, ನಿಮ್ಮ ತಂಡವು ವೇಗವಾಗಲಿಕ್ಕಿಲ್ಲ.
ಔಟ್ಪುಟ್ ಅನ್ನು ನಂಬುವ ಮೊದಲು ಎನ್ವಿರಾನ್ಮೆಂಟ್ ಅನ್ನು ನಂಬಿ.
ಮೂಲ: https://dev.to/hefty_69a4c2d631c9dd70724/local-coding-agents-are-an-environment-problem-1o4p
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi