ನಿಮ್ಮ ಲಾಗ್ ಸಂಭವಿಸದ ಘಟನೆಯನ್ನು ದಾಖಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ
ಹೆಚ್ಚಿನ AI ಸುರಕ್ಷತಾ ಪರಿಕರಗಳು (safety tools) ಕಲಾಕೃತಿಗಳನ್ನು (artifacts) ಹುಡುಕುತ್ತವೆ. ಅವು ಲಾಗ್ ಎಂಟ್ರಿ, ಸಹಿ ಅಥವಾ ಟೂಲ್ ಫಲಿತಾಂಶವನ್ನು ಹುಡುಕುತ್ತವೆ. ಒಂದು ವೇಳೆ ಟೂಲ್ ಫಲಿತಾಂಶವು ನಕಲಿಯಾಗಿದ್ದರೆ, ಸಿಸ್ಟಮ್ ಅದನ್ನು ಗುರುತಿಸುತ್ತದೆ. ಒಂದು JSON ಬ್ಲಾಕ್ ತಪ್ಪಾಗಿದ್ದರೆ, ಸಿಸ್ಟಮ್ ಅದನ್ನು ಹಿಡಿಯುತ್ತದೆ.
ಇವು ಸುಲಭವಾಗಿ ಪತ್ತೆಹಚ್ಚಬಹುದಾದ ವೈಫಲ್ಯಗಳು ಏಕೆಂದರೆ ಇವು ಒಂದು ಕುರುಹನ್ನು ಬಿಡುತ್ತವೆ.
ನಿಜವಾದ ಅಪಾಯವು ಲೋಪದಲ್ಲಿ (omission) ಇದೆ. ಏನೂ ಸಂಭವಿಸದ ಸ್ಥಿತಿಯೇ ಲೋಪ.
ಅಪೆಂಡ್-ಓನ್ಲಿ (append-only) ಲಾಗ್ನಲ್ಲಿ, ಅನುಪಸ್ಥಿತಿಯು ಮೂರು ರೀತಿಯಲ್ಲಿ ಒಂದೇ ರೀತಿ ಕಾಣುತ್ತದೆ:
- ಅದು ಸಂಭವಿಸಲಿಲ್ಲ.
- ಅದು ಇನ್ನೂ ಸಂಭವಿಸಿಲ್ಲ.
- ಅದು ಸಂಭವಿಸಿತು ಆದರೆ ಎಂದಿಗೂ ದಾಖಲಿಸಲಾಗಲಿಲ್ಲ.
ಲಾಗ್ ಏನನ್ನೂ ತೋರಿಸುವುದಿಲ್ಲ. ಆಡಿಟ್ ಕ್ವೆರಿ (audit query) ಏನನ್ನೂ ನೀಡುವುದಿಲ್ಲ. ಮೌನವೇ ಒಪ್ಪಿಗೆಯಾಗುತ್ತದೆ.
ಈ ಮೂರು ವಿನ್ಯಾಸ ನಿಯಮಗಳ ಮೂಲಕ ನೀವು ಇದನ್ನು ಸರಿಪಡಿಸಬಹುದು:
ಮೌನವು ಅವಧಿ ಮುಗಿಯುವಂತೆ ಮಾಡಿ (Make silence expire) ಒಂದು ಏಜೆಂಟ್ (agent) ಒಂದು ಕ್ರಿಯೆಯನ್ನು ಮಾಡಿದರೆ, ವಿಮರ್ಶಕರು (reviewer) ಅದರ ಮೇಲೆ ಸಹಿ ಮಾಡಬೇಕು. ಸಹಿ ಇಲ್ಲದಿರುವುದು ನಿಮ್ಮ ಸುರಕ್ಷತೆಯಲ್ಲಿನ ಒಂದು ಲೋಪವಾಗಿದೆ. "pending" ಎಂಬ ಸ್ಥಿತಿಯು ಎಂದಿಗೂ ಹಾಗೆಯೇ ಉಳಿಯಲು ಬಿಡಬೇಡಿ. ಒಂದು ಗಡುವನ್ನು (deadline) ನಿಗದಿಪಡಿಸಿ. ಗಡುವು ಮುಗಿದ ನಂತರ, ಸಿಸ್ಟಮ್ REVIEW_EXPIRED ನಂತಹ ಅಂತಿಮ ಸ್ಥಿತಿಯನ್ನು (terminal state) ದಾಖಲಿಸಬೇಕು. ಇದು ಖಾಲಿ ಜಾಗವನ್ನು ಹುಡುಕಬಹುದಾದ ದೋಷವಾಗಿ (searchable error) ಪರಿವರ್ತಿಸುತ್ತದೆ.
ಹೇಳಿಕೆಗಳಿಗೆ ಉಲ್ಲೇಖಗಳನ್ನು (citations) ಕಡ್ಡಾಯಗೊಳಿಸಿ ಏಜೆಂಟ್ಗಳು ಹೆಚ್ಚಾಗಿ ಜಗತ್ತನ್ನು ವಿವರಿಸಲು ಗದ್ಯವನ್ನು (prose) ಬಳಸುತ್ತವೆ. ಒಂದು ಏಜೆಂಟ್, "ಫೈಲ್ ಖಾಲಿಯಾಗಿತ್ತು" ಎಂದು ಹೇಳಬಹುದು. ಅದನ್ನು ಬೆಂಬಲಿಸಲು ಯಾವುದೇ ಟೂಲ್ ಫಲಿತಾಂಶವಿಲ್ಲದಿದ್ದರೆ, ಆ ಹೇಳಿಕೆಯು ಅಪಾಯಕಾರಿಯಾಗಿದೆ.
ಒಂದು ಹೇಳಿಕೆಯು ಭವಿಷ್ಯದ ಕ್ರಿಯೆಯ ಮೇಲೆ ಪ್ರಭಾವ ಬೀರಿದರೆ, ಅದು ಕಡ್ಡಾಯವಾಗಿ observation ID ಅನ್ನು ಒಳಗೊಂಡಿರಬೇಕು. ಏಜೆಂಟ್ ನಿಜ ಹೇಳುತ್ತಿದ್ದಾನೆಯೇ ಎಂದು ಊಹಿಸಲು ಪ್ರಯತ್ನಿಸಬೇಡಿ. ಆ ಹೇಳಿಕೆಯು ನೈಜ ಡೇಟಾ ಮೂಲವನ್ನು (data source) ಸೂಚಿಸುತ್ತಿದೆಯೇ ಎಂದು ಸರಳವಾಗಿ ಪರಿಶೀಲಿಸಿ. ಉಲ್ಲೇಖವಿಲ್ಲದ ಹೇಳಿಕೆಯು ತಪ್ಪಾದ ಸಂದೇಶವಾಗಿದೆ (malformed message).
- ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಎರಡು-ಘಟನೆಗಳ ವಿಭಜನೆಯನ್ನು (two-event split) ಬಳಸಿ ಒಂದು ಏಜೆಂಟ್ ಇಮೇಲ್ ಕಳುಹಿಸುವಂತಹ ಕೆಲಸವನ್ನು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಫಲಿತಾಂಶವನ್ನು ದಾಖಲಿಸುವ ಮೊದಲೇ ಅದು ಸ್ಥಗಿತಗೊಳ್ಳಬಹುದು. ಇದು ಒಂದು ಅಂತರವನ್ನು (gap) ಸೃಷ್ಟಿಸುತ್ತದೆ. ಇಮೇಲ್ ಕಳುಹಿಸಲಾಯಿತೇ? ನೀವು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಬೇಕೇ?
ಈ ಹರಿವನ್ನು (flow) ಬಳಸಿ:
- ವಿಶಿಷ್ಟ ಕೀ (unique key) ಹೊಂದಿರುವ INTENT ಘಟನೆಯನ್ನು ಅಪ್ಪೆಂಡ್ ಮಾಡಿ.
- ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ.
- OUTCOME ಘಟನೆಯನ್ನು ಅಪ್ಪೆಂಡ್ ಮಾಡಿ.
ಈಗ ನೀವು ಮಧ್ಯದ ಸ್ಥಿತಿಯನ್ನು ನೋಡಬಹುದು. ನಿಮ್ಮ ಬಳಿ INTENT ಇದ್ದು OUTCOME ಇಲ್ಲದಿದ್ದರೆ, ಸಿಸ್ಟಮ್ ಎಲ್ಲಿ ವಿಫಲವಾಯಿತು ಎಂಬುದು ನಿಮಗೆ ನಿಖರವಾಗಿ ತಿಳಿಯುತ್ತದೆ. ಊಹಿಸುವ ಬದಲು ನೀವು ಸ್ಥಿತಿಯನ್ನು ಸಮನ್ವಯಗೊಳಿಸಬಹುದು (reconcile).
ನಿಯಮ ಸರಳವಾಗಿದೆ: ನಿಮ್ಮ ಸಿಸ್ಟಮ್ ದಾಖಲಿಸುವ ಪ್ರತಿಯೊಂದು ಯಶಸ್ಸಿಗೂ, ಆ ದಾಖಲೆ ಇಲ್ಲದಿದ್ದಾಗ ಏನಾಗುತ್ತದೆ ಎಂದು ಕೇಳಿ. ಉತ್ತರ "ಏನೂ ಇಲ್ಲ" ಎಂದಿದ್ದರೆ, ನಿಮ್ಮಲ್ಲಿ ಒಂದು blind spot ಇದೆ ಎಂದರ್ಥ.
ನಿಮ್ಮ ನಕಾರಾತ್ಮಕ ಸ್ಥಿತಿಗಳನ್ನು (negative states) ಪ್ರಥಮ ದರ್ಜೆಯ ದಾಖಲೆಗಳಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಿ. ಅವುಗಳಿಗೆ ಹೆಸರುಗಳನ್ನು ನೀಡಿ. ಅವುಗಳಿಗೆ ಮಾಲೀಕರನ್ನು (owners) ನೇಮಿಸಿ. ಅವು ನಿಮ್ಮ ಸುರಕ್ಷತಾ ತಡೆಗೋಡೆಗಳನ್ನು (gates) ದಾಟದಂತೆ ಮಾಡಿ.
Source: https://dev.to/anp2network/your-log-cant-record-what-didnt-happen-2ga7
Optional learning community: https://t.me/GyaanSetuAi
