𝗗𝗲𝗯𝘂𝗴𝗴𝗶𝗻𝗴 𝗔𝗜 𝗦𝘁𝗿𝗲𝗮𝗺𝗶𝗻𝗴
ਮੈਂ ਇੱਕ AI ਚੈਟ ਇੰਟਰਫੇਸ ਬਣਾਉਣ ਵਿੱਚ ਤਿੰਨ ਹਫ਼ਤੇ ਲਗਾਏ। ਮੈਂ ਸ਼ਬਦਾਂ ਦੀ ਇੱਕ ਸੁਚਾਰੂ ਸਟ੍ਰੀਮ ਚਾਹੁੰਦਾ ਸੀ। ਪਰ ਮੈਨੂੰ ਡੈੱਡ ਕਨੈਕਸ਼ਨਾਂ ਅਤੇ ਟੁੱਟੇ ਹੋਏ ਵਾਕਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ।
ਮੇਰੀ ਐਪ FastAPI ਅਤੇ React ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਸੀ। ਛੋਟੇ ਜਵਾਬ ਸਹੀ ਚੱਲ ਰਹੇ ਸਨ। ਲੰਬੇ ਜਵਾਬ ਸ਼ਬਦ ਦੇ ਵਿਚਕਾਰ ਹੀ ਕੱਟੇ ਜਾ ਰਹੇ ਸਨ। ਸਰਵਰ ਡੇਟਾ ਭੇਜਣਾ ਬੰਦ ਕਰ ਦਿੰਦਾ ਸੀ।
ਮੈਂ ਇਸਨੂੰ ਠੀਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਮੈਂ timeout ਵਧਾ ਦਿੱਤਾ। ਇਸ ਨਾਲ ਕੋਈ ਫਾਇਦਾ ਨਹੀਂ ਹੋਇਆ। ਮੈਂ ਇੱਕ retry loop ਜੋੜਿਆ। ਇਸ ਨਾਲ ਸ਼ਬਦ ਦੁਹਰਾਏ ਜਾਣ ਲੱਗ ਪਏ।
ਸਮੱਸਿਆ parser ਵਿੱਚ ਸੀ। AI API ਡੇਟਾ ਦੀਆਂ ਲਾਈਨਾਂ ਭੇਜਦੀ ਹੈ। ਮੇਰੇ ਕੋਡ ਨੇ ਕਨੈਕਸ਼ਨ ਨੂੰ ਬਹੁਤ ਜਲਦੀ ਬੰਦ ਕਰ ਦਿੱਤਾ। ਇਹ ਅੰਤਿਮ ਸਿਗਨਲ ਦੀ ਉਡੀਕ ਨਹੀਂ ਕਰ ਰਿਹਾ ਸੀ।
ਇੱਥੇ ਇਸਦਾ ਹੱਲ ਹੈ:
aiter_linesਦੀ ਬਜਾਏaiter_bytesਦੀ ਵਰਤੋਂ ਕਰੋ।- ਲਾਈਨ ਬਫਰ (line buffer) ਨੂੰ ਮੈਨੂਅਲੀ ਮੈਨੇਜ ਕਰੋ।
- ਰੁਕਣ ਲਈ [DONE] ਸਿਗਨਲ ਦੀ ਭਾਲ ਕਰੋ।
ਫਿਰ ਮੇਰਾ UI ਫ੍ਰੀਜ਼ ਹੋ ਗਿਆ। ਸਰਵਰ ਪ੍ਰਤੀ ਸੈਕਿੰਡ 50 ਚੰਕਸ (chunks) ਭੇਜ ਰਿਹਾ ਸੀ। React ਉਸਦੀ ਰਫ਼ਤਾਰ ਨਾਲ ਚੱਲਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ। ਮੈਂ ਡੇਟਾ ਨੂੰ ਥਰੋਟਲ (throttle) ਕਰਨ ਲਈ ਸਰਵਰ 'ਤੇ ਇੱਕ ਛੋਟਾ ਜਿਹਾ ਡਿਲੇ (delay) ਜੋੜ ਦਿੱਤਾ।
ਤੁਹਾਡੇ ਲਈ ਸਬਕ:
- ਪਹਿਲਾਂ streaming spec ਪੜ੍ਹੋ।
- ਇਹ ਨਾ ਮੰਨੋ ਕਿ ਇੱਕ ਖਾਲੀ ਲਾਈਨ ਦਾ ਮਤਲਬ ਅੰਤ ਹੈ।
- SSE parsing ਲਈ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਚੰਕ ਕਾਊਂਟ (chunk counts) ਅਤੇ ਡਿਲੇ (delays) ਨੂੰ ਟ੍ਰੈਕ ਕਰੋ।
Streams ਕਾਫੀ ਉਲਝਣ ਵਾਲੇ ਹੁੰਦੇ ਹਨ। ਉਹਨਾਂ ਵਿੱਚ ਕਈ ਅਜੀਬ ਗੱਲਾਂ ਹੁੰਦੀਆਂ ਹਨ। ਕਦੇ ਵੀ ਇਸ ਗੱਲ 'ਤੇ ਭਰੋਸਾ ਨਾ ਕਰੋ ਕਿ ਇੱਕ ਸਟ੍ਰੀਮ ਆਪਣੇ ਆਪ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਖਤਮ ਹੋ ਜਾਵੇਗੀ।
ਤੁਹਾਡਾ ਸਭ ਤੋਂ ਅਜੀਬ streaming bug ਕਿਹੜਾ ਹੈ?
Source: https://dev.to/__c1b9e06dc90a7e0a676b/debugging-ai-streaming-a-tale-of-chunks-and-timeouts-1p6m Optional learning community: https://t.me/GyaanSetuAi