সংক্ষিপ্ত উত্তর
না। Whizi-তে কোনো অফলাইন মোড নেই। একটা রেসপন্স তৈরি করতে Whizi অনুরোধের জন্য যুক্তিসঙ্গতভাবে প্রয়োজনীয় তথ্য OpenRouter আর একটা রুটেড মডেল প্রোভাইডারের কাছে, বা নির্বাচিত ফিচারের ব্যবহৃত অন্য একটা প্রোভাইডারের কাছে পাঠায়, তাই একটা উত্তর সবসময় Whizi ছাড়া অন্য একটা কোম্পানির সাথে একটা নেটওয়ার্ক রাউন্ড ট্রিপ। হোস্টিং, সিঙ্ক্রোনাইজড চ্যাট, মিডিয়া, অ্যাকাউন্ট স্টেট, ব্যবহারের সীমা, রিপোর্ট, আর নিরাপত্তা ও অপারেশনাল প্রসেসিং সবকিছু Cloudflare Workers, D1, R2 আর Durable Objects-এ চলে, যার মানে আপনি যে কথোপকথনে টাইপ করছেন সেটাও সার্ভারে থাকে।
মডেল তালিকা একই কারণে সার্ভার-সাইডে থাকে। পিকারটা Whizi ব্যাকএন্ড দিয়ে GET /api/models-এ সার্ভ করা হয়, আর ওয়েব আর মোবাইল ক্লায়েন্টে হার্ডকোড করা মডেল তালিকাগুলো শুধু অফলাইন ফলব্যাক, যখন ওই কলটা পৌঁছানো যায় না তখন ব্যবহৃত হয়। ফলব্যাক তালিকা শুধু পিকারটা আঁকে: নেটওয়ার্ক না থাকলে সেখানে একটা নাম দেখা মানে এই নয় যে তার পেছনে কিছু উত্তর দিতে পারে।
| সংযোগ প্রয়োজন এমন কী | আপনার ডিভাইসে কী ঘটে |
|---|---|
| প্রতিটা প্ল্যানে, প্রতিটা মডেল রিপ্লাই | আপনি যে থিম বেছে নিয়েছেন, লোকাল স্টোরেজে সেভ হয় আর পরের ভিজিটে রিস্টোর হয় |
| আপনার চ্যাট তালিকা আর যেকোনো কথোপকথন লোড করা | একটা ChatGPT বা Claude এক্সপোর্ট ফাইল পার্স করা, যা কিছু পোস্ট হওয়ার আগে ব্রাউজার পড়ে |
| একটা মেসেজ পাঠানো, একটা এডিট করা, ভার্সন বদলানো | একটা উত্তরের ফাইল কার্ড থেকে .xlsx বা .docx তৈরি করা |
| ওয়েব সার্চ, ভয়েস, ইমেজ জেনারেশন | নিচে বর্ণিত সাম্প্রতিক কথোপকথনের মোবাইল অ্যাপ ক্যাশ |
| একটা ফাইল আপলোড করা, আর সাইনড URL দিয়ে স্টোর করা মিডিয়া দেখা |
মোবাইল অ্যাপ ডিভাইসে যা রাখে
প্রাইভেসি পলিসি এ ব্যাপারে নির্দিষ্ট। মোবাইল অ্যাপ একটা সাইন-ইন করা বা গেস্ট ডিভাইসে সাম্প্রতিক 40টা পর্যন্ত কথোপকথনের একটা লোকাল ক্যাশ রাখতে পারে, আর সেই ক্যাশ আলাদা একটা ক্লাউড ব্যাকআপ নয়। এটা কীভাবে ক্লিয়ার হয়, আর অ্যাকাউন্টে বাকি সবকিছু কোথায় থাকে, তা আছে Whizi কোথায় ডেটা রাখে-তে।
সাম্প্রতিক কথোপকথনের একটা ক্যাশ কোনো অফলাইন রিডিং মোড নয়, আর কাজটা কোথায় হয় তাতে এটা কিছুই বদলায় না। কথোপকথন আর মেসেজ অ্যাকাউন্টে রাখা থাকে যতক্ষণ না আপনি সেগুলো বা অ্যাকাউন্টটা ডিলিট করেন, আর একটা নতুন উত্তর তবুও নেটওয়ার্কের মাধ্যমে একটা প্রোভাইডারের কাছে পৌঁছাতে হয়।
আপনার প্ল্যানও সার্ভারে রেজলভ হয়। বিলিং প্রতিটা আলাদা অ্যাকাউন্ট অনুযায়ী হয়, আর টিয়ার ঠিক একটা জায়গা থেকে সেই অ্যাকাউন্টের নিজস্ব সাবস্ক্রিপশন থেকে বের করা হয়। দুটো প্ল্যাটফর্ম কীভাবে একটা অ্যাকাউন্ট শেয়ার করে তা দেখুন মোবাইলে Whizi-তে।
উত্তরের মাঝখানে বিচ্ছিন্ন হওয়া একটা সংযোগ
জেনারেশন সার্ভারে প্রতিটা কথোপকথনের জন্য আলাদা একটা Durable Object-এ চলে, তাই স্ট্রিমের মাঝখানে ট্যাব বন্ধ করলে উত্তরটা মরে না আর রিপ্লাইটা ঠিকই সংরক্ষিত থাকে। একটা আবার খোলা ট্যাব বা দ্বিতীয় একটা ডিভাইস GET /api/conversations/:id/generate/active দিয়ে আগে থেকেই চলমান একটা জেনারেশনে আবার যুক্ত হতে পারে। ফিরে আসুন, কথোপকথনটা রিলোড করুন, আর যা সেভ হয়েছে তা পড়ুন।
একদম শুরুতে একটা সংকীর্ণ মুহূর্ত আছে যেখানে এটা প্রযোজ্য নয়। যদি আপস্ট্রিম কানেক্ট সম্পূর্ণ হওয়ার আগে ক্লায়েন্ট বিচ্ছিন্ন হয়ে যায়, সার্ভার Generation aborted before it started. রেকর্ড করে আর খালি বডি নিয়ে HTTP 408 উত্তর দেয়, তাই কোনো মডেলে কিছু পৌঁছায়নি।
থামানোটা ক্লায়েন্ট সাইড নয়, বরং সার্ভার অথরিটেটিভ: কোঅর্ডিনেটর প্রোভাইডার রিড বাতিল করে, আংশিক উত্তরটা সেভ করে, লক রিলিজ করে আর একটা অ্যানডেলিভার্ড টার্ন রিফান্ড করে। মাঝ-স্ট্রিমের সব স্ট্রিং আর প্রতিটার মানে কী তা আছে একটা মেসেজ পাঠানো যাবে না-তে।
কল সম্পূর্ণ না হলে আপনি যেসব স্ট্রিং দেখেন
Whizi একটা সাধারণ মেসেজের বদলে যেই কলটা চলছিল তার ব্যর্থতা দেখায়, তাই আপনি যে স্ট্রিং পান তা নির্ভর করে আপনি কী করছিলেন তার ওপর। প্রতিটা হুবহু উদ্ধৃত করা হয়েছে, যে শর্তের জন্য এটা নথিভুক্ত সেটাসহ।
| স্ট্রিং | নথিভুক্ত শর্ত | কোথায় এটা কভার করা হয়েছে |
|---|---|---|
Failed to send message. | সেন্ড ব্যর্থ হলে আর ব্যাকএন্ড কোনো মেসেজ না দিলে ওয়েবসাইট ফলব্যাক টোস্ট | মেসেজ পাঠানো যাচ্ছে না |
Could not load your chats. Please refresh to try again. | চ্যাট তালিকা লোড ব্যর্থ হলে দেখানো টোস্ট | মেসেজ পাঠানো যাচ্ছে না |
Failed to retrieve session token. | একটা চ্যাট তালিকা, চ্যাট লোড, ডিলিট, রিনেম বা আপলোড কলের আগে টোকেন ফেচ কিছু না দিলে থ্রো করা হয় | লগইন আর অ্যাকাউন্ট অ্যাক্সেস |
The import could not be finished. Check your connection and try again. | একটা ইমপোর্ট রানের সময় অন্য যেকোনো আপলোড ব্যর্থতা | চ্যাট ইমপোর্ট এরর |
Something went wrong. Please close and try again. | শেয়ার ডায়ালগের সাধারণ এরর, শুধু তখনই দেখানো হয় যখন ব্যর্থতার নিজস্ব কোনো মেসেজ থাকে না, যেমন একটা বিচ্ছিন্ন সংযোগ বা একটা HTML এরর পেজ | একটা কথোপকথন শেয়ার করা |
The realtime voice connection failed. | একটা ওয়েবসকেট এরর ইভেন্টে দেখানো হয় | ভয়েস মোড কাজ করছে না |
The realtime voice connection was closed. | সেটআপ শেষ হওয়ার পর ওয়েবসকেট বন্ধ হলে দেখানো হয় | ভয়েস মোড কাজ করছে না |
Connection error | একটা ব্যর্থ ভয়েস সেশনের জন্য ভয়েস ওভারলে স্টেট লেবেল | ভয়েস মোড কাজ করছে না |
That didn't send. Check your connection and try again. | অন্য প্রতিটা ব্যর্থতার জন্য ফিডব্যাক ফলব্যাক | ট্রাবলশুটিং |
ভয়েসের একটা ব্যাখ্যা দরকার, কারণ এর আর্কিটেকচার স্বাধীনতার মতো পড়া যায়, কিন্তু তা নয়। ওয়ার্কার একটা স্বল্পস্থায়ী টোকেন তৈরি করে আর ব্রাউজার সরাসরি Google-এ একটা WebSocket খোলে, তাই কোনো অডিও কখনো Whizi ব্যাকএন্ড সার্ভারের মধ্য দিয়ে যায় না। এটা একটা প্রাইভেসি বৈশিষ্ট্য, অফলাইন বৈশিষ্ট্য নয়: Google-এর সাথে সকেটটা তবুও একটা সকেট, আর সেশন টোকেন যা এটা খোলে তা ওয়ার্কার তৈরি করে।
সিগন্যাল হারানোর আগে কী করবেন
এগুলোর কোনোটাই আপনাকে সংযোগ ছাড়া একটা কার্যকর মডেল দেয় না। এগুলো আপনার কনটেন্ট ছাড়া আটকে না যাওয়া নিয়ে।
আপনার ডেটা সাথে নিয়ে যান। GET /api/account/export অ্যাকাউন্ট ডেটাকে একটা ডাউনলোডযোগ্য JSON ফাইল হিসেবে ফেরত দেয়, যা Settings-এ Account-এর নিচে Export Data হিসেবে পাওয়া যায়। অফলাইনে যে সতর্কতাটা গুরুত্বপূর্ণ: মিডিয়া ইনলাইন বাইটের বদলে মেটাডেটা আর একটা সাইনড URL হিসেবে এক্সপোর্ট হয়, তাই JSON রেকর্ডটা রাখে যখন ইমেজটা নিজে তবুও ফেচ করা দরকার। অ্যাকাউন্টে কী থাকে তা Whizi কোথায় ডেটা রাখে-তে দেওয়া আছে।
সিগন্যাল থাকতে থাকতে একটা উত্তরকে একটা ফাইল হিসেবে বের করুন। একটা চ্যাট উত্তর একটা ফেন্সড ব্লক আউটপুট দিতে পারে যা ওয়েবসাইট একটা ফাইল কার্ড হিসেবে রেন্ডার করে আর ব্রাউজারে একটা আসল .xlsx বা .docx-এ পরিণত করে। বিল্ডটা লোকাল, কিন্তু যে উত্তর এটা তৈরি করেছে তা লোকাল ছিল না।
পথে না করে, নামার পর ইমপোর্ট করুন। এক্সপোর্ট ফাইলটা বেছে নেওয়া লোকাল কাজ, কিন্তু আপলোডটা তা নয়, যদিও এর মাঝখানে সংযোগ বিচ্ছিন্ন হলে কোনো ক্ষতি হয় না, কারণ প্রতিটা কথোপকথন অ্যাকাউন্ট, সোর্স আর সোর্স আইডি দিয়ে কী করা থাকে আর একবারই জমা হয়। ব্যর্থতার স্ট্রিংগুলো আছে চ্যাট ইমপোর্ট এরর-এ।
- Whizi-তে কোনো অফলাইন মোড নেই আর কোনো অন-ডিভাইস উত্তর পথ নেই
- প্রতিটা রিপ্লাই একটা রুটেড মডেল প্রোভাইডারের কাছে একটা নেটওয়ার্ক রিকোয়েস্ট
- মডেল পিকার ব্যাকএন্ড দিয়ে সার্ভ করা হয়, আর বিল্ট-ইন তালিকাগুলো শুধু ফলব্যাক
- মোবাইল অ্যাপ সাম্প্রতিক 40টা পর্যন্ত কথোপকথন ক্যাশ করতে পারে, আর সেই ক্যাশ আলাদা একটা ক্লাউড ব্যাকআপ নয়
- আপনার টিয়ার সার্ভারে আপনার নিজের অ্যাকাউন্টের সাবস্ক্রিপশন থেকে বের করা হয়
- একটা বিচ্ছিন্ন ক্লায়েন্টেও রিপ্লাই টিকে থাকে: জেনারেশন একটা Durable Object-এ চলতে থাকে
- ভ্রমণের আগে Settings-এ Account-এর নিচ থেকে আপনার অ্যাকাউন্ট JSON হিসেবে এক্সপোর্ট করুন
- একটা এক্সপোর্টে মিডিয়া একটা সাইনড URL, তাই এটা পরে তবুও ফেচ করা দরকার
প্রায়ই জিজ্ঞাসিত প্রশ্ন
ওয়াইফাই ছাড়া একটা প্লেনে Whizi কি কাজ করে?
না। প্রতিটা রিপ্লাই নেটওয়ার্কের মাধ্যমে পৌঁছানো একটা মডেল প্রোভাইডার তৈরি করে, তাই সংযোগ না থাকলে কোনো মডেলের পথ নেই আর আপনার চ্যাট তালিকার কোনো পথ নেই।
আমার ফোন জেনারেশনের মাঝখানে সিগন্যাল হারিয়েছে। আমি কি সাথে সাথেই আমার ল্যাপটপে একটা নতুন শুরু করতে পারি?
সবসময় না, কারণ একটা সময়ে প্রতিটা অ্যাকাউন্টে শুধু একটা জেনারেশন চলতে পারে। পার-ইউজার লক তবুও ধরা থাকলে একটা দ্বিতীয় চেষ্টা "Generation already in progress. Please stop it or wait for it to finish." বলে প্রত্যাখ্যাত হয়। লকটা স্থায়ী নয়: হোল্ডারকে অনাথ বা স্থবির বিবেচনা করা হলেই এটা ছিনিয়ে নেওয়া যায়, আর মেয়াদোত্তীর্ণ লকগুলো একটা শিডিউল অনুযায়ী মুছে ফেলা হয়।
আমি কি এয়ারপ্লেন মোডে আমার ফোনে একটা পুরনো কথোপকথন স্ক্রল করতে পারি?
শুধু মোবাইল অ্যাপ যা ক্যাশ করেছে তার মধ্যে, আর ইমেজ সেখানেও একটা আলাদা বিষয়। জেনারেট করা ইমেজ সার্ভার সাইডে সংরক্ষিত থাকে আর সাইনড URL দিয়ে ফেরত সার্ভ করা হয়, তাই একটা পুরনো থ্রেডের একটা ছবি ডিভাইসে রাখার বদলে আপনি যখন সেটার দিকে তাকান ঠিক তখনই ফেচ করা হয়।
মোবাইলে একটা গেস্ট অ্যাকাউন্ট কি এর কোনোটা বদলায়?
না। প্রাইভেসি পলিসি যে লোকাল ক্যাশ নথিভুক্ত করে তা সাইন-ইন করা বা গেস্ট ডিভাইস উভয়কেই কভার করে। গেস্ট ক্রেডেনশিয়ালটা নিজে ডিভাইসে সংরক্ষিত থাকে, কিন্তু Whizi একটা ওয়ান-ওয়ে ডেরাইভড আইডেন্টিফায়ার সংরক্ষণ করে যাতে এটা গেস্ট প্রোফাইল চিনতে পারে, ডেটা সিঙ্ক্রোনাইজ করতে পারে, সাবস্ক্রিপশন অ্যাক্সেস ভেরিফাই করতে পারে আর পরে সেই ডেটাকে একটা অ্যাকাউন্টের সাথে লিংক করতে পারে, যা সবই সার্ভার-সাইড অপারেশন। অ্যাকাউন্ট এক্সপোর্ট গেস্ট সেশনের জন্যও কাজ করে, কারণ গেস্টরা আসল চ্যাট আর মেমোরি রাখে যা তারা ডিভাইসটা চলে যাওয়ার আগে বের করে নিতে চাইতে পারে।
একটা এক্সপোর্টের মধ্যে থাকা মিডিয়া লিংকগুলো কতক্ষণ কাজ করতে থাকে?
আপলোড করা অ্যাটাচমেন্ট আর জেনারেট করা মিডিয়া সর্বোচ্চ 30 দিন পর মেয়াদোত্তীর্ণ হওয়ার জন্য কনফিগার করা আছে, আর আপনি নিজে বা অ্যাকাউন্ট ডিলিশনের সময় এটা আরও আগে ডিলিট হতে পারে। একটা অবজেক্ট তার রিটেনশন উইন্ডো পার হয়ে গেলে রিকোয়েস্টটা বাইট ফেরত দেওয়ার বদলে "Media has expired.", HTTP 404 media_expired উত্তর দেয়। যতক্ষণ আপনার সংযোগ আছে ততক্ষণ যা রাখতে চান তা ফেচ করে নিন।