Neon Functions এখন সীমাহীন মেয়াদের স্ট্রিমিং কানেকশন সমর্থন করে, যা AI এজেন্টদের কয়েক সেকেন্ড, কয়েক মিনিট বা তার বেশি সময় ধরে একটি লাইভ চ্যানেল খোলা রাখতে সাহায্য করে। এটি সেই টাইমআউট সীমা অতিক্রম করে না যা বেশিরভাগ সার্ভারলেস ওয়ার্কলোডকে বন্ধ করে দেয়। এই পরিবর্তনটি চ্যাট-স্টাইল অ্যাসিস্ট্যান্ট বা টুল-ব্যবহারকারী বট তৈরির জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ একটি বিচ্ছিন্ন স্ট্রিমিং কথোপকথন থামিয়ে দেয় এবং ব্যবহারকারীর অভিজ্ঞতা নষ্ট করে।
কেন সার্ভারলেস এবং AI এজেন্টদের মধ্যে অমিল ছিল
বেশিরভাগ সার্ভারলেস প্ল্যাটফর্ম দ্রুত সম্পন্ন করা এবং ভুলে যাওয়ার মতো (fire-and-forget) কাজের জন্য তৈরি করা হয়েছে। রিসোর্সগুলোকে অনুমানযোগ্য রাখতে তারা কঠোর এক্সিকিউশন ক্যাপ প্রয়োগ করে—যা ফ্রি টিয়ারে প্রায়ই ১০ সেকেন্ড এবং পেইড প্ল্যানে ৬০ সেকেন্ড হয়। অন্যদিকে, একটি AI এজেন্ট চিন্তা করতে, এক্সটার্নাল টুল কল করতে এবং টোকেন জেনারেট করার সময় ব্যয় করে। এই "চিন্তা করার" পর্যায়টি প্রায়শই কয়েক দশ সেকেন্ড পর্যন্ত স্থায়ী হতে পারে এবং মডেলটি আউটপুট দেওয়া পর্যন্ত টোকেন স্ট্রিম চলতে পারে। যখন প্ল্যাটফর্মের টাইমার শেষ হয়ে যায়, তখন এটি কানেকশনটি বন্ধ করে দেয় এবং ক্লায়েন্ট একটি বিচ্ছিন্ন স্ট্রিমিং দেখতে পায়।
Neon-এর সমাধান: ডিফল্টভাবে দীর্ঘস্থায়ী স্ট্রিমিং
Neon Functions এই চিত্রটি বদলে দেয়। কোনো বিশেষ কনফিগারেশন ছাড়াই একটি ফাংশন কল অনির্দিষ্টকাল খোলা থাকতে পারে, যা WebSockets বা Server-Sent Events (SSE)-এর মাধ্যমে ডেটা সরবরাহ করে। প্ল্যাটফর্মটি একটি দীর্ঘ স্ট্রিমিংকে একটি সাধারণ রিকোয়েস্ট হিসেবে বিবেচনা করে, ফলে ডেভেলপাররা শুধুমাত্র স্ট্রিম জেনারেট করার লজিক লেখেন এবং বাকিটা Neon-এর ওপর ছেড়ে দেন।
একটি সাম্প্রতিক পরীক্ষায়, দুটি এন্ডপয়েন্ট এই আচরণ প্রদর্শন করেছে:
- Heartbeat endpoint – ফাংশনটি ৯০ সেকেন্ড ধরে প্রতি সেকেন্ডে একবার একটি “tick” নির্গত করেছে। সাধারণ সার্ভারলেস টিয়ারগুলো ১০ বা ৬০ সেকেন্ডের পর রিকোয়েস্টটি বন্ধ করে দিত; কিন্তু Neon ফাংশনটি নিজে থেকে শেষ না হওয়া পর্যন্ত কানেকশনটি চালু রেখেছে।
- Token-relay endpoint – ফাংশনটি প্রতিটি টোকেন তৈরি হওয়ার সাথে সাথে একটি AI মডেল থেকে ক্লায়েন্টে টোকেন স্ট্রিমিং করেছে। ব্যবহারকারীরা পুরো টেক্সট ব্লকের জন্য অপেক্ষা না করে শব্দে শব্দে উত্তরটি আসতে দেখেছেন।
উভয় উদাহরণেই ক্লায়েন্ট থেকে মাত্র একটি রিকোয়েস্টের প্রয়োজন ছিল; কোনো পোলিং বা কিপ-অ্যালাইভ ট্রিকস প্রয়োজন ছিল না।
কারা উপকৃত হবে এবং কাদের সতর্ক থাকা প্রয়োজন
যারা কনভারসেশনাল অ্যাসিস্ট্যান্ট, টুল-ব্যবহারকারী এজেন্ট বা এমন কোনো পরিষেবা তৈরি করছেন যার পর্যায়ক্রমিক ফলাফল (incremental results) প্রদান করা প্রয়োজন, তারা তাৎক্ষণিক সুবিধা পাবেন: টাইমআউট সমস্যাটি আর থাকবে না। এর ফলে কোড হবে সহজতর, ল্যাটেন্সি কমবে এবং ব্যবহারকারীর অভিজ্ঞতা আরও মসৃণ হবে।
কিছু বিষয় লক্ষ্য রাখা প্রয়োজন:
- Request-only model – Neon Functions এমন স্ট্রিমিং হ্যান্ডেল করে যা একটি সক্রিয় রিকোয়েস্টের সাথে যুক্ত থাকে। যে ব্যাকগ্রাউন্ড জবগুলোকে রিকোয়েস্টের চেয়ে বেশি সময় ধরে চলতে হবে, তাদের জন্য এখনও Inngest বা অনুরূপ কোনো ওয়ার্কফ্লো ইঞ্জিনের মতো আলাদা শিডিউলার প্রয়োজন।
- Cold starts – নিষ্ক্রিয় থাকা ফাংশনগুলো স্কেল করে জিরো (zero) করা যেতে পারে, তাই পরবর্তী রিকোয়েস্টের ক্ষেত্রে কোল্ড-স্টার্ট বিলম্ব হতে পারে। একটি সক্রিয় স্ট্রিমিং স্কেলিং ডাউন হওয়া রোধ করে, তবে নিষ্ক্রিয়তার পর প্রথম রিকোয়েস্টের ক্ষেত্রে স্টার্ট-আপ বিলম্ব বা খরচ দিতেই হবে।
পরবর্তীতে কী লক্ষ্য রাখা উচিত
মূল কথা হলো: Neon Functions সেই টাইমআউট সিলিং বা বাধাটি সরিয়ে দেয় যা দীর্ঘকাল ধরে AI ডেভেলপারদের বিকল্প ব্যবস্থা (workarounds) খুঁজতে বাধ্য করছিল। এজেন্ট যতক্ষণ চিন্তা ও কথা বলতে চায় ততক্ষণ রিকোয়েস্টটি খোলা রাখার সুবিধা দিয়ে, Neon স্ট্রিমিং AI এজেন্ট ডেপ্লয় করাকে অন্য যেকোনো সার্ভারলেস ফাংশনের মতোই সহজ করে তুলেছে।
