ನನ್ನ ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ಸೆಷನ್ಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಂಡಿತು, ಕೆಲಸವನ್ನಲ್ಲ
ಒಂದು ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ಸಂಭಾಷಣೆಯ ದಾರಿಯನ್ನು (thread) ಜೀವಂತವಾಗಿಡಬಹುದು, ಆದರೂ ಅದು ಮರೆಗುಳಿ ಇರುವಂತೆ ಅನಿಸಬಹುದು.
ನಾನು CliGate ಅನ್ನು ನಿರ್ಮಿಸುವಾಗ ಈ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸಿದೆ. ನಾನು ಸೆಷನ್ ನಿರಂತರತೆಯನ್ನು (session continuity) ಸರಿಪಡಿಸಿದೆ, ಆದರೆ ಪುನರಾವರ್ತಿತ ಕಾರ್ಯಗಳು ಇನ್ನೂ ತುಂಬಾ ನಿಧಾನವಾಗಿದ್ದವು.
ಏಜೆಂಟ್ ಸಂಭಾಷಣೆಯನ್ನು ನೆನಪಿಟ್ಟುಕೊಂಡಿತು, ಆದರೆ ಕೆಲಸವನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲಿಲ್ಲ.
ಸೆಷನ್ ನಿರಂತರತೆಯು ಒಂದು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತದೆ. ಇದು ಈ ಕೆಳಗಿನಂತಹ ಅನುಸರಣಾ ಆದೇಶಗಳಿಗೆ (follow-up commands) ಸಹಾಯ ಮಾಡುತ್ತದೆ:
- continue (ಮುಂದುವರಿಸು)
- do the same for this file (ಇದೇ ಕೆಲಸವನ್ನು ಈ ಫೈಲ್ಗೂ ಮಾಡು)
- retry that (ಅದನ್ನು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು)
ಅದು ಉಪಯುಕ್ತವಾಗಿದೆ. ಆದರೆ ನೀವು ಕೆಲವು ದಿನಗಳ ನಂತರ ಅದೇ ಕೆಲಸದ ಹರಿವನ್ನು (workflow) ಪುನರಾವರ್ತಿಸಿದಾಗ ಇದು ಸಹಾಯ ಮಾಡುವುದಿಲ್ಲ.
ಹಿಂದಿನ ಪ್ರಯತ್ನವು ಏಕೆ ಯಶಸ್ವಿಯಾಯಿತು ಎಂಬುದನ್ನು ಏಜೆಂಟ್ ನೆನಪಿಸಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ. ಅದಕ್ಕೆ ಇವುಗಳು ತಿಳಿದಿರಬೇಕು:
- ಯಾವ ಬಟನ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ
- ಯಾವ ಹಂತವು ಅಡೆತಡೆ ಅಥವಾ ಫಲಿತಾಂಶವಿಲ್ಲದ ಹಂತವಾಗಿದೆ
- ಯಾವ ಫೀಲ್ಡ್ಗೆ ವಿಶೇಷ ನಿರ್ವಹಣೆಯ ಅಗತ್ಯವಿದೆ
- ಯಾವ ನಿಯಮವನ್ನು ನೀವು ಯಾವಾಗಲೂ ಅನ್ವಯಿಸಲು ಬಯಸುತ್ತೀರಿ
ಮೊದಲ ಪ್ರಯತ್ನವು ಅತ್ಯಂತ ವೆಚ್ಚದಾಯಕವಾಗಿರುತ್ತದೆ. ಆಗಲೇ ಏಜೆಂಟ್ ಅನ್ವೇಷಣೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ಪ್ರಾಂಪ್ಟ್ನಲ್ಲಿ ಇಲ್ಲದ ವಿವರಗಳನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತದೆ.
ನನ್ನ ಪರಿಹಾರದ ಮೊದಲು, ಈ ವಿವರಗಳು ಕೇವಲ ರಾಗ್ ಲಾಗ್ಗಳಲ್ಲಿ (raw logs) ಮಾತ್ರ ಇದ್ದವು. ಏಜೆಂಟ್ಗೆ ಇತಿಹಾಸವಿತ್ತು, ಆದರೆ ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ನೆನಪಿನ ಶಕ್ತಿ (reusable memory) ಇರಲಿಲ್ಲ. ಅದು ಪ್ರತಿ ಬಾರಿಯೂ ಎಲ್ಲವನ್ನೂ ಮರುಪತ್ತೆ ಮಾಡಬೇಕಾಗಿತ್ತು.
ಅದು ಬುದ್ಧಿವಂತಿಕೆಯಲ್ಲ. ಅದು ಒಂದೇ ಡಿಬಗ್ಗಿಂಗ್ ವೆಚ್ಚವನ್ನು ಎರಡು ಬಾರಿ ಪಾವತಿಸಿದಂತೆ.
ಹೆಚ್ಚು ಇತಿಹಾಸವನ್ನು ಉಳಿಸಿ, ಮಾಡೆಲ್ ಅದನ್ನು ಬಳಸುತ್ತದೆ ಎಂದು ಭಾವಿಸುವುದು ತಪ್ಪು ವಿಧಾನವಾಗಿದೆ. ಇದು ಗೊಂದಲವನ್ನು (noise) ಸೃಷ್ಟಿಸುತ್ತದೆ.
ಬದಲಾಗಿ ನಾನು ಸಣ್ಣದಾದ, ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಮೆಮೊರಿ ಲೇಯರ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ನಾನು ಇವುಗಳ ಮೇಲೆ ಗಮನ ಹರಿಸಿದೆ:
- ಕಾರ್ಯವಿಧಾನಗಳು (procedures)
- ಸತ್ಯಾಂಶಗಳು (facts)
- ನಿರ್ದೇಶನಗಳು (directives)
- ಉಲ್ಲೇಖಗಳು (references)
ನಡೆದಿದ್ದನ್ನೆಲ್ಲಾ ಉಳಿಸಲು ನಾನು ಪ್ರಯತ್ನಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ. ನೆನಪಿಡಬೇಕಾದ ವಿಷಯಗಳನ್ನು ಮಾತ್ರ ಉಳಿಸಲು ಪ್ರಾರಂಭಿಸಿದೆ.
ಈಗ, ಅಸಿಸ್ಟೆಂಟ್ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ನೆನಪಿಸಿಕೊಳ್ಳಲು ಫೈಲ್-ಆಧಾರಿತ ಮೆಮೊರಿ ಲೇಯರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ:
- ಒಂದು ಕಾರ್ಯವಿಧಾನ (procedure): ಅತ್ಯುತ್ತಮ ಹಂತಗಳು ಮತ್ತು ತಿಳಿದಿರುವ ಅಡೆತಡೆಗಳು
- ಒಂದು ಸತ್ಯಾಂಶ (fact): ಒಂದು URL ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಸೆಟ್ಟಿಂಗ್
- ಒಂದು ನಿರ್ದೇಶನ (directive): ನೀವು ಕೆಲಸಗಳನ್ನು ಹೇಗೆ ಮಾಡಲು ಬಯಸುತ್ತೀರಿ ಎಂಬುದು
- ಒಂದು ಉಲ್ಲೇಖ (reference): ಡಾ
