Neon Functions ഇപ്പോൾ പരിധിയില്ലാത്ത ദൈർഘ്യമുള്ള സ്ട്രീമിംഗ് കണക്ഷനുകൾ പിന്തുണയ്ക്കുന്നു. ഇത് മിക്ക സെർവ്ലെസ് വർക്ക്ലോഡുകളെയും (serverless workloads) തടസ്സപ്പെടുത്തുന്ന ടൈമൗട്ട് പരിധികളിൽ (timeout limits) തടസ്സപ്പെടാതെ തന്നെ, AI ഏജന്റുകൾക്ക് സെക്കൻഡുകളോ മിനിറ്റുകളോ അല്ലെങ്കിൽ അതിൽ കൂടുതലോ സമയം ഒരു ലൈവ് ചാനൽ തുറന്നുപിടിക്കാൻ അനുവദിക്കുന്നു. ചാറ്റ് ശൈലിയിലുള്ള അസിസ്റ്റന്റുകളോ ടൂൾ ഉപയോഗിക്കുന്ന ബോട്ടുകളോ നിർമ്മിക്കുന്നവർക്ക് ഈ മാറ്റം വളരെ പ്രധാനമാണ്, കാരണം ഒരു സ്ട്രീം തകരാറിലായാൽ സംഭാഷണം മുടങ്ങുകയും ഉപയോക്താവിന്റെ അനുഭവം മോശമാവുകയും ചെയ്യും.

എന്തുകൊണ്ടാണ് സെർവ്ലെസും AI ഏജന്റുകളും തമ്മിൽ പൊരുത്തക്കേടുകൾ ഉണ്ടാവുന്നത്

മിക്ക സെർവ്ലെസ് പ്ലാറ്റ്‌ഫോമുകളും വേഗത്തിൽ ചെയ്തു തീർക്കാവുന്ന ജോലികൾക്കായി (fire-and-forget tasks) നിർമ്മിച്ചവയാണ്. വിഭവങ്ങൾ (resources) കൃത്യമായി നിയന്ത്രിക്കുന്നതിനായി അവ കർശനമായ എക്സിക്യൂഷൻ പരിധികൾ ഏർപ്പെടുത്തുന്നു—പലപ്പോഴും ഫ്രീ ടിയറുകളിൽ 10 സെക്കൻഡും പെയ്ഡ് പ്ലാനുകളിൽ 60 സെക്കൻഡും ആണ് ഈ പരിധി. എന്നാൽ ഒരു AI ഏജന്റ് ചിന്തിക്കാനും, ബാഹ്യ ടൂളുകൾ വിളിക്കാനും, ടോക്കണുകൾ ജനറേറ്റ് ചെയ്യപ്പെടുമ്പോൾ അവ പുറപ്പെടുവിക്കാനും സമയം ചെലവഴിക്കുന്നു. ആ "ചിന്തിക്കുന്ന" ഘട്ടം പലപ്പോഴും പത്ത് സെക്കൻഡുകൾക്ക് മുകളിൽ നീണ്ടുനിൽക്കാം, കൂടാതെ മോഡൽ ഔട്ട്പുട്ട് നൽകുന്നിടത്തോളം കാലം ടോക്കൺ സ്ട്രീം തുടരാം. പ്ലാറ്റ്‌ഫോമിന്റെ ടൈമർ അവസാനിക്കുമ്പോൾ, അത് കണക്ഷൻ ക്ലോസ് ചെയ്യുകയും ക്ലയന്റിന് ഒരു തകരാറിലായ സ്ട്രീം (broken stream) കാണപ്പെടുകയും ചെയ്യുന്നു.

Neon-ന്റെ പരിഹാരം: ഡിഫോൾട്ടായി തന്നെ ദീർഘനേരം നിലനിൽക്കുന്ന സ്ട്രീമിംഗ്

Neon Functions ഈ രീതിയെ പാടെ മാറ്റുന്നു. ഒരു ഫംഗ്ഷൻ കോൾ പ്രത്യേക കോൺഫിഗറേഷനുകൾ ഇല്ലാതെ തന്നെ WebSockets അല്ലെങ്കിൽ Server-Sent Events (SSE) വഴി ഡാറ്റ നൽകിക്കൊണ്ട് അനിശ്ചിതകാലം തുറന്നുപിടിക്കാൻ സാധിക്കും. പ്ലാറ്റ്‌ഫോം ഒരു ദീർഘമായ സ്ട്രീമിനെ ഒരു സാധാരണ റിക്വസ്റ്റ് ആയിട്ടാണ് പരിഗണിക്കുന്നത്, അതിനാൽ ഡെവലപ്പർമാർ സ്ട്രീം ജനറേറ്റ് ചെയ്യുന്ന ലോജിക് എഴുതിയാൽ ബാക്കി കാര്യങ്ങൾ Neon കൈകാര്യം ചെയ്യും.

അടുത്തിടെ നടത്തിയ ഒരു പരീക്ഷണത്തിൽ, രണ്ട് എൻഡ്പോയിന്റുകൾ ഈ പ്രവർത്തനം തെളിയിച്ചു:

  • Heartbeat endpoint – ഫംഗ്ഷൻ 90 സെക്കൻഡ boyunca ഓരോ സെക്കൻഡിലും ഒരു “tick” പുറപ്പെടുവിച്ചു. സാധാരണ സെർവ്ലെസ് ടിയറുകൾ 10 അല്ലെങ്കിൽ 60 സെക്കൻഡുകൾക്ക് ശേഷം റിക്വസ്റ്റ് അവസാനിപ്പിക്കുമായിരുന്നു; എന്നാൽ Neon ഫംഗ്ഷൻ സ്വയം പൂർത്തിയാകുന്നത് വരെ കണക്ഷൻ നിലനിർത്തി.
  • Token-relay endpoint – ഓരോ ടോക്കൺ ഉൽപ്പാദിപ്പിക്കപ്പെടുമ്പോഴും ഫംഗ്ഷൻ ഒരു AI മോഡലിൽ നിന്ന് ക്ലയന്റിലേക്ക് ടോക്കണുകൾ സ്ട്രീം ചെയ്തു. മുഴുവൻ ടെക്സ്റ്റ് ബ്ലോക്കിനും കാത്തുനിൽക്കുന്നതിന് പകരം ഓരോ വാക്കായി ഉത്തരം വരുന്നത് ഉപയോക്താക്കൾക്ക് കാണാൻ സാധിച്ചു.

ഈ രണ്ട് ഉദാഹരണങ്ങൾക്കും ക്ലയന്റിൽ നിന്ന് ഒരു സിംഗിൾ റിക്വസ്റ്റ് മാത്രം മതിയായിരുന്നു; പോളിംഗോ (polling) കീപ്പ്-അലൈവ് (keep-alive) തന്ത്രങ്ങളോ ആവശ്യമില്ലായിരുന്നു.

ആർക്കൊക്കെ ഗുണമുണ്ടാകും, ആരെല്ലാം ജാഗ്രത പാലിക്കണം

സംഭാഷണ അസിസ്റ്റന്റുകൾ, ടൂൾ ഉപയോഗിക്കുന്ന ഏജന്റുകൾ, അല്ലെങ്കിൽ ഘട്ടംഘട്ടമായുള്ള ഫലങ്ങൾ (incremental results) നൽകേണ്ട ഏതെങ്കിലും സേവനം നിർമ്മിക്കുന്ന ടീമുകൾക്ക് ഇതിലൂടെ വലിയ നേട്ടമുണ്ട്: ടൈമൗട്ട് എന്ന പ്രശ്നം ഇല്ലാതാകുന്നു. ഇതിന്റെ ഫലമായി ലളിതമായ കോഡ്, കുറഞ്ഞ ലേറ്റൻസി (latency), മികച്ച ഉപയോക്തൃ അനുഭവം എന്നിവ ലഭിക്കുന്നു.

ശ്രദ്ധിക്കേണ്ട ചില കാര്യങ്ങളുണ്ട്:

  • Request-only model – ഒരു ആക്റ്റീവ് റിക്വസ്റ്റുമായി ബന്ധപ്പെട്ട് നിൽക്കുന്ന സ്ട്രീമുകളെയാണ് Neon Functions കൈകാര്യം ചെയ്യുന്നത്. റിക്വസ്റ്റിന് ശേഷവും നിലനിൽക്കേണ്ട ബാക്ക്ഗ്രൗണ്ട് ജോലികൾക്ക് ഇപ്പോഴും Inngest അല്ലെങ്കിൽ സമാനമായ വർക്ക്ഫ്ലോ എൻജിനുകൾ പോലുള്ള പ്രത്യേക ഷെഡ്യൂളർ ആവശ്യമാണ്.
  • Cold starts – ഉപയോഗത്തിലില്ലാത്ത ഫംഗ്ഷനുകൾ സ്കെയിൽ ചെയ്യാൻ സാധിക്കും (scale to zero), അതിനാൽ അടുത്ത റിക്വസ്റ്റിന് കോൾഡ്-സ്റ്റാർട്ട് ഡിലേ (cold-start delay) ഉണ്ടായേക്കാം. ഒരു ആക്റ്റീവ് സ്ട്രീം സ്കെയിലിംഗ് തടയുമെങ്കിലും, പ്രവർത്തനമില്ലായ്മയ്ക്ക് ശേഷമുള്ള ആദ്യ റിക്വസ്റ്റ് സ്റ്റാർട്ട്-അപ്പ് ചിലവ് വഹിക്കേണ്ടി വരും.

അടുത്തതായി ശ്രദ്ധിക്കേണ്ട കാര്യങ്ങൾ

ചുരുക്കത്തിൽ: AI ഡെവലപ്പർമാരെ പകര സംവിധാനങ്ങൾ (workarounds) ഉപയോഗിക്കാൻ നിർബന്ധിച്ചിരുന്ന ടൈമൗട്ട് പരിധിയെ Neon Functions ഇല്ലാതാക്കുന്നു. ഏജന്റിന് ചിന്തിക്കാനും സംസാരിക്കാനും ആവശ്യമായ സമയം റിക്വസ്റ്റ് തുറന്നുപിടിക്കാൻ അനുവദിക്കുന്നതിലൂടെ, സ്ട്രീമിംഗ് AI ഏജന്റുകളെ മറ്റ് സെർവ്ലെസ് ഫംഗ്ഷനുകളെപ്പോലെ തന്നെ എളുപ്പത്തിൽ ഡെപ്ലോയ് ചെയ്യാൻ Neon സഹായിക്കുന്നു.