𝗗𝗲𝗯𝘂𝗴𝗴𝗶𝗻𝗴 𝗔𝗜 𝗦𝘁𝗿𝗲𝗮𝗺𝗶𝗻𝗴: 𝗖𝗵𝘂𝗻𝗸𝘀 𝗮𝗻𝗱 𝗧𝗶𝗺𝗲𝗼𝘂𝘁𝘀

ഞാൻ ഒരു AI ചാറ്റ് ഇന്റർഫേസ് നിർമ്മിച്ചു. എനിക്ക് വാക്കുകൾ ഓരോന്നായി ലഭിക്കുന്ന മറുപടികൾ വേണമായിരുന്നു. അത് പരാജയപ്പെട്ടു. മറുപടികൾ വാക്കുകൾ പാതിവഴിയിൽ മുറിഞ്ഞുപോയി.

ഞാൻ ടൈമൗട്ട് (timeout) കൂട്ടി. അത് ഫലിച്ചില്ല. ഞാൻ റീട്രൈ ലൂപ്പുകൾ (retry loops) പരീക്ഷിച്ചു. ഇത് വാക്കുകൾ ആവർത്തിച്ചു വരാൻ കാരണമായി. ഞാൻ ബഫറിംഗ് (buffering) പരീക്ഷിച്ചു. ഇത് ആപ്പിന്റെ വേഗത കുറച്ചു.

ഇതിന്റെ കാരണം ഒരു പാഴ്സിംഗ് എറർ (parsing error) ആയിരുന്നു. API JSON-LD ലൈനുകളാണ് അയക്കുന്നത്. സ്ട്രീം അവസാനിക്കുന്നതിന് മുമ്പ് തന്നെ എന്റെ കോഡ് നിന്നുപോയി. അത് എൻഡ് സിഗ്നൽ (end signal) അവഗണിച്ചു.

പരിഹാരം:

  • ലൈനുകൾക്ക് പകരം ബൈറ്റുകൾ (bytes) ഉപയോഗിക്കുക.
  • ബഫർ മാനുവലായി കൈകാര്യം ചെയ്യുക.
  • [DONE] സിഗ്നലിനായി ശ്രദ്ധിക്കുക.
  • കണക്ഷൻ തുറന്നുതന്നെ വെക്കുക.

പിന്നീട് ഫ്രണ്ട്‌എൻഡ് (frontend) ഫ്രീസ് ആയി. React വളരെ വേഗത്തിൽ അപ്‌ഡേറ്റ് ആയി. ഇത് പരിഹരിക്കാൻ ഞാൻ സെർവറിനെ ത്രോട്ടിൽ (throttle) ചെയ്തു.

നിങ്ങൾക്കുള്ള ടിപ്‌സുകൾ:

  • സ്ട്രീമിംഗ് സ്പെസിഫിക്കേഷൻ വായിക്കുക.
  • വ്യക്തമായ എൻഡ് ഇവന്റ് (end event) കണ്ടെത്തുക.
  • SSE ലൈബ്രറികൾ ഉപയോഗിക്കുക.
  • നിങ്ങളുടെ ഡാറ്റ ട്രാക്ക് ചെയ്യുക.

ഒരു സ്ട്രീം തനിയെ സുഗമമായി അവസാനിക്കുമെന്ന് ഒരിക്കലും വിശ്വസിക്കരുത്.

നിങ്ങളുടെ ഏറ്റവും വിചിത്രമായ സ്ട്രീമിംഗ് ബഗ്ഗ് ഏതാണ്?

സ്രോതസ്സ്: https://dev.to/__c1b9e06dc90a7e0a676b/debugging-ai-streaming-a-tale-of-chunks-and-timeouts-1p6m