SSEతో AI Latencyని నియంత్రించడం

నేను ఒక AI autocomplete ఫీచర్‌ను రూపొందించాను. వినియోగదారులు దానిని అసహ్యించుకున్నారు.

ప్రతి కీస్ట్రోక్ (keystroke) ఒక AI మోడల్‌కు రిక్వెస్ట్‌ను పంపేది. పూర్తి సమాధానం కోసం వినియోగదారులు 2 నుండి 3 సెకన్ల పాటు వేచి ఉండాల్సి వచ్చేది. UI సరిగ్గా పనిచేయడం లేదని అనిపించేది.

నేను debouncing ప్రయత్నించాను. caching ప్రయత్నించాను. loading spinners కూడా ప్రయత్నించాను. కానీ ఏదీ పని చేయలేదు. అసలు సమస్య అలాగే ఉంది. వినియోగదారులు ఏ డేటాను చూడటానికి ముందు పూర్తి సమాధానం కోసం వేచి ఉండాల్సి వచ్చేది.

నేను దీనిని Server-Sent Events (SSE) ఉపయోగించి పరిష్కరించాను, దీని ద్వారా సమాధానాలను chunk by chunk (ముక్కలు ముక్కలుగా) స్ట్రీమ్ చేయవచ్చు.

అసలు నెమ్మదైన విధానం:

  • వినియోగదారు అక్షరాలను టైప్ చేస్తారు
  • 300ms debounce
  • HTTP POST request
  • సర్వర్ AI APIని పిలుస్తుంది (1-2 సెకన్లు)
  • సర్వర్ పూర్తి సమాధానాన్ని తిరిగి పంపుతుంది
  • క్లయింట్ రెండర్ చేస్తుంది

వినియోగదారు 2 సెకన్ల పాటు ఏమీ చూడలేరు.

నేను polling గురించి ఆలోచించాను, కానీ అది చాలా overhead (అదనపు భారం) కలిగిస్తుంది. WebSockets పనిచేస్తాయి, కానీ అవి ఒక వైపు (one-way) స్ట్రీమింగ్ కోసం చాలా బరువుగా ఉంటాయి.

నేను SSEని ఎంచుకున్నాను. ఇది ఒక స్టాండర్డ్, ఇక్కడ సర్వర్ ఒకే సుదీర్ఘ కనెక్షన్ ద్వారా టెక్స్ట్ ఈవెంట్‌లను పంపుతుంది.

AIకి SSE ఎందుకు ఉపయోగపడుతుంది:

  • ఇది ఒక వైపు (server to client) మాత్రమే ఉంటుంది
  • ఇది టెక్స్ట్ ఆధారిత JSON chunksని ఉపయోగిస్తుంది
  • ఇది రీకనెక్షన్‌లను ఆటోమేటిక్‌గా హ్యాండిల్ చేస్తుంది
  • మీకు అదనపు లైబ్రరీల అవసరం లేదు

ఫలితాలు వెంటనే కనిపించాయి. మొదటి పదం 300ms లోపే ప్రత్యక్షమైంది. వినియోగదారులు సూచనలు అక్షరం అక్షరం నిర్మించబడటాన్ని చూడగలిగారు.

నా మెట్రిక్స్ మెరుగుపడ్డాయి:

  • మొదటి విజువల్ రెస్పాన్స్ సమయం: 2.1s నుండి 0.3s కి తగ్గింది
  • యూజర్ ఎంగేజ్‌మెంట్: 40% పెరిగింది
  • యూజర్ ఫిర్యాదులు: సున్నా

స్ట్రీమింగ్ అనేది వినియోగదారుల అనుభూతి (perception) గురించి. నెమ్మదిగా ఉన్నా, క్రమంగా అభివృద్ధి చెందే UI, వేగంగా ఉన్నా నిశ్చలంగా ఉండే UI కంటే మెరుగైనది. పూర్తి టెక్స్ట్ బ్లాక్ కోసం వేచి ఉండటం కంటే, సమాధానం పదం పదం కనిపించడాన్ని వినియోగదారులు ఇష్టపడతారు.

మీ AI ఫీచర్ నెమ్మదిగా అనిపిస్తే, మొదట స్ట్రీమింగ్‌ని ప్రయత్నించండి.

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

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