ಡಿಬಗ್ಗಿಂಗ್ AI ಸ್ಟ್ರೀಮಿಂಗ್: ಚಂಕ್‌ಗಳು ಮತ್ತು ಟೈಮೌಟ್‌ಗಳು

ನಾನು ಒಂದು AI ಚಾಟ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ನನಗೆ ಪದೇ ಪದೇ (word-by-word) ಪ್ರತಿಕ್ರಿಯೆಗಳು ಬೇಕಾಗಿದ್ದವು. ಅದು ವಿಫಲವಾಯಿತು. ಪ್ರತಿಕ್ರಿಯೆಗಳು ಪದದ ಮಧ್ಯದಲ್ಲೇ ಕಡಿತಗೊಂಡವು.

ನಾನು ಟೈಮೌಟ್ ಅನ್ನು ಹೆಚ್ಚಿಸಿದೆ. ಅದು ಕೆಲಸ ಮಾಡಲಿಲ್ಲ. ನಾನು ರಿಟ್ರೈ ಲೂಪ್‌ಗಳನ್ನು (retry loops) ಪ್ರಯತ್ನಿಸಿದೆ. ಇದರಿಂದ ಪದಗಳು ಪುನರಾವರ್ತಿತವಾದವು. ನಾನು ಬಫರಿಂಗ್ (buffering) ಪ್ರಯತ್ನಿಸಿದೆ. ಇದು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಧಾನಗೊಳಿಸಿತು.

ಇದಕ್ಕೆ ಕಾರಣ ಪಾರ್ಸಿಂಗ್ ದೋಷ (parsing error). API ಎಂಬುದು JSON-LD ಸಾಲುಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ಸ್ಟ್ರೀಮ್ ಮುಗಿಯುವ ಮೊದಲೇ ನನ್ನ ಕೋಡ್ ನಿಂತುಹೋಯಿತು. ಅದು ಅಂತ್ಯದ ಸಂಕೇತವನ್ನು (end signal) ನಿರ್ಲಕ್ಷಿಸಿತು.

ಪರಿಹಾರ:

  • ಸಾಲುಗಳ ಬದಲಿಗೆ ಬೈಟ್‌ಗಳನ್ನು (bytes) ಬಳಸಿ.
  • ಬಫರ್ ಅನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ನಿರ್ವಹಿಸಿ.
  • [DONE] ಸಂಕೇತಕ್ಕಾಗಿ ಹುಡುಕಿ.
  • ಕನೆಕ್ಷನ್ ಅನ್ನು ತೆರೆದಿಡಿ.

ನಂತರ ಫ್ರಂಟ್‌ಎಂಡ್ (frontend) ಸ್ಥಗಿತಗೊಂಡಿತು. React ತುಂಬಾ ವೇಗವಾಗಿ ಅಪ್‌ಡೇಟ್ ಆಯಿತು. ಇದನ್ನು ಸರಿಪಡಿಸಲು ನಾನು ಸರ್ವರ್ ಅನ್ನು ಥ್ರೊಟಲ್ (throttle) ಮಾಡಿದೆ.

ನಿಮಗಾಗಿ ಕೆಲವು ಸಲಹೆಗಳು:

  • ಸ್ಟ್ರೀಮಿಂಗ್ ಸ್ಪೆಕ್ (streaming spec) ಅನ್ನು ಓದಿ.
  • ಸ್ಪಷ್ಟವಾದ ಅಂತ್ಯದ ಇವೆಂಟ್ ಅನ್ನು ಪತ್ತೆಹಚ್ಚಿ.
  • SSE ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸಿ.
  • ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ.

ಸ್ಟ್ರೀಮ್ ಸುಗಮವಾಗಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ ಎಂದು ಎಂದಿಗೂ ನಂಬಬೇಡಿ.

ನಿಮ್ಮ ವಿಚಿತ್ರವಾದ ಸ್ಟ್ರೀಮಿಂಗ್ ಬಗ್ ಯಾವುದು?

ಮೂಲ: https://dev.to/__c1b9e06dc90a7e0a676b/debugging-ai-streaming-a-tale-of-chunks-and-timeouts-1p6m