𝗧𝗮𝗺𝗶𝗻𝗴 𝗔𝗜 𝗟𝗮𝘁𝗲𝗻𝗰𝘆 𝘄𝗶𝘁𝗵 𝗦𝗦𝗘

நான் ஒரு AI autocomplete அம்சத்தை உருவாக்கினேன். பயனர்கள் அதை வெறுத்தனர்.

ஒவ்வொரு முறை ஒரு எழுத்தைத் தட்டச்சு செய்யும் போதும் ஒரு AI மாடலுக்கு கோரிக்கை அனுப்பப்பட்டது. முழுமையான பதிலைப் பெற பயனர்கள் 2 முதல் 3 வினாடிகள் வரை காத்திருக்க வேண்டியிருந்தது. UI பழுதானது போன்ற உணர்வைத் தந்தது.

நான் debouncing, caching மற்றும் loading spinners ஆகியவற்றை முயற்சி செய்தேன். எதுவும் பலன் அளிக்கவில்லை. அடிப்படைப் பிரச்சனை அப்படியே இருந்தது. எந்தத் தரவையும் பார்ப்பதற்கு முன் பயனர்கள் முழு பதிலுக்காகவும் காத்திருக்க வேண்டியிருந்தது.

பதில்களைத் துண்டு துண்டாக (chunk by chunk) स्ट्रीम செய்ய Server-Sent Events (SSE) முறையைப் பயன்படுத்தி இதைத் தீர்த்தேன்.

ஆரம்பகால மெதுவான செயல்முறை:

  • பயனர் எழுத்துக்களைத் தட்டச்சு செய்கிறார்
  • 300ms debounce
  • HTTP POST request
  • சர்வர் AI API-ஐ அழைக்கிறது (1-2 வினாடிகள்)
  • சர்வர் முழுப் பதிலையும் திருப்பி அனுப்புகிறது
  • கிளையண்ட் (Client) திரையில் காட்டுகிறது

பயனர் 2 வினாடிகளுக்கு எதையும் பார்க்கவில்லை.

நான் polling முறையை யோசித்தேன், ஆனால் அது அதிக சுமையை (overhead) ஏற்படுத்தும். WebSockets வேலை செய்யும், ஆனால் ஒரு திசைத் தரவுப் பரிமாற்றத்திற்கு (one-way stream) அவை மிகவும் கனமானவை.

நான் SSE-ஐத் தேர்ந்தெடுத்தேன். இது ஒரு நீண்ட இணைப்பின் (long connection) மூலம் சர்வர் உரை நிகழ்வுகளை (text events) அனுப்பும் ஒரு தரநிலையாகும்.

AI-க்கு SSE ஏன் சிறந்தது:

  • இது ஒரு திசைப் பரிமாற்றம் (server to client)
  • இது உரை அடிப்படையிலான JSON துண்டுகளைப் பயன்படுத்துகிறது
  • இது தானாகவே மறு இணைப்புகளை (reconnections) கையாளும்
  • உங்களுக்கு கூடுதல் லைப்ரரிகள் (libraries) தேவையில்லை

முடிவுகள் உடனடியாகக் கிடைத்தன. முதல் சொல் 300ms-க்கும் குறைவான நேரத்தில் தோன்றியது. பரிந்துரைகள் எழுத்து வாரியாக உருவாவதை பயனர்கள் பார்த்தனர்.

எனது அளவீடுகள் (metrics) மேம்பட்டன:

  • முதல் காட்சிப் பதிலுக்கான நேரம்: 2.1s இலிருந்து 0.3s ஆகக் குறைந்தது
  • பயனர் ஈடுபாடு: 40% உயர்வு
  • பயனர் புகார்கள்: பூஜ்ஜியம்

ஸ்ட்ரீமிங் (Streaming) என்பது பயனரின் உணர்வோடு தொடர்புடையது. ஒரு வேகமான ஆனால் நிலையான (static) UI-ஐ விட, மெதுவான ஆனால் படிப்படியாக முன்னேறும் (progressive) UI சிறந்தது. ஒரு முழுத் தொகுப்பாகத் தரவு வரும் வரை காத்திருப்பதை விட, வார்த்தை வாரியாகப் பதில் வருவதைப் பார்ப்பதையே பயனர்கள் விரும்புகிறார்கள்.

உங்கள் AI அம்சம் மந்தமாகத் தோன்றினால், முதலில் ஸ்ட்ரீமிங் முறையை முயற்சி செய்யுங்கள்.

Source: https://dev.to/__c1b9e06dc90a7e0a676b/taming-ai-latency-streaming-responses-with-server-sent-events-42d5

Optional learning community: https://t.me/GyaanSetuAi