ಕಳೆದುಹೋದ ಪ್ರತಿಕ್ರಿಯೆಯ ಸಂದರ್ಭದಲ್ಲಿ ನಿಮ್ಮ AI ಏಜೆಂಟ್ ಡಬಲ್-ಚಾರ್ಜ್ ಮಾಡಬಹುದು
ನಿಮ್ಮ AI ಏಜೆಂಟ್ ಕಾರ್ಡ್ ಚಾರ್ಜ್ ಮಾಡಲು ಒಂದು ಟೂಲ್ ಅನ್ನು ಬಳಸಿದಾಗ ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳೆದುಕೊಂಡರೆ, ನಿಮ್ಮ ಏಜೆಂಟ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ. ಅದು ತಿಳಿಯದೆಯೇ ಗ್ರಾಹಕರಿಂದ ಎರಡು ಬಾರಿ ಹಣವನ್ನು ಕಡಿತಗೊಳಿಸುತ್ತದೆ.
ಹಣವು ಈಗಾಗಲೇ ವರ್ಗಾವಣೆಯಾಗಿದೆ. ಏಜೆಂಟ್ಗೆ "ok" ಎಂಬ ಪ್ರತಿಕ್ರಿಯೆ ಸಿಗುವುದಿಲ್ಲ. ಅದು ಪ್ರತಿಯೊಂದು ರಿಟ್ರೈ ಲೂಪ್ (retry loop) ಮಾಡುವಂತೆಯೇ ಮಾಡುತ್ತದೆ: ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಇದು ಅದೇ ಪ್ರಾಂಪ್ಟ್ ಮತ್ತು ಅದೇ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ಎರಡನೇ ಬಾರಿ ಚಾರ್ಜ್ ಆಗಲು ಕಾರಣವಾಗುತ್ತದೆ.
ರಿಟ್ರೈ (Retry) ಎಂಬುದು ಕೇವಲ ನೆಟ್ವರ್ಕ್ ಘಟನೆಯಲ್ಲ. ಇದು ಈಗಾಗಲೇ ಸಂಭವಿಸಿರಬಹುದಾದ ಸೈಡ್ ಎಫೆಕ್ಟ್ (side effect) ಬಗ್ಗೆ ತೆಗೆದುಕೊಳ್ಳುವ ನಿರ್ಧಾರವಾಗಿದೆ.
backoff ಮತ್ತು jitter ನಂತಹ ಪ್ರಮಾಣಿತ ರಿಟ್ರೈ ಟೂಲ್ಗಳು ರಿಟ್ರೈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ವ್ಯವಸ್ಥಿತವಾಗಿ ಮಾಡುತ್ತವೆ. ಆದರೆ ಅವು ಡಬಲ್-ಚಾರ್ಜ್ ಆಗುವುದನ್ನು ತಡೆಯಲು ಏನನ್ನೂ ಮಾಡುವುದಿಲ್ಲ.
ನಿಮಗೆ ಒಂದು idempotency ledger ಬೇಕಾಗುತ್ತದೆ. ಇದು ಒಂದು ಕ್ರಿಯೆಯು ಗರಿಷ್ಠ ಒಂದು ಬಾರಿ ಮಾತ್ರ ನಡೆಯುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ವಿಶಿಷ್ಟ ಕೀ (unique key) ಅನ್ನು ಬಳಸುತ್ತದೆ.
ಟೂಲ್ ಕಾಲ್ (tool call) ವಿಫಲವಾಗಲು ಎರಡು ಮಾರ್ಗಗಳಿವೆ:
- ವಿನಂತಿಯು (request) ಕಳೆದುಹೋಗಿದೆ. ಕ್ರಿಯೆಯು ಎಂದಿಗೂ ನಡೆದಿಲ್ಲ. ರಿಟ್ರೈ ಮಾಡುವುದು ಸುರಕ್ಷಿತ.
- ಪ್ರತಿಕ್ರಿಯೆಯು (response) ಕಳೆದುಹೋಗಿದೆ. ಕ್ರಿಯೆಯು ಈಗಾಗಲೇ ನಡೆದುಹೋಗಿದೆ. ರಿಟ್ರೈ ಮಾಡುವುದು ಡ್ಯೂಪ್ಲಿಕೇಟ್ (duplicate) ಚಾರ್ಜ್ಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಏಜೆಂಟ್ಗೆ ಇವೆರಡೂ ಒಂದೇ ರೀತಿ ಕಾಣುತ್ತವೆ. ಎರಡೂ ಟೈಮ್ಔಟ್ (timeout) ಅಥವಾ ಕನೆಕ್ಷನ್ ಕಡಿತಗೊಂಡಂತೆ ಕಾಣುತ್ತವೆ.
ಒಂದು ಟೂಲ್ ಪೇಮೆಂಟ್, ಇಮೇಲ್ ಅಥವಾ ರಿಫಂಡ್ನಂತಹ ಸೈಡ್ ಎಫೆಕ್ಟ್ ಹೊಂದಿದ್ದರೆ, ನೀವು ಕೇವಲ ರಿಟ್ರೈಗಳ ಮೇಲೆ ಅವಲಂಬಿತರಾಗಲು ಸಾಧ್ಯವಿಲ್ಲ. ನೀವು অবশ্যই idempotency key ಅನ್ನು ಬಳಸಬೇಕು.
ಇದನ್ನು ಸರಿಪಡಿಸುವುದು ಹೇಗೆ:
- ನಿಮ್ಮ ಟೂಲ್ಗಳನ್ನು ಟ್ಯಾಗ್ ಮಾಡಿ. ಯಾವ ಟೂಲ್ಗಳು ಬದಲಾಯಿಸಲಾಗದ ಸೈಡ್ ಎಫೆಕ್ಟ್ಗಳನ್ನು ಹೊಂದಿವೆ ಎಂಬುದನ್ನು ಗುರುತಿಸಿ.
- ಡಿಟರ್ಮಿನಿಸ್ಟಿಕ್ ಕೀಗಳನ್ನು (deterministic keys) ಬಳಸಿ. ವರ್ಕ್ಫ್ಲೋ ಐಡಿ (workflow ID), ಹಂತ (step) ಮತ್ತು ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳ ಆಧಾರದ ಮೇಲೆ ಸ್ಥಿರವಾದ ಕೀಯನ್ನು ರಚಿಸಿ. LLM ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಬದಲಾಯಿಸುವ ಮೊದಲೇ ಇದನ್ನು ಮಾಡಿ.
- ಪ್ರೊವೈಡರ್ ಕೀಗಳನ್ನು ಬಳಸಿ. ನೀವು Stripe ಬಳಸುತ್ತಿದ್ದರೆ, ಅವರ idempotency key ಅನ್ನು ಕಳುಹಿಸಿ. ಚಾರ್ಜ್ ಆಗುವುದನ್ನು ತಡೆಯಲು ಪ್ರೊವೈಡರ್ ಆ ಪುನರಾವರ್ತನೆಯನ್ನು ಗುರುತಿಸಬೇಕು.
- ನಿಮ್ಮ ಸ್ವಂತ ಟೂಲ್ಗಳಿಗಾಗಿ ಒಂದು ಲೆಡ್ಜರ್ (ledger) ನಿರ್ಮಿಸಿ. ನೀವು ನಿಯಂತ್ರಿಸುವ ಸೈಡ್ ಎಫೆಕ್ಟ್ಗಳಿಗಾಗಿ, ವಿಶಿಷ್ಟ ನಿರ್ಬಂಧದೊಂದಿಗೆ (unique constraint) ಡೇಟಾಬೇಸ್ ಟೇಬಲ್ ಬಳಸಿ. ಇದು ನಿಮ್ಮ ಸಿಸ್ಟಮ್ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುವ ಮೊದಲು ಫಲಿತಾಂಶವನ್ನು ದಾಖಲಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.
"at-least-once" ಅನ್ನು "exactly-once" ಎಂದು ತಪ್ಪಾಗಿ ಭಾವಿಸಬೇಡಿ. ಡಿಸ್ಟ