Files
OmniRoute/docs/i18n/hi/docs/compression/COMPRESSION_GUIDE.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

56 KiB
Raw Blame History

🗜️ Prompt Compression Guide — OmniRoute (हिन्दी)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


योग्य कॉन्टेक्स्ट पर स्वचालित रूप से 15-95% बचाएँ। त्वरित अवलोकन के लिए, README कम्प्रेशन अनुभाग देखें।

अवलोकन

OmniRoute एक मॉड्यूलर प्रॉम्प्ट कम्प्रेशन पाइपलाइन लागू करता है, जो अनुरोधों के अपस्ट्रीम प्रदाताओं तक पहुँचने से पहले ही सक्रिय रूप से चलती है। इसका अर्थ है कि आपकी टोकन बचत पारदर्शी रूप से होती है — आपके वर्कफ़्लो में किसी बदलाव की आवश्यकता नहीं है।

क्लाइंट अनुरोध
  → कम्प्रेशन रणनीति चयनकर्ता
    → कॉम्बो ओवरराइड? → कॉम्बो सेटिंग का उपयोग करें
    → स्वतः-ट्रिगर थ्रेशोल्ड? → ऑटो मोड का उपयोग करें
    → डिफ़ॉल्ट मोड? → ग्लोबल सेटिंग का उपयोग करें
    → बंद? → कम्प्रेशन छोड़ें
  → चयनित कम्प्रेशन मोड
    → बंद: कोई कम्प्रेशन नहीं
    → लाइट: सुरक्षित व्हाइटस्पेस/फ़ॉर्मेटिंग सफ़ाई (~15%)
    → स्टैंडर्ड: केवमैन-शैली में अनावश्यक शब्द हटाना (~30%)
    → एग्रेसिव: हिस्ट्री एजिंग + सारांशीकरण (~50%)
    → अल्ट्रा: ह्यूरिस्टिक प्रूनिंग + कोड-ब्लॉक थिनिंग (~75%)
    → RTK: कमांड-सजग टर्मिनल/टूल-आउटपुट फ़िल्टरिंग (60-90% अपस्ट्रीम सीमा)
    → स्टैक्ड: क्रमबद्ध मल्टी-इंजन पाइपलाइन, सामान्यतः पहले RTK, फिर Caveman (78-95% योग्य सीमा)
  → कम्प्रेस किया गया अनुरोध → प्रदाता

कम्प्रेशन मोड

बंद

कोई कम्प्रेशन लागू नहीं किया जाता। सभी संदेश बिना बदलाव के आगे भेजे जाते हैं।

लाइट मोड (~15% बचत, <1ms विलंबता)

सबसे सुरक्षित मोड — अर्थ में कोई बदलाव नहीं, केवल फ़ॉर्मेटिंग की सफ़ाई:

तकनीक विवरण
collapseWhitespace लगातार खाली पंक्तियों और अंतिम स्पेस को मिलाता है
dedupSystemPrompt डुप्लिकेट सिस्टम संदेश हटाता है
compressToolResults विस्तृत टूल/फ़ंक्शन आउटपुट कम्प्रेस करता है
removeRedundantContent दोहराए गए निर्देश हटाता है
replaceImageUrls base64 इमेज डेटा URI को छोटा करता है

इनके लिए सर्वोत्तम: हमेशा चालू उपयोग, सुरक्षा-महत्वपूर्ण वर्कफ़्लो।

स्टैंडर्ड मोड (~30% बचत)

Caveman से प्रेरित — अर्थ बनाए रखते हुए अनावश्यक शब्द और विस्तृत वाक्यांश हटाता है:

  • अनावश्यक शब्द हटाता है ("कृपया", "मुझे लगता है", "मूल रूप से", "वास्तव में")
  • विस्तृत वाक्यांश संक्षिप्त करता है ("करने के लिए" → "के लिए", "के परिणामस्वरूप" → "क्योंकि")
  • विनम्र संकोचपूर्ण भाषा हटाता है ("क्या आपको आपत्ति होगी...", "यदि आप संभवतः...")
  • कोडिंग प्रॉम्प्ट के लिए अनुकूलित 30+ regex नियम

इनके लिए सर्वोत्तम: दैनिक कोडिंग वर्कफ़्लो, लागत के प्रति सजग टीमें।

एग्रेसिव मोड (~50% बचत)

लंबे सत्रों के लिए स्मार्ट हिस्ट्री प्रबंधन:

  • संदेश एजिंग — पुराने संदेश क्रमशः अधिक कम्प्रेस किए जाते हैं
  • टूल परिणाम सारांशीकरण — लंबे टूल आउटपुट को सारांश से बदलता है
  • संरचनात्मक अखंडता गार्ड — सुनिश्चित करता है कि tool_use + tool_result युग्म संगत रहें
  • कॉन्टेक्स्ट विंडो जागरूकता — प्रत्येक मॉडल की टोकन सीमा का पालन करता है

इनके लिए सर्वोत्तम: लंबे डिबगिंग सत्र, बड़े कोडबेस।

अल्ट्रा मोड (~75% बचत)

टोकन-महत्वपूर्ण परिदृश्यों के लिए अधिकतम कम्प्रेशन:

  • ह्यूरिस्टिक प्रूनिंग — प्रासंगिकता थ्रेशोल्ड से नीचे के संदेश हटाता है
  • कोड ब्लॉक थिनिंग — दोहराव वाले कोड उदाहरणों को कम्प्रेस करता है
  • बाइनरी सर्च ट्रंकेशन — कॉन्टेक्स्ट विंडो के लिए इष्टतम कट-पॉइंट खोजता है
  • एग्रेसिव मोड की सभी सुविधाएँ शामिल हैं

इनके लिए सर्वोत्तम: जब आप बार-बार कॉन्टेक्स्ट सीमा तक पहुँच रहे हों।

RTK मोड (60-90% अपस्ट्रीम सीमा)

RTK मोड कोडिंग-एजेंट सत्रों में दिखाई देने वाले विस्तृत टूल आउटपुट के लिए अनुकूलित है:

  • git status, git diff, git log, टेस्ट रनर, TypeScript/Vite/Webpack बिल्ड, ESLint/Biome/Prettier, npm ऑडिट/इंस्टॉल, Docker लॉग, इंफ़्रा आउटपुट और सामान्य शेल आउटपुट जैसे कमांड/आउटपुट वर्गों का पता लगाता है
  • open-sse/services/compression/engines/rtk/filters/ से JSON फ़िल्टर पैक लागू करता है
  • प्रोजेक्ट या ग्लोबल filters.toml फ़ाइलों से RTK TOML स्कीमा v1 फ़िल्टर इम्पोर्ट करता है, जिसमें इनलाइन-टेस्ट सत्यापन और प्रोजेक्ट फ़ाइलों के लिए ट्रस्ट-गेटिंग शामिल है
  • इनलाइन सत्यापन नमूनों के साथ 49 बिल्ट-इन फ़िल्टर प्रदान करता है
  • ANSI कंट्रोल सीक्वेंस, प्रोग्रेस बार, दोहराई गई पंक्तियाँ और गैर-कार्रवाई योग्य शोर हटाता है
  • विफलताओं, त्रुटियों, चेतावनियों, बदली हुई फ़ाइलों, सारांशों और लंबे आउटपुट के अंतिम भाग को संरक्षित रखता है
  • ट्रस्ट-गेटेड प्रोजेक्ट फ़िल्टर, ग्लोबल फ़िल्टर और वैकल्पिक रूप से संशोधित रॉ-आउटपुट पुनर्प्राप्ति का समर्थन करता है

इनके लिए सर्वोत्तम: शेल, बिल्ड, टेस्ट, git, grep और फ़ाइल-आउटपुट ट्रांसक्रिप्ट वाले एजेंट सत्र।

स्टैक्ड मोड (78-95% योग्य सीमा)

स्टैक्ड मोड कई कम्प्रेशन इंजनों को एक नियतात्मक क्रम में चलाता है। डिफ़ॉल्ट पाइपलाइन है:

RTK -> Caveman

यह क्रम पहले टर्मिनल/टूल आउटपुट को संक्षिप्त रखता है, फिर शेष प्राकृतिक-भाषा प्रॉम्प्ट पर Caveman सिमैंटिक संक्षेपण लागू करता है। स्टैक्ड पाइपलाइन को ग्लोबल रूप से या रूटिंग कॉम्बो को असाइन किए गए कम्प्रेशन कॉम्बो के माध्यम से कॉन्फ़िगर किया जा सकता है।

इनके लिए सर्वोत्तम: बड़े टूल लॉग के साथ मानवीय निर्देशों या असिस्टेंट सारांशों वाला मिश्रित कॉन्टेक्स्ट।


अपस्ट्रीम बचत का गणित

OmniRoute दो स्रोतों से होने वाली कम्प्रेशन बचत का दस्तावेज़ीकरण करता है: अपस्ट्रीम प्रोजेक्ट बेंचमार्क और OmniRoute का अपना इंजन संयोजन।

स्रोत यहाँ उपयोग की गई अपस्ट्रीम README संख्या
Caveman ~75% कम आउटपुट टोकन, 65% बेंचमार्क औसत आउटपुट बचत, 22-87% सीमा, और ~46% इनपुट कम्प्रेशन टूल
RTK कमांड-आउटपुट पर 60-90% बचत; नमूना सत्र में ~118,000 -> ~23,900 टोकन, या 79.7% बचत (~80%)

ओवरलैप होने वाले टूल/कॉन्टेक्स्ट पेलोड के लिए, डिफ़ॉल्ट OmniRoute कॉम्बो इंजनों को क्रमिक रूप से लागू करता है:

RTK -> Caveman

संयुक्त बचत गुणात्मक होती है, योगात्मक नहीं:

combined = 1 - (1 - RTK savings) * (1 - Caveman input savings)
average  = 1 - (1 - 0.80) * (1 - 0.46) = 89.2%
range    = 1 - (1 - 0.60..0.90) * (1 - 0.46) = 78.4-94.6%

वह 78-95% संख्या तब लागू होती है, जब RTK और Caveman दोनों समान इनपुट/कॉन्टेक्स्ट पेलोड को कम कर सकते हैं। Caveman का रिस्पॉन्स आउटपुट मोड अलग है: सक्षम होने पर, Caveman की अपनी आउटपुट बचत (65% औसत, ~75% प्रमुख आँकड़ा, 22-87% सीमा) का उपयोग करें। कुल बिलिंग बचत आपके प्रॉम्प्ट/आउटपुट मिश्रण पर निर्भर करती है।

"पात्र" होने का वास्तव में क्या अर्थ है

15-95% की प्रमुख सीमा वास्तविक है, लेकिन यह केवल अनावश्यक रूप से दोहराई गई या अत्यधिक विस्तृत सामग्री पर लागू होती है — बार-बार आने वाली त्रुटि पंक्तियाँ, एक बिल्ड लॉग जो वही चेतावनी बार-बार दिखाता है, या अत्यधिक बड़ा grep/फ़ाइल-रीड डंप। इसका अर्थ यह नहीं है कि प्रत्येक अनुरोध में इतनी बचत होगी।

प्रायोगिक रूप से सत्यापित (tests/unit/compression/stacked-compression-tool-result-savings.test.ts): 300 समान त्रुटि पंक्तियों वाले Anthropic-आकार के tool_result ब्लॉक पर एक stacked (RTK + Caveman) रन ने 95.93% टोकन बचत / 96.26% वर्ण बचत दी — जो विज्ञापित सीमा के बिल्कुल भीतर है। लेकिन सामान्य, गैर-दोहराव वाले टूल आउटपुट (एक साफ़ grep मिलान सूची, एक छोटा फ़ाइल रीड, सामान्य संवादात्मक टेक्स्ट) पर वही पाइपलाइन सही ढंग से लगभग शून्य बचत देती है, क्योंकि हटाने के लिए कुछ भी दोहराव वाला नहीं होता और validateCompression() (validation.ts) ऐसे पुनर्लेखन को भेजने से मना कर देता है जो कोड ब्लॉक, URLs, शीर्षक, संस्करण, या ALL-CAPS स्थिरांक पहचानकर्ताओं को हटा या बदल सकता हो।

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


टोकन बचत का दृश्यांकन

कम्प्रेशन के बिना: 47K टोकन LLM को भेजे गए
Lite के साथ:       40K टोकन भेजे गए          (15% बचत — सुरक्षित, हमेशा चालू)
Standard के साथ:   33K टोकन भेजे गए          (30% बचत — caveman-speak नियम)
Aggressive के साथ: 24K टोकन भेजे गए          (50% बचत — एजिंग + सारांश)
Ultra के साथ:      12K टोकन भेजे गए          (75% बचत — ह्यूरिस्टिक प्रूनिंग)
RTK के साथ:        19K-5K टोकन भेजे गए       (कमांड/टूल आउटपुट पर 60-90% बचत)
Stacked के साथ:    10K-2.5K टोकन भेजे गए     (पात्र RTK+Caveman सामग्री पर 78-95% सीमा)

कॉन्फ़िगरेशन

डैशबोर्ड

Dashboard → Context & Cache पर जाएँ:

  • Caveman — मोड चयन, भाषा पैक, पूर्वावलोकन और वैश्विक डिफ़ॉल्ट
  • RTK — कमांड-फ़िल्टर पूर्वावलोकन, RTK सुरक्षा सेटिंग्स और फ़िल्टर कैटलॉग
  • Compression Combos — रूटिंग कॉम्बो को असाइन की गई नामित इंजन पाइपलाइन
  • Auto-Trigger Threshold — टोकन संख्या के थ्रेशोल्ड से अधिक होने पर संपीड़न को स्वचालित रूप से सक्रिय करें

प्रति-कॉम्बो ओवरराइड

Dashboard → Context & Cache → Compression Combos में, किसी रूटिंग कॉम्बो को एक संपीड़न कॉम्बो असाइन करें:

Combo: "free-tier-fallback"
  Compression Combo: "coding-agent-stack"
  Pipeline: RTK -> Caveman
  Targets:
    1. if/kimi-k2.7-code
    2. if/qwen3.8-max-preview

इससे आप निःशुल्क/कोडिंग प्रदाताओं पर स्टैक्ड संपीड़न का उपयोग कर सकते हैं, जबकि सशुल्क सब्सक्रिप्शन पर Lite मोड बनाए रख सकते हैं।

यह "Per-Combo Override" असाइनमेंट routing-combo compression mode ओवरराइड (Default/Off/Lite/Standard/Aggressive/Ultra) से अलग नियंत्रण है — वह ओवरराइड किसी नामित compression-combo पाइपलाइन का चयन नहीं करता; वह केवल resolveCompressionPlan द्वारा उपयोग किए जाने वाले compressionMode फ़ील्ड को सेट करता है। इसे कॉम्बो कार्ड (Dashboard → Combos) पर या, #6760 से, Dashboard → Context & Cache → Compression Combos की "Assign to routing" सूची में प्रत्येक रूटिंग कॉम्बो के लिए, ऊपर प्रलेखित पाइपलाइन-असाइनमेंट चेकबॉक्स के ठीक बगल में सेट किया जा सकता है। दोनों इंटरफ़ेस एक ही PUT /api/combos/{id} एंडपॉइंट के माध्यम से सेटिंग्स को स्थायी बनाते हैं।

प्रति-अनुरोध ओवरराइड

किसी एक अनुरोध के लिए संपीड़न योजना को ओवरराइड करने हेतु x-omniroute-compression अनुरोध हेडर भेजें। इसकी प्राथमिकता सबसे अधिक है — यह रूटिंग-कॉम्बो ओवरराइड, सक्रिय प्रोफ़ाइल, ऑटो-ट्रिगर और पैनल के Default पर प्राथमिकता लेता है। अज्ञात मानों को अनदेखा किया जाता है (अनुरोध कभी अस्वीकार नहीं होता) और वैश्विक मास्टर स्विच फिर भी सभी चीज़ों को नियंत्रित करता है: जब संपीड़न वैश्विक रूप से बंद होता है, तो हेडर इसे चालू नहीं कर सकता। मान:

मान प्रभाव
off इस अनुरोध के लिए कोई संपीड़न नहीं।
default पैनल से प्राप्त Default प्रोफ़ाइल (सक्रिय प्रोफ़ाइल को अनदेखा करता है)।
engine:<id> सक्षम होने पर एकल इंजन, जैसे engine:rtk
<combo> एक नामित कॉम्बो, जिसका मिलान पहले नाम (केस-असंवेदी) और फिर id से किया जाता है।

लागू की गई योजना को X-OmniRoute-Compression: <mode>; source=<source> प्रतिक्रिया हेडर में वापस भेजा जाता है, जहाँ <source>, request-header, routing-override, active-profile, auto-trigger, default या off में से एक होता है।

API

# संपीड़न सेटिंग्स प्राप्त करें
curl http://localhost:20128/api/settings/compression

# संपीड़न सेटिंग्स अपडेट करें
curl -X PUT http://localhost:20128/api/settings/compression \
  -H "Content-Type: application/json" \
  -d '{"defaultMode":"stacked","autoTriggerMode":"stacked","autoTriggerTokens":32000}'

# किसी विशिष्ट RTK/stacked पेलोड का पूर्वावलोकन करें
curl -X POST http://localhost:20128/api/compression/preview \
  -H "Content-Type: application/json" \
  -d '{"mode":"rtk","messages":[{"role":"tool","content":"npm test output here"}]}'

# RTK फ़िल्टर पैक सूचीबद्ध करें
curl http://localhost:20128/api/context/rtk/filters

# वैकल्पिक कमांड मेटाडेटा के साथ सीधे RTK का परीक्षण करें
curl -X POST http://localhost:20128/api/context/rtk/test \
  -H "Content-Type: application/json" \
  -d '{"command":"npm test","text":"FAIL tests/example.test.ts\nError: boom"}'

क्या सुरक्षित रखा जाता है

कम्प्रेशन इंजन हमेशा इन्हें सुरक्षित रखता है:

  • कोड ब्लॉक (फ़ेंस्ड और इनलाइन)
  • URLs और फ़ाइल पाथ
  • JSON संरचनाएँ और संरचित डेटा
  • आइडेंटिफ़ायर और सुरक्षित तकनीकी टोकन
  • गणितीय व्यंजक
  • टूल/फ़ंक्शन कॉल परिभाषाएँ
  • सिस्टम प्रॉम्प्ट (लाइट मोड में)

RTK रॉ-आउटपुट रिकवरी किसी भी चीज़ को स्थायी रूप से संग्रहीत करने से पहले सामान्य API कुंजियों, बियरर टोकन, Slack टोकन, AWS एक्सेस कुंजियों, पासवर्ड, टोकन और सीक्रेट्स को रिडैक्ट करती है।


कम्प्रेशन आँकड़े

प्रत्येक कम्प्रेस किए गए अनुरोध के आँकड़े सर्वर लॉग में शामिल होते हैं:

{
  "originalTokens": 47200,
  "compressedTokens": 40120,
  "savingsPercent": 15.0,
  "techniquesUsed": ["collapseWhitespace", "dedupSystemPrompt"],
  "mode": "lite",
  "engine": "caveman",
  "compressionComboId": "coding-agent-stack",
  "durationMs": 0.8,
  "rtkRawOutputPointers": []
}

चरण रोडमैप

चरण मोड स्थिति
चरण 1 बंद, लाइट जारी किया गया
चरण 2 स्टैंडर्ड, एग्रेसिव, अल्ट्रा जारी किया गया
चरण 3 RTK, स्टैक्ड, कम्प्रेशन कॉम्बो जारी किया गया
चरण 4 आउटपुट शैलियाँ, SLM-स्तरीय अल्ट्रा, eval हार्नेस जारी किया गया
चरण 4C अनुकूली कॉन्टेक्स्ट-बजट ("डायल") — कम्प्यूट इंजन + API (PUT /api/settings/compression पर contextBudget) + डैशबोर्ड मोड/नीति नियंत्रण जारी किया गया

आभार

स्टैंडर्ड मोड कम्प्रेशन नियम JuliusBrussee ( 51K+) के Caveman से प्रेरित हैं — वायरल "जब थोड़े टोकन से काम हो जाए तो बहुत सारे टोकन क्यों इस्तेमाल करें" प्रोजेक्ट। Caveman ~75% कम आउटपुट टोकन, बेंचमार्क पर औसतन 65% आउटपुट बचत, 22-87% की आउटपुट सीमा और एक ~46% इनपुट-कम्प्रेशन टूल की रिपोर्ट करता है।

RTK मोड RTK AI के RTK - Rust Token Killer से प्रेरित है — टर्मिनल, बिल्ड, टेस्ट, git और टूल-आउटपुट फ़िल्टरिंग के लिए उच्च-प्रदर्शन वाला कमांड-आउटपुट कम्प्रेशन प्रोजेक्ट। RTK 60-90% बचत की रिपोर्ट करता है, जबकि उसके README के नमूना सत्र में ~80% बचत दिखाई गई है।


उन्नत कम्प्रेशन सिस्टम

7 स्टैंडर्ड मोड के अतिरिक्त, OmniRoute में कई उन्नत कम्प्रेशन सिस्टम शामिल हैं, जो कॉन्टेक्स्ट के आधार पर स्वचालित रूप से काम करते हैं।

कैश-जागरूक कम्प्रेशन

कुछ प्रदाता (जैसे प्रॉम्प्ट कैशिंग के साथ Anthropic) प्रॉम्प्ट कैशिंग का समर्थन करते हैं, जिससे वे लागत और लेटेंसी कम करने के लिए प्रॉम्प्ट के कुछ हिस्सों को कैश कर सकते हैं। जब कैशिंग सक्षम होती है, तो एग्रेसिव कम्प्रेशन वास्तव में प्रदर्शन को नुकसान पहुँचा सकता है, क्योंकि यह कैश किए गए टोकन को बदल देता है, जिससे कैश अमान्य हो जाता है।

cachingAware.ts मॉड्यूल कैशिंग कॉन्टेक्स्ट का पता लगाकर और उसके अनुसार कम्प्रेशन रणनीति को समायोजित करके इस समस्या को हल करता है।

यह कैसे काम करता है

  1. कैशिंग कॉन्टेक्स्ट का पता लगानाcache_control मार्कर के लिए अनुरोध बॉडी को स्कैन करता है
  2. कैशिंग प्रदाताओं की पहचान करना — जाँचता है कि लक्षित प्रदाता कैशिंग का समर्थन करता है या नहीं
  3. रणनीति समायोजित करना — कैशिंग प्रदाताओं के लिए aggressive/ultra को घटाकर standard करता है
  4. सिस्टम प्रॉम्प्ट छोड़ना — सिस्टम प्रॉम्प्ट आमतौर पर कैश किए जाते हैं, इसलिए उन्हें कम्प्रेस नहीं करता
  5. नियतात्मक रूपांतरणों का उपयोग करना — केवल ऐसे रूपांतरणों का उपयोग करता है जो सुसंगत आउटपुट देते हैं

कोड उदाहरण

import {
  detectCachingContext,
  getCacheAwareStrategy,
} from "@omniroute/open-sse/services/compression/cachingAware";

const body = {
  model: "anthropic/claude-sonnet-4.5",
  messages: [{ role: "user", content: "Hello" }],
  cache_control: { type: "ephemeral" }, // ← कैश मार्कर
};

const ctx = detectCachingContext(body, { provider: "anthropic" });
// → { hasCacheControl: true, provider: "anthropic", isCachingProvider: true }

const strategy = getCacheAwareStrategy("aggressive", ctx);
// → { strategy: "standard", skipSystemPrompt: true, deterministicOnly: true }

कब उपयोग करें

कैश-जागरूक कम्प्रेशन हमेशा चालू रहता है — किसी कॉन्फ़िगरेशन की आवश्यकता नहीं है। यह केवल तब सक्रिय होता है जब:

  • अनुरोध में cache_control मार्कर हों
  • लक्षित प्रदाता प्रॉम्प्ट कैशिंग (Anthropic, OpenAI आदि) का समर्थन करता हो

प्रगतिशील एजिंग

लंबी बातचीत में संदेशों के कई टर्न जमा हो जाते हैं, लेकिन पुराने टर्न धीरे-धीरे कम प्रासंगिक हो जाते हैं। progressiveAging.ts मॉड्यूल टर्न की दूरी के अनुसार संदेशों का विवरण घटाता है:

  • हाल के टर्न (0-3): यथावत रखे जाते हैं (पूरा विवरण)
  • मध्यम टर्न (4-8): लाइट कम्प्रेशन (व्हाइटस्पेस और फ़ॉर्मेटिंग की सफ़ाई)
  • पुराने टर्न (9+): Caveman कम्प्रेशन (अनावश्यक सामग्री हटाना, सारांश बनाना)
  • बहुत पुराने टर्न (20+): व्यापक रूप से सारांशित या हटा दिए जाते हैं

कोड उदाहरण

import { applyAging } from "@omniroute/open-sse/services/compression/progressiveAging";

const messages = [
  { role: "system", content: "You are a helpful assistant" },
  { role: "user", content: "What is 2+2?" },
  { role: "assistant", content: "4" },
  // ... 50 और टर्न ...
];

const { messages: aged, saved } = applyAging(messages, {
  verbatim: 3, // पहले 3 टर्न: यथावत
  light: 8, // टर्न 4-8: लाइट कम्प्रेशन
  moderate: 20, // टर्न 9-20: caveman कम्प्रेशन
  // टर्न 21+: व्यापक सारांश
});

// saved = बचाए गए टोकन की संख्या

कब उपयोग करें

प्रगतिशील एजिंग aggressive और ultra मोड के लिए हमेशा चालू रहती है। यह विशेष रूप से इनके लिए प्रभावी है:

  • लंबे समय तक चलने वाले कोडिंग सत्र
  • कई दिनों तक चलने वाली बातचीत
  • अनेक टूल कॉल वाले एजेंटिक वर्कफ़्लो

केवमैन आउटपुट मोड

outputMode.ts मॉड्यूल मॉडल से ही संपीड़ित, संक्षिप्त आउटपुट ("केवमैन" शैली) उत्पन्न कराने के लिए सिस्टम प्रॉम्प्ट निर्देश इंजेक्ट करता है।

यह कैसे काम करता है

इनपुट को संपीड़ित करने के बजाय, यह मोड इस तरह का सिस्टम प्रॉम्प्ट जोड़ता है:

"न्यूनतम शब्दों में उत्तर दें। शिष्टाचार संबंधी बातें छोड़ दें। छोटे वाक्यों का उपयोग करें।"

यह विशेष रूप से इनके लिए अच्छा काम करता है:

  • कोड जनरेशन (अधिक संक्षिप्त आउटपुट = कम टोकन)
  • त्वरित प्रश्नोत्तर (विस्तृत व्याख्याओं की आवश्यकता नहीं)
  • बैच प्रोसेसिंग (थ्रूपुट को अधिकतम करें)

कब उपयोग करें

केवमैन आउटपुट मोड ऑप्ट-इन है — इसे कॉम्बो कॉन्फ़िगरेशन के माध्यम से सेट करें:

{
  "strategy": "auto",
  "config": {
    "auto": {
      "outputMode": "caveman"
    }
  }
}

आउटपुट शैलियाँ (कैटलॉग)

ऊपर दिया गया केवमैन आउटपुट मोड पुराना एकल-शैली पथ है। चरण 4 ने इसे संयोज्य आउटपुट शैलियों के कैटलॉग के रूप में सामान्यीकृत किया: open-sse/services/compression/outputStyles/catalog.ts में OUTPUT_STYLE_CATALOG। प्रत्येक शैली एक सिस्टम-प्रॉम्प्ट निर्देश है, जो मॉडल से ही कम लागत वाला आउटपुट उत्पन्न कराता है; शैलियाँ एक साथ सक्षम की जा सकती हैं और कैटलॉग क्रम में इंजेक्ट की जाती हैं।

शैली id यह क्या करती है निर्देश भाषाएँ
संक्षिप्त गद्य terse-prose अनावश्यक शब्द/आर्टिकल/अनिश्चितता-सूचक भाषा हटाती है; तकनीकी सार को सटीक रखती है। पुराने केवमैन आउटपुट मोड वाला ही टेक्स्ट (संदर्भित, दोबारा टाइप नहीं किया गया)। en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
कम कोड less-code YAGNI क्रम: सबसे छोटा काम करने वाला बदलाव, बिना माँगे कोई अमूर्तन नहीं। en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
पोनीटेल (आलसी वरिष्ठ डेवलपर) ponytail "सबसे अच्छा कोड वह है जो कभी लिखा ही न जाए": पुनः उपयोग > पुनर्लेखन, मूल कारण > लक्षण, सबसे छोटा काम करने वाला डिफ़। en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
मुझे ADHD है (कार्य-प्रथम) i-have-adhd पहले कार्य (गद्य से पहले कमांड/पथ/स्निपेट), क्रमांकित सीमित चरण, केवल एक ठोस अगला चरण, कोई प्रस्तावना/पुनरावलोकन/समापन नहीं। ayghri/i-have-adhd (MIT) से अनुकूलित। en, pt-BR, es, de, fr, it, ru, zh, ja, id, vi
संक्षिप्त CJK (文言) terse-cjk शास्त्रीय-चीनी अति-संक्षिप्त शैली। zh (लोकेल-सीमित: केवल तभी प्रस्तुत की जाती है जब निर्धारित भाषा zh हो)

प्रत्येक शैली के तीन तीव्रता स्तर होते हैं — lite, full, ultra — और हर स्तर साझा सीमा क्लॉज़ के साथ समाप्त होता है, जो कोड ब्लॉक, फ़ाइल पथ, कमांड, त्रुटि स्ट्रिंग, URL और आइडेंटिफ़ायर को ज्यों का त्यों रखता है।

इंजेक्शन कैसे काम करता है

applyOutputStyles() (open-sse/services/compression/outputStyles/apply.ts) चयन को कैटलॉग के सापेक्ष निर्धारित करता है (अज्ञात id और लोकेल से मेल न खाने वाली शैलियाँ हटा दी जाती हैं, कभी त्रुटि नहीं बनतीं), चुने गए निर्देशों को कैटलॉग क्रम में जोड़ता है, सीमा क्लॉज़ को एक बार जोड़ता है, और परिणाम को एकल आइडेम्पोटेंसी मार्कर ([OmniRoute Output Styles]) के पीछे सिस्टम प्रॉम्प्ट की शुरुआत में रखता है — दोबारा लागू करने पर कुछ नहीं होता। जब पहचानी गई अनुरोध भाषा का अनुवाद उपलब्ध होता है, तो अंग्रेज़ी के बजाय स्थानीयकृत निर्देश इंजेक्ट किया जाता है।

सक्षम कैसे करें

डैशबोर्ड में: Context → Settings → Compression — प्रत्येक शैली के लिए एक पंक्ति, जिसमें चालू/बंद टॉगल और स्तर चयनकर्ता होता है। प्रोग्रामेटिक रूप से, संपीड़न कॉन्फ़िगरेशन चयन को इस रूप में बनाए रखता है:

{
  "outputStyles": [
    { "id": "i-have-adhd", "level": "full" },
    { "id": "less-code", "level": "lite" }
  ]
}

पश्च-संगतता: पुरानी outputMode: "caveman" कॉम्बो सेटिंग अब भी काम करती है और terse-prose पर मैप होती है, जो प्रत्येक पुरानी भाषा में पुराने इंजेक्शन के साथ बाइट-दर-बाइट समान है।

भाषा चयन: languageConfig.enabled चालू होने पर, autoDetect नवीनतम उपयोगकर्ता संदेश की भाषा चुनता है (इनपुट इंजनों वाला ही डिटेक्टर); autoDetect बंद करने पर defaultLanguage स्थिर हो जाती है। बंद → अंग्रेज़ी।

शैली × भाषा मैट्रिक्स को tests/unit/compression/output-styles-i18n-matrix.test.ts द्वारा पिन किया गया है: कोई नई शैली कम-से-कम pt-BR अनुवाद (या स्पष्ट रूप से ट्रैक किया गया अपवाद) के बिना जारी नहीं की जा सकती, और कोई मौजूदा शैली चुपचाप किसी लोकेल को नहीं खो सकती। शैली जोड़ने के लिए, EXTENDING_COMPRESSION.md देखें।

टूल परिणाम संपीड़न

toolResultCompressor.ts मॉड्यूल टूल परिणामों (फ़ंक्शन कॉल, एजेंट आउटपुट, खोज परिणाम आदि) के लिए 5 विशिष्ट संपीड़न रणनीतियाँ प्रदान करता है:

  1. खोज परिणाम संपीड़न — अनावश्यक परिणाम हटाता है, शीर्ष-N को रखता है
  2. फ़ाइल पठन संपीड़न — बड़ी फ़ाइलों को छोटा करता है, हेडर/इंपोर्ट सुरक्षित रखता है
  3. कोड निष्पादन संपीड़न — केवल आवश्यक stdout/stderr रखता है
  4. डेटाबेस क्वेरी संपीड़न — पंक्तियाँ सीमित करता है, विस्तृत मेटाडेटा हटाता है
  5. API प्रतिक्रिया संपीड़न — null फ़ील्ड हटाता है, ऐरे को संक्षिप्त करता है

कब उपयोग करें

टूल कॉल मौजूद होने पर टूल परिणाम संपीड़न हमेशा चालू रहता है। किसी कॉन्फ़िगरेशन की आवश्यकता नहीं है।

स्टैक्ड पाइपलाइन

स्टैक्ड मोड कई इंजनों को क्रमिक रूप से चलाता है — आमतौर पर पहले RTK (टूल आउटपुट पर 60-90% बचत), फिर केवमैन (शेष टेक्स्ट पर अतिरिक्त 30% बचत)। इससे कुल 78-95% बचत होती है।

यह कैसे काम करता है

इनपुट (1000 टोकन)
  → RTK (कमांड-जागरूक फ़िल्टर) → 200 टोकन
    → केवमैन (अनावश्यक शब्द हटाना) → 140 टोकन
  → आउटपुट (140 टोकन, 86% बचत)

कब उपयोग करें

स्टैक्ड मोड का उपयोग इनके लिए करें:

  • टूल-प्रधान वर्कफ़्लो (एजेंटिक कोडिंग, शोध)
  • लागत-संवेदी बैच प्रोसेसिंग
  • जब आपको अधिकतम टोकन बचत चाहिए

कॉम्बो के माध्यम से कॉन्फ़िगर करें:

{
  "strategy": "auto",
  "config": {
    "auto": {
      "modePack": "stacked"
    }
  }
}

कंप्रेशन कॉम्बो ओवरराइड

अलग-अलग उपयोग मामलों के व्यवहार को बेहतर ढंग से समायोजित करने के लिए, आप वैश्विक कंप्रेशन मोड को प्रत्येक कॉम्बो के लिए ओवरराइड कर सकते हैं:

{
  "id": "coding-combo",
  "strategy": "priority",
  "config": {
    "auto": {
      "weights": { "taskFit": 0.5 },
      "modePack": "quality-first"
    }
  },
  "compressionOverride": {
    "mode": "aggressive",
    "stackedPipelines": ["rtk", "caveman"],
    "preserveToolDefinitions": true
  }
}

यह इनके लिए उपयोगी है:

  • कोडिंग कॉम्बो: लंबे सत्रों के लिए aggressive मोड का उपयोग करें
  • त्वरित प्रश्नोत्तर कॉम्बो: तेज़ प्रतिक्रियाओं के लिए lite मोड का उपयोग करें
  • अधिक टूल वाले कॉम्बो: अधिकतम बचत के लिए stacked मोड का उपयोग करें
  • प्रोडक्शन कॉम्बो: कैशिंग प्रदाताओं के लिए cache-aware मोड का उपयोग करें

यह भी देखें