ನನ್ನ ಎರಡು AI ಕಾರ್ಯಗಳು ಒಂದೇ ಮೌಸ್ ಗಾಗಿ ಹೋರಾಡುತ್ತಿದ್ದವು
ಸಮಾಂತರ ಏಜೆಂಟ್ (Parallel agent) ಪ್ರದರ್ಶನಗಳು ನೋಡಲು ಅದ್ಭುತವಾಗಿ ಕಾಣುತ್ತವೆ. ಆದರೆ ಎರಡು ಕಾರ್ಯಗಳು ಒಂದೇ ಮೌಸ್ ಅನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದ ತಕ್ಷಣ ಅವು ವಿಫಲವಾಗುತ್ತವೆ.
ಒಂದು ಕಾರ್ಯವು ಒಂದು ಸೈಟ್ಗೆ ಲಾಗಿನ್ ಆಗುತ್ತದೆ. ಇನ್ನೊಂದು ಬ್ರೌಸರ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ. ಮೂರನೇ ಕಾರ್ಯವು ಸ್ಟೇಟಸ್ ಅಪ್ಡೇಟ್ ಕೇಳುತ್ತದೆ. ಇದ್ದಕ್ಕಿದ್ದಂತೆ, ಸಿಸ್ಟಮ್ ತಪ್ಪು ಜಾಗದಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡುತ್ತದೆ ಅಥವಾ ತಪ್ಪು ರನ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ. ಇದು ತಾರ್ಕಿಕ ದೋಷವಲ್ಲ (logic error). ಇದು ಸಂಪನ್ಮೂಲಗಳ ಪೈಪೋಟಿ (resource contention).
ಡೆಸ್ಕ್ಟಾಪ್ ಆಟೊಮೇಷನ್ಗಾಗಿ ನಾನು ತಯಾರಿಸಿದ ಸ್ಥಳೀಯ ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್ ಆದ CliGate ಅನ್ನು ನಿರ್ಮಿಸುವಾಗ ನಾನು ಇದನ್ನು ಕಲಿತೆ.
ಕೋಡ್ಗೆ ಸಮಾಂತರತೆ (Parallelism) ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಒಂದು ರನ್ಟೈಮ್ ಸೆಷನ್ ನಡೆಯುತ್ತಿರುವಾಗ ನೀವು ಹವಾಮಾನದ ಮಾಹಿತಿಯನ್ನು ಹುಡುಕಬಹುದು. ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಸಮ್ಮರಿಯು ಯಾವುದನ್ನೂ ತಡೆಯುವ ಅಗತ್ಯವಿಲ್ಲ.
ಡೆಸ್ಕ್ಟಾಪ್ ವಿಭಿನ್ನವಾಗಿದೆ. ನಿಮ್ಮ ಬಳಿ ಒಂದು ಭೌತಿಕ ಕೀಬೋರ್ಡ್, ಒಂದು ಮೌಸ್ ಮತ್ತು ಒಂದು ಸ್ಕ್ರೀನ್ ಇರುತ್ತದೆ. ಎರಡು ಏಜೆಂಟ್ಗಳು ಆ ಮೇಲ್ಮೈಯನ್ನು (surface) ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದರೆ, ಅವು ಪರಸ್ಪರಕ್ಕೆ ಅಡ್ಡಿಪಡಿಸುತ್ತವೆ.
ಹೊಸ ಕಾರ್ಯ ಬಂದಾಗ ಹಳೆಯ ಕಾರ್ಯವನ್ನು ರದ್ದುಗೊಳಿಸುವುದು ನನ್ನ ಮೊದಲ ಪ್ರವೃತ್ತಿಯಾಗಿತ್ತು. ಅದು ತಪ್ಪಾಗಿತ್ತು. "ಎಷ್ಟು ದೂರ ಮುಂದುವರಿದಿದೆ?" ಎಂದು ಕೇಳುವ ಬಳಕೆದಾರನ ಕಾರಣಕ್ಕಾಗಿ ಲಾಗಿನ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು (login flow) ನಿಲ್ಲಿಸಬಾರದು.
ನಾನು ಕನ್ಕರನ್ಸಿ (concurrency) ಅನ್ನು ಪ್ರಾಂಪ್ಟ್ ಸಮಸ್ಯೆಯಾಗಿ ಪರಿಗಣಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ. ಇದು ಸಂಪನ್ಮೂಲದ ಸಮಸ್ಯೆ.
ನಾನು ಮೂರು ಸರಳ ನಿಯಮಗಳನ್ನು ಜಾರಿಗೆ ತಂದೆ:
- ಸ್ವತಂತ್ರ ಕಾರ್ಯಗಳು ಸಮಾಂತರವಾಗಿ ಚಲಿಸುತ್ತವೆ.
- ಡೆಸ್ಕ್ಟಾಪ್ ಅಗತ್ಯವಿರುವ ಕಾರ್ಯಗಳು ಕ್ಯೂ (queue) ಮಾಡப்படಬೇಕು.
- ಬಳಕೆದಾರರು ಕೇಳಿದಾಗ ಮಾತ್ರ ರದ್ದತಿ (cancellation) ನಡೆಯುತ್ತದೆ.
CliGate ನಲ್ಲಿ, ಡೆಸ್ಕ್ಟಾಪ್ ಇನ್ಪುಟ್ ಲೀಸ್ (lease) ತರಹ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಮೌಸ್ ಬಳಸುವ ಕಾರ್ಯವು ಡೆಸ್ಕ್ಟಾಪ್ನ ಮಾಲೀಕನಾಗುತ್ತದೆ. ಇತರ ಕಾರ್ಯಗಳು ಕಾಯಲೇಬೇಕು.
ಹೊಸ ತರ್ಕವು (logic) ಈ ಹರಿವನ್ನು ಅನುಸರಿಸುತ್ತದೆ:
- ಹೊಸ ಕಾರ್ಯವು ಬರುತ್ತದೆ.
- ಅದಕ್ಕೆ ಡೆಸ್ಕ್ಟಾಪ್ ಅಗತ್ಯವಿದೆಯೇ?
- ಇಲ್ಲದಿದ್ದರೆ, ಅದನ್ನು ಸಮಾಂತರವಾಗಿ ಚಲಾಯಿಸಿ.
- ಹೌದು ಮತ್ತು ಡೆಸ್ಕ್ಟಾಪ್ ಖಾಲಿ ಇದ್ದರೆ, ಅದನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ.
- ಹೌದು ಮತ್ತು ಡೆಸ್ಕ್ಟಾಪ್ ಕಾರ್ಯನಿರತವಾಗಿದ್ದರೆ, ಅದನ್ನು ಕ್ಯೂನಲ್ಲಿ ಇರಿಸಿ.
- ಬಳಕೆದಾರರು ನಿಲ್ಲಿಸಿ ಎಂದು ಹೇಳಿದಾಗ ಮಾತ್ರ ರದ್ದುಗೊಳಿಸಿ.
ರಿಟ್ರೈಗಳು (Retries) ಹೆಚ್ಚಾಗಿ ಡೆಸ್ಕ್ಟಾಪ್ ಆಟೊಮೇಷನ್ ಅನ್ನು ಮತ್ತಷ್ಟು ಕೆಡಿಸುತ್ತವೆ. ಎರಡನೇ ಕಾರ್ಯವು ಮೌಸ್ ಅನ್ನು ಹಿಡಿಯಲು ಪದೇ ಪದೇ ಪ್ರಯತ್ನಿಸಿದರೆ, ಅದು ಅಡ್ಡಿಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ. ಕಠಿಣವಾಗಿ ಪ್ರಯತ್ನಿಸುವ ಬದಲು, ಅಸಿಸ್ಟೆಂಟ್ ಹೀಗೆ ಹೇಳಬೇಕು: "ಡೆಸ್ಕ್ಟಾಪ್ ಕಾರ್ಯನಿರತವಾಗಿದೆ. ನಾನು ಕ್ಯೂನಲ್ಲಿ ಇದ್ದೇನೆ. ಅದು ಖಾಲಿ ಆದಾಗ ನಾನು ಪ್ರಾರಂಭಿಸುತ್ತೇನೆ."
ಇದು ವೈಫಲ್ಯವನ್ನು ಊಹಿಸಬಹುದಾದ ನಡವಳಿಕೆಗೆ (predictable behavior) ಬದಲಾಯಿಸುತ್ತದೆ.
ನಾನು ಒಂದು ಕಠಿಣ ನಿಯಮವನ್ನೂ ಸೇರಿಸಿದೆ: ಏಜೆಂಟ್ ತನ್ನ ಸ್ವಂತ ಸಕ್ರಿಯ ರನ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸುವಂತಿಲ್ಲ. ಇದು ಏಜೆಂಟ್ ಗಾಬರಿಯಿಂದ ತನ್ನದೇ ಆಫ್ ಸ್ವಿಚ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
ಕೆಟ್ಟ AI ನಡವಳಿಕೆಯು ಹೆಚ್ಚಾಗಿ ಅತಿಯಾದ ಚತುರತೆ ತೋರಿಸಲು ಪ್ರಯತ್ನಿಸುವುದರಿಂದ ಬರುತ್ತದೆ. ಬಳಕೆದಾರರಿಗೆ ಇದಕ್ಕಿಂತ ಸರಳವಾದದ್ದು ಬೇಕು:
- ಸಂಘರ್ಷವಿಲ್ಲದ ಕಾರ್ಯಗಳನ್ನು ಚಲಾಯಿಸಿ.
- ಭೌತಿಕ ಸಂಪನ್ಮೂಲಗಳಿಗಾಗಿ ಸಂಘರ್ಷ ಉಂಟಾಗುವ ಕಾರ್ಯಗಳನ್ನು ಕ್ಯೂನಲ್ಲಿ ಇರಿಸಿ.
- ಸ್ಟೇಟಸ್ ಲಾಗ್ಗಳಿಂದ ಸ್ಟೇಟಸ್ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸಿ.
- ಬಳಕೆದಾರರು ನಿಲ್ಲಿಸಿ ಎಂದಾಗ ನಿಲ್ಲಿಸಿ.
ನೀವು ಡೆಸ್ಕ್ಟಾಪ್ ಅನ್ನು ಬಳಸುವ AI ಪರಿಕರಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ, ಇದನ್ನು ನೆನಪಿಡಿ: ಸಮಾಂತರ ಕಾರ್ಯಗಳು ಸರಿ, ಆದರೆ ಭೌತಿಕ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಸ್ಪಷ್ಟವಾದ ಮಾಲೀಕತ್ವದ ಅಗತ್ಯವಿದೆ.
Source: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij