𝗦𝗦𝗘 ಮೂಲಕ 𝗔𝗜 𝗟𝗮𝘁𝗲𝗻𝗰𝘆 ಯನ್ನು ಹತೋಟಿಗೆ ತರುವುದು
ನಾನು ಒಂದು AI autocomplete ಫೀಚರ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ಬಳಕೆದಾರರಿಗೆ ಅದು ಇಷ್ಟವಾಗಲಿಲ್ಲ.
ಪ್ರತಿ ಕೀ-ಸ್ಟ್ರೋಕ್ ಕೂಡ ಒಂದು AI ವಿನಂತಿಯನ್ನು (request) ಪ್ರಾರಂಭಿಸುತ್ತಿತ್ತು. ಪೂರ್ಣ JSON ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಬಳಕೆದಾರರು 2 ರಿಂದ 3 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಕಾಯಬೇಕಾಗುತ್ತಿತ್ತು. UI ಕೆಟ್ಟದಾಗಿ ಕಾಣಿಸುತ್ತಿತ್ತು. ನಾನು debouncing ಮತ್ತು caching ಪ್ರಯತ್ನಿಸಿದೆ. ಯಾವುದೂ ಕೆಲಸ ಮಾಡಲಿಲ್ಲ. ಮೂಲ ಸಮಸ್ಯೆ ಹಾಗೆಯೇ ಇತ್ತು: ಸಂಪೂರ್ಣ ಉತ್ತರ ಬರುವವರೆಗೆ ಬಳಕೆದಾರರಿಗೆ ಏನೂ ಕಾಣಿಸುತ್ತಿರಲಿಲ್ಲ.
ನಾನು Server-Sent Events (SSE) ಬಳಸಿ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಹಂತ ಹಂತವಾಗಿ ಸ್ಟ್ರೀಮ್ ಮಾಡುವ ಮೂಲಕ ಇದನ್ನು ಪರಿಹರಿಸಿದೆ.
ಹಳೆಯ ಪ್ರಕ್ರಿಯೆ ಹೀಗಿತ್ತು:
- ಬಳಕೆದಾರರು ಟೈಪ್ ಮಾಡುತ್ತಾರೆ
- 300ms debounce
- HTTP POST request
- AI ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ (1-2 ಸೆಕೆಂಡುಗಳು)
- ಸರ್ವರ್ ಪೂರ್ಣ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೀಡುತ್ತದೆ
- ಕ್ಲೈಂಟ್ ರಂಡರ್ ಮಾಡುತ್ತದೆ
ಬಳಕೆದಾರರು ಸೆಕೆಂಡುಗಳ ಕಾಲ ಖಾಲಿ ಪರದೆಯನ್ನು ನೋಡುತ್ತಿದ್ದರು. ಲೋಡಿಂಗ್ ಸ್ಪಿನರ್ (loading spinner) ಇದ್ದರೂ ಸಹ, ಅದು ನಿಧಾನವಾಗಿ ಅನಿಸುತ್ತಿತ್ತು.
ನಾನು polling ಅಥವಾ WebSockets ಬಗ್ಗೆ ಯೋಚಿಸಿದೆ. Polling ಅತಿಯಾದ ಹೊರೆಯನ್ನು (overhead) ಉಂಟುಮಾಡುತ್ತದೆ. WebSockets ಒಂದು ದಿಕ್ಕಿನ ಸ್ಟ್ರೀಮ್ಗೆ (one-way stream) ತುಂಬಾ ಭಾರವೆನಿಸುತ್ತದೆ.
ನಾನು SSE ಅನ್ನು ಆರಿಸಿಕೊಂಡೆ ಏಕೆಂದರೆ:
- ಇದು ಸರ್ವರ್ನಿಂದ ಕ್ಲೈಂಟ್ಗೆ ಒಂದು ದಿಕ್ಕಿನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ
- ಇದು ಸರಳ ಪಠ್ಯ ಮತ್ತು JSON ಚಂಕ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ
- ಸಂಪರ್ಕ ಕಡಿತಗೊಂಡರೆ ಇದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಸಂಪರ್ಕಗೊಳ್ಳುತ್ತದೆ
- ನಿಮ್ಮ ಸರ್ವರ್ನಲ್ಲಿ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಲೈಬ್ರರಿಗಳ ಅಗತ್ಯವಿಲ್ಲ
ಫಲಿತಾಂಶಗಳು ಎಲ್ಲವನ್ನೂ ಬದಲಿಸಿದವು:
- ಮೊದಲ ದೃಶ್ಯ ಪ್ರತಿಕ್ರಿಯೆಯ ಸಮಯ: 2.1s ನಿಂದ 0.3s ಗೆ ಇಳಿಕೆಯಾಯಿತು
- ಬಳಕೆದಾರರ ತೊಡಗಿಸಿಕೊಳ್ಳುವಿಕೆ (User engagement): 40% ಹೆಚ್ಚಾಯಿತು
- ಬಳಕೆದಾರರ ದೂರುಗಳು: ಶೂನ್ಯ
ಸ್ಟ್ರೀಮಿಂಗ್ ಎಂಬುದು ಗ್ರಹಿಕೆಯ (perception) ವಿಷಯವಾಗಿದೆ. ಸ್ಟ್ಯಾಟಿಕ್ UI ಗಿಂತ ಪ್ರೋಗ್ರೆಸಿವ್ UI ವೇಗವಾಗಿ ಅನಿಸುತ್ತದೆ. ಪಠ್ಯದ ಒಂದು ದೊಡ್ಡ ಭಾಗಕ್ಕಾಗಿ ಕಾಯುವ ಬದಲು, ಪದಗಳು ಒಂದೊಂದಾಗಿ ಕಾಣಿಸಿಕೊಳ್ಳುವುದನ್ನು ನೋಡುವುದನ್ನು ಬಳಕೆದಾರರು ಇಷ್ಟಪಡುತ್ತಾರೆ.
ನಿಮ್ಮ AI ಪ್ರತಿಕ್ರಿಯೆಗಳು ತುಂಬಾ ಚಿಕ್ಕದಾಗಿದ್ದರೆ, ಸ್ಟ್ಯಾಂಡರ್ಡ್ ರಿಕ್ವೆಸ್ಟ್ಗಳನ್ನೇ ಬಳಸಿ. ನಿಮಗೆ ಎರಡು ದಿಕ್ಕಿನ ಸಂವಹನ (two-way talk) ಬೇಕಿದ್ದರೆ, WebSockets ಬಳಸಿ. ಆದರೆ ಹೆಚ್ಚಿನ AI ಸ್ಟ್ರೀಮಿಂಗ್ ಅಗತ್ಯಗಳಿಗೆ, SSE ಅತ್ಯುತ್ತಮ ಆಯ್ಕೆಯಾಗಿದೆ.
ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ AI લેಟೆನ್ಸಿಯನ್ನು (latency) ನೀವು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತೀರಿ? ನೀವು ಸ್ಟ್ರೀಮ್ ಮಾಡುತ್ತೀರಾ ಅಥವಾ ಪೂರ್ಣ ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಕಾಯುತ್ತೀರಾ?