पाइपलाइन
- Markdown को IR में पार्स करें (
markdownToIR) - सादा टेक्स्ट और शैली स्पैन (बोल्ड, इटैलिक, स्ट्राइकथ्रू, कोड, कोड ब्लॉक, स्पॉइलर, ब्लॉककोट, शीर्षक 1-6) तथा लिंक स्पैन। ऑफ़सेट UTF-16 कोड इकाइयाँ हैं, इसलिए Signal शैली रेंज सीधे उसके API के अनुरूप होती हैं। तालिकाएँ केवल तभी पार्स होती हैं, जब चैनल किसी तालिका मोड का विकल्प चुनता है। - IR को चंकों में बाँटें (
chunkMarkdownIR/renderMarkdownIRChunksWithinLimit)- विभाजन रेंडरिंग से पहले IR टेक्स्ट पर होता है, इसलिए इनलाइन शैलियों और लिंक को सीमा के आर-पार टूटने के बजाय प्रत्येक चंक के अनुसार काटा जाता है।
- प्रत्येक चैनल के लिए रेंडर करें (
renderMarkdownWithMarkers) - एक शैली-मार्कर मैप स्पैन को चैनल के मूल मार्कअप में बदलता है।
IR उदाहरण
इनपुट Markdown:तालिका प्रबंधन
markdown.tables नियंत्रित करता है कि कोई चैनल Markdown तालिकाओं को कैसे रूपांतरित करता है, प्रत्येक
चैनल के लिए और वैकल्पिक रूप से प्रत्येक खाते के लिए:
प्रति-चैनल Plugin डिफ़ॉल्ट: Signal, WhatsApp और Matrix के लिए डिफ़ॉल्ट
bullets है; Mattermost के लिए डिफ़ॉल्ट off है; Telegram के लिए डिफ़ॉल्ट block है (जो
code में बदलता है, जब तक खाते में richMessages सक्षम न हो)। स्पष्ट Plugin डिफ़ॉल्ट के बिना कोई भी
चैनल code पर फ़ॉलबैक करता है।
चंकिंग नियम
- चंक सीमाएँ चैनल अडैप्टर/कॉन्फ़िगरेशन से आती हैं और IR टेक्स्ट पर लागू होती हैं, रेंडर किए गए आउटपुट पर नहीं।
- फ़ेंस किए गए कोड ब्लॉक को अंतिम न्यूलाइन सहित एक ब्लॉक के रूप में रखा जाता है, ताकि चैनल समापन फ़ेंस को सही ढंग से रेंडर करें।
- सूची और ब्लॉककोट उपसर्ग IR टेक्स्ट का हिस्सा होते हैं, इसलिए चंकिंग कभी भी उपसर्ग के बीच में विभाजन नहीं करती।
- इनलाइन शैलियाँ कभी चंकों के बीच विभाजित नहीं होतीं; रेंडरर अगले चंक के आरंभ में खुली शैली को फिर से खोलता है।
लिंक नीति
- Slack:
[label](url)-><url|label>; सीधे लिखे URL सीधे ही रहते हैं। - Telegram:
[label](url)-><a href="url">label</a>(HTML पार्स मोड)। - Signal:
[label](url)->label (url), जब तक लेबल पहले से URL से मेल न खाता हो।
स्पॉइलर
स्पॉइलर मार्कर (||spoiler||) Signal (जहाँ उन्हें SPOILER
शैली रेंज में मैप किया जाता है) और Telegram (जहाँ उन्हें <tg-spoiler> में मैप किया जाता है) के लिए पार्स किए जाते हैं। अन्य चैनल
||...|| को सादा टेक्स्ट मानते हैं।
चैनल फ़ॉर्मैटर जोड़ना या अपडेट करना
- चैनल के लिए उपयुक्त विकल्प (
autolink,headingStyle,blockquotePrefix,tableMode) पास करते हुएmarkdownToIR(...)के साथ एक बार पार्स करें। - शैली-मार्कर मैप (या
Signal जैसे ट्रांसपोर्ट के लिए कस्टम शैली-रेंज लॉजिक) के साथ
renderMarkdownWithMarkers(...)का उपयोग करके रेंडर करें। - प्रत्येक चंक को रेंडर करने से पहले
chunkMarkdownIR(...)याrenderMarkdownIRChunksWithinLimit(...)के साथ चंक में बाँटें। - आउटबाउंड प्रेषण पथ से नए चंकर और रेंडरर को कॉल करने के लिए अडैप्टर को जोड़ें।
- यदि चैनल चंकिंग करता है, तो फ़ॉर्मैट परीक्षणों और आउटबाउंड डिलीवरी परीक्षण के साथ परीक्षण करें।
सामान्य सावधानियाँ
- Slack एंगल-ब्रैकेट टोकन (
<@U123>,<#C123>,<https://...>) को एस्केपिंग के बाद भी सुरक्षित रहना चाहिए; अपरिष्कृत HTML को फिर भी सुरक्षित रूप से एस्केप करना आवश्यक है। - Telegram HTML में टूटे हुए मार्कअप से बचने के लिए टैग के बाहर के टेक्स्ट को एस्केप करना आवश्यक है।
- Signal शैली रेंज UTF-16 ऑफ़सेट का उपयोग करती हैं, कोड-पॉइंट ऑफ़सेट का नहीं।
- फ़ेंस किए गए कोड ब्लॉक में अंतिम न्यूलाइन सुरक्षित रखें, ताकि समापन मार्कर अपनी अलग पंक्ति पर आए।
संबंधित
स्ट्रीमिंग और चंकिंग
आउटबाउंड स्ट्रीमिंग व्यवहार, चंक सीमाएँ और चैनल-विशिष्ट डिलीवरी।
सिस्टम प्रॉम्प्ट
बातचीत से पहले मॉडल क्या देखता है, जिसमें इंजेक्ट की गई कार्यस्थान फ़ाइलें भी शामिल हैं।