AI ಸ್ಟ್ರೀಮಿಂಗ್ ಡಿಬಗ್ ಮಾಡುವುದು
ನಾನು ಒಂದು AI ಚಾಟ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಮೂರು ವಾರಗಳನ್ನು ಕಳೆದಿದ್ದೇನೆ. ನನಗೆ ಪದಗಳ ಸುಗಮ ಹರಿವು ಬೇಕಿತ್ತು. ಆದರೆ ನನಗೆ ಕನೆಕ್ಷನ್ ಕಟ್ ಆಗುವುದು ಮತ್ತು ಅಪೂರ್ಣ ವಾಕ್ಯಗಳು ಎದುರಾದವು.
ನನ್ನ ಅಪ್ಲಿಕೇಶನ್ FastAPI ಮತ್ತು React ಅನ್ನು ಬಳಸುತ್ತಿತ್ತು. ಸಣ್ಣ ಉತ್ತರಗಳು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡಿದವು. ಉದ್ದವಾದ ಉತ್ತರಗಳು ಪದದ ಮಧ್ಯದಲ್ಲೇ ಕಟ್ ಆಗುತ್ತಿದ್ದವು. ಸರ್ವರ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿಬಿಡುತ್ತಿತ್ತು.
ನಾನು ಅದನ್ನು ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸಿದೆ. ನಾನು timeout ಅನ್ನು ಹೆಚ್ಚಿಸಿದೆ. ಅದು ಕೆಲಸ ಮಾಡಲಿಲ್ಲ. ನಾನು retry loop ಅನ್ನು ಸೇರಿಸಿದೆ. ಇದರಿಂದ ಪದಗಳು ಪುನರಾವರ್ತಿತವಾಗಿ ಬರುತ್ತಿದ್ದವು.
ಸಮಸ್ಯೆ ಪಾರ್ಸರ್ನಲ್ಲಿ ಇತ್ತು. AI API ಡೇಟಾದ ಸಾಲುಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ನನ್ನ ಕೋಡ್ ಕನೆಕ್ಷನ್ ಅನ್ನು ತುಂಬಾ ಬೇಗ ಮುಚ್ಚಿಬಿಟ್ಟಿತ್ತು. ಅದು ಅಂತ್ಯದ ಸಿಗ್ನಲ್ಗಾಗಿ ಕಾಯುತ್ತಿರಲಿಲ್ಲ.
ಇಲ್ಲಿದೆ ಪರಿಹಾರ:
- aiter_lines ಬದಲಿಗೆ aiter_bytes ಬಳಸಿ.
- ಲೈನ್ ಬಫರ್ ಅನ್ನು ಮ್ಯಾನುವಲ್ ಆಗಿ ನಿರ್ವಹಿಸಿ.
- ನಿಲ್ಲಿಸಲು [DONE] ಸಿಗ್ನಲ್ಗಾಗಿ ಹುಡುಕಿ.
ನಂತರ ನನ್ನ UI ಫ್ರೀಜ್ ಆಯಿತು. ಸರ್ವರ್ ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ 50 ಚಂಕ್ಗಳನ್ನು ಕಳುಹಿಸುತ್ತಿತ್ತು. React ಅದನ್ನು ನಿಭಾಯಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಡೇಟಾವನ್ನು ನಿಯಂತ್ರಿಸಲು (throttle) ನಾನು ಸರ್ವರ್ನಲ್ಲಿ ಸಣ್ಣ ವಿಳಂಬವನ್ನು ಸೇರಿಸಿದೆ.
ನಿಮಗಾಗಿ ಪಾಠಗಳು:
- ಮೊದಲು ಸ್ಟ್ರೀಮಿಂಗ್ ಸ್ಪೆಕ್ (streaming spec) ಅನ್ನು ಓದಿ.
- ಖಾಲಿ ಸಾಲು ಎಂದರೆ ಅಂತ್ಯ ಎಂದು ಭಾವಿಸಬೇಡಿ.
- SSE ಪಾರ್ಸಿಂಗ್ಗಾಗಿ ಒಂದು ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಿ.
- ಚಂಕ್ ಸಂಖ್ಯೆ ಮತ್ತು ವಿಳಂಬಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ.
ಸ್ಟ್ರೀಮ್ಗಳು ಗೊಂದಲಮಯವಾಗಿರುತ್ತವೆ. ಅವುಗಳಲ್ಲಿ ವಿಚಿತ್ರತೆಗಳಿರುತ್ತವೆ. ಸ್ಟ್ರೀಮ್ ಸುಗಮವಾಗಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ ಎಂದು ಎಂದಿಗೂ ನಂಬಬೇಡಿ.
ನಿಮ್ಮ ವಿಚಿತ್ರವಾದ ಸ್ಟ್ರೀಮಿಂಗ್ ಬಗ್ ಯಾವುದು?
Source: https://dev.to/__c1b9e06dc90a7e0a676b/debugging-ai-streaming-a-tale-of-chunks-and-timeouts-1p6m Optional learning community: https://t.me/GyaanSetuAi