𝗦𝗦𝗘 ಮೂಲಕ 𝗔𝗜 𝗟𝗮𝘁𝗲𝗻𝗰𝘆 ಅನ್ನು ಹತೋಟಿಗೆ ತರುವುದು
ನಾನು ಒಂದು AI autocomplete ಫೀಚರ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ಬಳಕೆದಾರರಿಗೆ ಅದು ಇಷ್ಟವಾಗಲಿಲ್ಲ.
ಪ್ರತಿ ಕೀस्ट्रೋಕ್ ಕೂಡ AI ಮಾಡೆಲ್ಗೆ ಒಂದು ವಿನಂತಿಯನ್ನು (request) ಕಳುಹಿಸುತ್ತಿತ್ತು. ಪೂರ್ಣ ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಬಳಕೆದಾರರು 2 ರಿಂದ 3 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಕಾಯಬೇಕಾಗುತ್ತಿತ್ತು. UI ಕೆಟ್ಟುಹೋದಂತೆ ಭಾಸವಾಗುತ್ತಿತ್ತು.
ನಾನು debouncing, caching ಮತ್ತು loading spinners ಪ್ರಯತ್ನಿಸಿದೆ. ಯಾವುದೂ ಕೆಲಸ ಮಾಡಲಿಲ್ಲ. ಮೂಲ ಸಮಸ್ಯೆ ಹಾಗೆಯೇ ಉಳಿಯಿತು. ಯಾವುದೇ ಡೇಟಾವನ್ನು ನೋಡುವ ಮೊದಲು ಬಳಕೆದಾರರು ಸಂಪೂರ್ಣ ಉತ್ತರಕ್ಕಾಗಿ ಕಾಯಬೇಕಾಗಿತ್ತು.
ನಾನು Server-Sent Events (SSE) ಬಳಸಿ ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ತುಣುಕುಗಳಾಗಿ (chunk by chunk) ಸ್ಟ್ರೀಮ್ ಮಾಡುವ ಮೂಲಕ ಇದನ್ನು ಪರಿಹರಿಸಿದೆ.
ಮೂಲ ನಿಧಾನ ಪ್ರಕ್ರಿಯೆ:
- ಬಳಕೆದಾರರು ಅಕ್ಷರಗಳನ್ನು ಟೈಪ್ ಮಾಡುತ್ತಾರೆ
- 300ms debounce
- HTTP POST request
- ಸರ್ವರ್ AI API ಅನ್ನು ಕರೆಯುತ್ತದೆ (1-2 ಸೆಕೆಂಡುಗಳು)
- ಸರ್ವರ್ ಪೂರ್ಣ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೀಡುತ್ತದೆ
- ಕ್ಲೈಂಟ್ ರೆಂಡರ್ ಮಾಡುತ್ತದೆ
ಬಳಕೆದಾರರು 2 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಏನನ್ನೂ ನೋಡಲಿಲ್ಲ.
ನಾನು polling ಅನ್ನು ಪರಿಗಣಿಸಿದೆ, ಆದರೆ ಅದು ಹೆಚ್ಚಿನ ಹೊರೆಯನ್ನು (overhead) ಉಂಟುಮಾಡುತ್ತದೆ. WebSockets ಕೆಲಸ ಮಾಡುತ್ತವೆ, ಆದರೆ ಅವು ಏಕಮುಖ ಸ್ಟ್ರೀಮ್ಗೆ (one-way stream) ತುಂಬಾ ಭಾರವಾಗಿರುತ್ತವೆ.
ನಾನು SSE ಅನ್ನು ಆರಿಸಿಕೊಂಡೆ. ಇದು ಸರ್ವರ್ ಒಂದು ದೀರ್ಘ ಕನೆಕ್ಷನ್ ಮೂಲಕ ಪಠ್ಯ ಘಟನೆಗಳನ್ನು (text events) ಕಳುಹಿಸುವ ಒಂದು ಮಾನದಂಡವಾಗಿದೆ.
AI ಗೆ SSE ಏಕೆ ಸೂಕ್ತವಾಗಿದೆ:
- ಇದು ಏಕಮುಖವಾಗಿದೆ (ಸರ್ವರ್ನಿಂದ ಕ್ಲೈಂಟ್ಗೆ)
- ಇದು ಪಠ್ಯ ಆಧಾರಿತ JSON ತುಣುಕುಗಳನ್ನು ಬಳಸುತ್ತದೆ
- ಇದು ಮರುಸಂಪರ್ಕಗಳನ್ನು (reconnections) ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ
- ನಿಮಗೆ ಹೆಚ್ಚುವರಿ ಲೈಬ್ರರಿಗಳ ಅಗತ್ಯವಿಲ್ಲ
ಫಲಿತಾಂಶಗಳು ತಕ್ಷಣವೇ ಕಂಡುಬಂದವು. ಮೊದಲ ಪದವು 300ms ಕ್ಕಿಂತ ಕಡಿಮೆ ಸಮಯದಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡಿತು. ಬಳಕೆದಾರರು ಸಲಹೆಗಳು ಅಕ್ಷರ ಅಕ್ಷರವಾಗಿ ನಿರ್ಮಾಣವಾಗುವುದನ್ನು ನೋಡಿದರು.
ನನ್ನ ಮೆಟ್ರಿಕ್ಗಳು ಸುಧಾರಿಸಿದವು:
- ಮೊದಲ ದೃಶ್ಯ ಪ್ರತಿಕ್ರಿಯೆಯ ಸಮಯ: 2.1s ನಿಂದ 0.3s ಗೆ
- ಬಳಕೆದಾರರ ತೊಡಗಿಸಿಕೊಳ್ಳುವಿಕೆ (User engagement): 40% ಹೆಚ್ಚಳ
- ಬಳಕೆದಾರರ ದೂರುಗಳು: ಶೂನ್ಯ
ಸ್ಟ್ರೀಮಿಂಗ್ ಎಂಬುದು ಗ್ರಹಿಕೆಯ (perception) ವಿಷಯವಾಗಿದೆ. ನಿಧಾನಗತಿಯ ಆದರೆ ಪ್ರಗತಿಪರ UI, ವೇಗವಾದ ಆದರೆ ಸ್ಥಿರವಾದ (static) UI ಗಿಂತ ಉತ್ತಮವಾಗಿದೆ. ಪೂರ್ಣ ಪಠ್ಯದ ಬ್ಲಾಕ್ಗಾಗಿ ಕಾಯುವ ಬದಲು, ಉತ್ತರವು ಪದ ಪದವಾಗಿ ಕಾಣಿಸಿಕೊಳ್ಳುವುದನ್ನು ನೋಡುವುದನ್ನು ಬಳಕೆದಾರರು ಇಷ್ಟಪಡುತ್ತಾರೆ.
ನಿಮ್ಮ AI ಫೀಚರ್ ನಿಧಾನಗತಿಯಂತೆ ಅನಿಸಿದರೆ, ಮೊದಲು ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ರಯತ್ನಿಸಿ.
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi