← ब्लॉग

जब मॉडल मना कर देता है

7 नवंबर 2026 · Inside OnePress

इस हफ़्ते हमारी एरर रिपोर्टिंग ने अस्वीकारों की एक ऐसी श्रेणी को फ़्लैग किया जिसका हमने हिसाब नहीं रखा था: ऐतिहासिक या राजनीतिक रूप से संवेदनशील विषयों पर, मॉडल प्रोवाइडर का API completion के बजाय कंटेंट-पॉलिसी अस्वीकार के साथ जवाब देता है — भले ही अनुरोध साफ़ तौर पर वैध हो। अस्वीकार प्रोवाइडर की अपनी परत का है, हमारा नहीं, और यूज़र के सामने एक कच्चा एरर बॉडी आ जाता है ऐसी भाषा में जिसे वह लगभग निश्चित रूप से नहीं पढ़ता।

एक नहीं, दो फ़िल्टर

OnePress पर हर prompt सबसे पहले हमारी अपनी इनपुट स्क्रीनिंग से गुज़रता है — हमारे पेमेंट प्रोसेसर की एक अनुबंधगत शर्त, और एक उचित शर्त। ये अनुरोध उसे पास करते हैं, सही ढंग से: स्पष्ट रूप से वैध काम ठीक वही तरह का ट्रैफ़िक है जिसे बिना रुकावट गुज़रना चाहिए।

अस्वीकार एक दूसरे फ़िल्टर से आता है जिसे न हम नियंत्रित करते हैं, न यूज़र: मॉडल प्रोवाइडर की अपनी प्लेटफ़ॉर्म-स्तरीय कंटेंट स्क्रीनिंग, जो मॉडल के ऊपर बैठकर ट्रैफ़िक की जाँच करती है। राजनीतिक रूप से संवेदनशील विषयों को छूने वाले अनुरोध उस इलाक़े में आ जाते हैं जिसे किसी एक क्षेत्राधिकार की compliance परत असुरक्षित मानती है। वही अनुरोध हर दूसरी जगह बिल्कुल साधारण काम है।

उपयोगी खोज: फ़िल्टर मॉडल में नहीं है

यह वह हिस्सा है जिसने हमारी आर्किटेक्चर बदल दी। हमने अपना एक मिलता-जुलता अनुरोध — कंटेंट की वही श्रेणी — बिल्कुल उन्हीं मॉडल वेट्स को भेजा, लेकिन एक अलग होस्ट के ज़रिए परोसा गया: OpenRouter, जिसे अमेरिका के inference प्रोवाइडर्स पर रूट किया गया। वही वेट्स, prompt की वही श्रेणी। पूरा जनरेशन, कोई अस्वीकार नहीं।

यानी अस्वीकार कभी मॉडल में रहा ही नहीं। वह सर्विंग लेयर में रहता है — वह compliance आवरण जो कोई प्रोवाइडर अपने API के चारों ओर लगाता है। इसका मतलब है कि इसे साफ़ और खुले तरीके से रूट करके घुमाया जा सकता है, मॉडल को बिल्कुल छुए बिना।

हमने क्या बदला

  • अब हर मॉडल picker में दो बार मौजूद है। डिफ़ॉल्ट सेट OpenRouter के ज़रिए मुख्य भूमि चीन के बाहर के inference प्रोवाइडर्स पर रूट होता है; वही चारों मॉडल अपने होम APIs पर भी उपलब्ध रहते हैं, (CN) लेबल के साथ, उन लोगों के लिए जो उन्हीं को पसंद करते हैं।
  • OpenRouter अनुरोधों में एक upstream allowlist जाती है। हम अनुरोधों को नामित प्रोवाइडर्स पर पिन करते हैं और fallback बंद कर देते हैं — अगर पिन की गई सूची सेवा नहीं दे पाती, तो कॉल फ़िल्टर वाले रास्ते पर चुपचाप उतरने के बजाय साफ़ तौर पर विफल होती है।
  • प्रोवाइडर के अस्वीकार अब एक पढ़ने लायक संदेश देते हैं। कंटेंट- पॉलिसी से इनकार सादी भाषा में खुद को समझाता है और मॉडल picker की ओर इशारा करता है — अब ऐसी भाषा में कच्चे एरर ब्लॉब नहीं जिसे यूज़र पढ़ ही नहीं सकता। स्ट्रीम के बीच एम्बेड हुए एरर फ़्रेम, जो पहले निगल लिए जाते थे और खाली जवाब जैसे लगते थे, अब भी ठीक से सतह पर आते हैं।
  • बैकग्राउंड टास्क भी शिफ़्ट हुए। टाइटल और सारांश जनरेशन उसी कन्वर्सेशन कंटेंट को पढ़ता है, इसलिए वह भी उसी OpenRouter endpoint पर चलता है।

ईमानदार किनारे

दो समझौते जिनका नाम लेना ज़रूरी है। पहला, हर मॉडल के पास बिना-फ़िल्टर रास्ता नहीं है: Qwen का होस्टेड flash tier सिर्फ़ Alibaba के अपने upstream के पीछे मौजूद है, इसलिए Qwen के लिए OpenRouter स्लॉट open-weight 27B वैरिएंट चलाता है — एक अलग मॉडल, और हम इसे ईमानदारी से लेबल करते हैं। दूसरा, पिन करने का मतलब है कि पूरी तरह विफल allowlist फ़िल्टर वाले रास्ते पर उतरने के बजाय एरर लौटाती है। यह एक सोचा-समझा फ़ैसला है: दिखने वाली विफलता अनदेखे ठिकाने-बदलाव से बेहतर है।

बड़ा समझौता दार्शनिक है। किसी अंतरराष्ट्रीय प्रोडक्ट के लिए, डिफ़ॉल्ट रास्ते को शायद किसी एक क्षेत्राधिकार की संपादकीय लाइन विरासत में ही नहीं मिलनी चाहिए — इसलिए नहीं कि फ़िल्टर दुर्भावनापूर्ण है, बल्कि इसलिए कि "संवेदनशील" की उसकी परिभाषा किसी दूसरे दर्शक-वर्ग के लिए लिखी गई थी। डिफ़ॉल्ट अब प्रोवाइडर के नहीं, यूज़र के संदर्भ को मानते हैं।

Reading this and have thoughts?

Spot a mistake, disagree, or want a follow-up? Tell us — a human reads it.

Inside OnePress — the build log

More posts like this, plus the weekly AI digest, straight to your inbox.

Get the build log in your inbox →