कंडीशनल प्रॉम्प्ट ({{#if}})
{{#if}} ब्लॉक कोई प्रॉम्प्ट टेक्स्ट सिर्फ़ तभी शामिल करता है जब कोई शर्त सही हो। इससे एक ही साझा प्रीसेट में अलग-अलग कैरेक्टर, पर्सोना या चैट के लिए अलग निर्देश दिए जा सकते हैं, या खाली फ़ील्ड को छोड़ा जा सकता है। कंडीशनल मैक्रो सिस्टम का ही हिस्सा हैं, इसलिए ये हर उस जगह चलते हैं जहाँ मैक्रो चलती हैं: कैरेक्टर कार्ड, पर्सोना, लोरबुक एंट्री और प्रीसेट।
Marinara हर बार प्रॉम्प्ट बनाते समय शर्त जाँचता है, मेल खाने वाला टेक्स्ट रखता है और बाकी हटा देता है। यह एक एडवांस्ड फ़ीचर है, और ज़्यादातर चैट को इसकी कभी ज़रूरत नहीं पड़ती।
बुनियादी सिंटैक्स
ब्लॉक {{#if condition}} से शुरू होता है और {{/if}} पर खत्म होता है। शर्त गलत होने की सूरत के लिए {{else}} जोड़ें, और एक के बाद एक और शर्तें जोड़ने के लिए {{else if}}। Marinara हर ब्रांच को ऊपर से नीचे के क्रम में जाँचता है और पहली सही ब्रांच रखता है। अगर कोई शर्त सही न हो और {{else}} भी न हो, तो ब्लॉक खाली रह जाता है।
{{#if length == "short"}}
Keep your reply to one or two sentences.
{{else if length == "long"}}
Write a detailed, multi-paragraph reply.
{{else}}
Write a reply of normal length.
{{/if}}ब्लॉक एक पंक्ति में भी लिखा जा सकता है और कई पंक्तियों में भी, और एक ब्लॉक के अंदर दूसरा ब्लॉक भी रखा जा सकता है।
ऑपरेटर
शर्त में आम तौर पर एक बाईं वैल्यू, एक ऑपरेटर और एक दाईं वैल्यू होती है, जैसे char == "Alice"।
| ऑपरेटर | मतलब |
==, =, is | बराबर। |
!=, is not | बराबर नहीं। |
>, <, >=, <= | इससे बड़ा, इससे छोटा, बड़ा या बराबर, छोटा या बराबर (सिर्फ़ संख्याओं के लिए)। |
contains, includes | बाईं वैल्यू में दाईं वैल्यू टेक्स्ट के रूप में मौजूद है। |
not contains, not includes | बाईं वैल्यू में दाईं वैल्यू मौजूद नहीं है। |
तुलना के नियम:
- बराबरी वाले ऑपरेटर में, अगर दोनों तरफ़ संख्या जैसी वैल्यू हो तो Marinara उनकी तुलना संख्या के रूप में करता है, इसलिए
5और5.0बराबर हैं। वरना वह टेक्स्ट की तुलना करता है और बड़े-छोटे अक्षरों का फ़र्क नहीं देखता, इसलिएMariऔरmariबराबर हैं। >,<,>=और<=में दोनों तरफ़ संख्या होनी चाहिए। वरना शर्त गलत मानी जाती है।containsऔरincludesबड़े-छोटे अक्षरों का फ़र्क नहीं देखते, इसलिएcontains "dr"सेDr Smithमैच हो जाता है।
शर्तें जोड़ना
OR के लिए || और AND के लिए && लगाएँ। && की जाँच || से पहले होती है। क्रम तय करने के लिए कोष्ठक लगाएँ।
{{#if character == "Maukie" || character == "Pantalone"}}
Use the shared instructions.
{{/if}}
{{#if (character == "Maukie" || character == "Pantalone") && scenario contains "lake"}}
Use the lakeside instructions for either character.
{{/if}}एक ही वैल्यू के कई बराबरी वाले विकल्प देने हों, तो दोहराई जाने वाली बाईं तरफ़ छोड़ सकते हैं: character == "Maukie" || "Pantalone"। यह ==, = और is के साथ चलता है। && के दोनों तरफ़ पूरी शर्त लिखें।
ट्रूथी जाँच
बिना ऑपरेटर वाली शर्त तब सही होती है जब वैल्यू में सचमुच कुछ भरा हो। वह तब गलत होती है जब वैल्यू खाली हो या false, 0, no, off, null या undefined में से कोई हो, चाहे बड़े अक्षरों में लिखी हो या छोटे अक्षरों में।
{{#if scenario}}
Current scene: {{scenario}}
{{else}}
No specific scene is set.
{{/if}}किन चीज़ों की तुलना हो सकती है
शर्त की किसी भी तरफ़ इनमें से कुछ भी आ सकता है:
- कोई फ़ील्ड या पहचान वाला कीवर्ड, जैसे
char,user,group,persona,description,personality,scenario,input,modelयाreasoning। ये वही वैल्यू पढ़ते हैं जो इनसे मिलती-जुलती मैक्रो पढ़ती हैं।groupमें बाकी सक्रिय कैरेक्टर आते हैं, इस समय जवाब दे रहे कैरेक्टर के बिना। - उद्धरण चिह्नों में लिखी कोई तय वैल्यू, जैसे
"Alice"। - किसी प्रीसेट वेरिएबल का नाम, जैसे
length। प्रीसेट वेरिएबल देखें। - साफ़-साफ़ लिखा वेरिएबल लुकअप,
var:nameयाvar.nameके रूप में। - कोई और मैक्रो, जो पहले हल होती है।
- आपके निर्णय मॉडल के लिए सवाल:
decision:"..."याdecision_choice:"..."। निर्णय मॉडल से पूछना देखें।
जो सादा शब्द कीवर्ड नहीं है, उसे वेरिएबल का नाम माना जाता है। उस नाम का कोई वेरिएबल न हो, तो वह सादे टेक्स्ट की तरह इस्तेमाल होता है। उलझन से बचने के लिए तय वैल्यू उद्धरण चिह्नों में लिखें।
उद्धरण चिह्न
तय टेक्स्ट को सीधे दोहरे या सीधे एकल उद्धरण चिह्नों में रखें। उद्धरण चिह्नों वाली वैल्यू के अंदर उद्धरण चिह्न लिखने के लिए उससे पहले बैकस्लैश लगाएँ, और नई पंक्ति के लिए \n लिखें। जिस तय वैल्यू में स्पेस हो, उसे हमेशा उद्धरण चिह्नों में रखें, जैसे "Dr Smith"। बिना उद्धरण चिह्न वाली कई शब्दों की वैल्यू एक ही वेरिएबल नाम मानी जाती है।
कई कैरेक्टर के लिए ग्रुप ब्लॉक
दो या उससे ज़्यादा कैरेक्टर वाली ग्रुप चैट में, ग्रुप ब्लॉक अपना टेक्स्ट हर कैरेक्टर के लिए एक-एक बार दोहराता है। एक पंक्ति में अकेला [ लिखें, फिर अपना टेक्स्ट, फिर एक पंक्ति में अकेला ]। ब्लॉक में कोई कैरेक्टर मैक्रो होनी चाहिए, जैसे {{char}} या {{description}}, या कैरेक्टर पर आधारित कोई शर्त।
[
{{char}}'s current attitude:
{{#if char == "Alice"}}cheerful and open{{else}}guarded and quiet{{/if}}
]Alice और Bob के साथ यह ब्लॉक दो बार चलता है, हर कैरेक्टर के लिए एक बार। ग्रुप ब्लॉक के बाहर कैरेक्टर मैक्रो सिर्फ़ मौजूदा या मुख्य कैरेक्टर पर ही हल होती है। एक कैरेक्टर वाली चैट में [ और ] वाली पंक्तियाँ सादे टेक्स्ट की तरह रहती हैं।
उदाहरण
हर कैरेक्टर के लिए अलग लहजा:
{{#if char == "Dottore"}}
Speak in a cold, clinical tone.
{{else}}
Speak warmly and casually.
{{/if}}किसी फ़ील्ड को सिर्फ़ तब शामिल करना जब वह भरी हो। Backstory (बैकस्टोरी) खाली हो तो ब्लॉक खाली रह जाता है, इसलिए कोई खाली लेबल नहीं जाता।
{{#if backstory}}
Backstory to remember: {{backstory}}
{{/if}}मॉडल के एक परिवार के लिए निर्देश। model मॉडल ID है, जैसे claude-opus-5-5, इसलिए contains Opus के हर वर्ज़न से मेल खाता है और == किसी एक सटीक मॉडल से।
{{#if model contains "opus"}}
Keep replies under 400 words.
{{/if}}योजना के ऐसे निर्देश, जो इस पर निर्भर हैं कि मॉडल सोचता है या नहीं। रीज़निंग किसी भी लेवल पर चालू हो, तो मॉडल को पहली लाइन मिलती है। रीज़निंग बंद हो, तो {{reasoning}} off होता है, जिसे गलत माना जाता है। किसी एक लेवल पर कुछ करवाना हो, तो उसकी तुलना करें, जैसे {{#if reasoning == "max"}}।
{{#if reasoning}}
Plan the reply in your thinking before you write it.
{{else}}
Before replying, write your plan inside <plan></plan> tags.
{{/if}}निर्णय मॉडल से पूछना
शर्त आपके निर्णय मॉडल से पूछ सकती है कि चैट में क्या हो रहा है। निर्णय मॉडल एक छोटा मॉडल है जो हाल के कुछ संदेश और आपका लिखा कथन पढ़कर बताता है कि कथन सही है या नहीं। यह चैट में कभी कुछ नहीं लिखता। इससे प्रीसेट, कार्ड, लोरबुक एंट्री या एजेंट प्रॉम्प्ट कोई निर्देश सिर्फ़ उन्हीं टर्न में भेज सकते हैं जहाँ वह लागू होता है।
शुरू करने से पहले: Connections (कनेक्शन) पैनल में Decision model (निर्णय मॉडल) के नीचे एक निर्णय मॉडल चुनें। यह क्या है और इसे कैसे चुनें, इसके लिए निर्णय मॉडल देखें। पूरी लोरबुक एंट्री सक्रिय हो या नहीं, यह तय करने के लिए इसकी जगह एंट्री की Decision फ़ील्ड इस्तेमाल करें।
कुछ सुझाव: नई जगह का वर्णन सिर्फ़ तब करें जब सीन बदला हो, लड़ाई की गति के नियम सिर्फ़ लड़ाई के दौरान लोड करें, धीरे बढ़ते रिश्ते वाले प्रीसेट में रिश्ते का तेज़ी से आगे बढ़ना रोककर रखें, या ग्रुप ब्लॉक में सिर्फ़ उसी कैरेक्टर से सीधा जवाब दिलवाएँ जिसे संबोधित किया गया हो।
हाँ या नहीं: decision:
{{#if decision:"The latest message moves the scene to a new place"}}
Open your reply by describing the new location in one or two sentences.
{{/if}}निर्णय मॉडल कथन को सही बताए, तो शर्त सही है। यह {{else}}, &&, ||, कोष्ठक, नेस्टिंग और ग्रुप ब्लॉक के साथ काम करती है। कथन की मैक्रो पहले भरी जाती हैं, इसलिए {{user}} और {{char}} काम करती हैं। ग्रुप ब्लॉक में {{char}} वाला कथन हर कैरेक्टर के लिए एक बार पूछा जाता है।
कई जवाबों में से एक: decision_choice:
decision_choice: मॉडल से एक विकल्प चुनने को कहता है। विकल्प वे वैल्यू हैं जिनसे आप इसकी तुलना करते हैं।
{{#if decision_choice:"Kaelen's mood in the latest message" == "angry"}}
Kaelen's lines are short and clipped.
{{else if decision_choice:"Kaelen's mood in the latest message" == "sad"}}
Kaelen speaks quietly and looks away.
{{else}}
Kaelen is his usual self.
{{/if}}मॉडल "angry", "sad" और "none of these" में से चुनता है। कथन को विषय की तरह लिखें और विकल्पों को छोटे जवाबों की तरह। छोटा रूप == "rain" || "snow" दोनों विकल्प देता है।
अपनी कहानी में किसी विकल्प का मतलब बताने के लिए उसके बाद कोलन लगाकर मापदंड जोड़ें, और दोनों हिस्सों पर एक ही तरह के उद्धरण चिह्न लगाएँ: == "angry":"Kaelen raises his voice, makes threats or breaks something"। मॉडल फिर भी "angry" ही जवाब देता है। अगर किसी एक विकल्प को कई जगह अलग-अलग मापदंड दिए गए हों, तो पहला इस्तेमाल होता है।
Sticky और cooldown
कथन को हर टर्न पूछने के बजाय उसका जवाब कुछ टर्न तक रखने के लिए कथन के बाद sticky: और cooldown: जोड़ें।
{{#if decision:"The latest message starts a fight" sticky:3 cooldown:5}}
Keep combat pacing rules in effect.
{{/if}}sticky:N: हाँ के बाद कथन N टर्न तक बिना पूछे हाँ रहता है।cooldown:N: sticky खत्म होने पर, या हाँ के तुरंत बाद, शुरू होता है। N टर्न तक कथन "नहीं" माना जाता है और पूछा नहीं जाता।- टर्न यानी निर्णय मॉडल का पढ़ा हर नया संदेश। उसी संदेश की दोबारा जेनरेशन या स्वाइप वही टर्न है, इसलिए जवाब दोबारा बनाने से टाइमर कभी नहीं घटता।
- जिस कथन का जवाब रखा हुआ हो, वह पूछा नहीं जाता और Decision statements per turn (हर टर्न के निर्णय कथन) में नहीं गिना जाता।
decision_choice:के लिए sticky चुना हुआ विकल्प रखता है, और cooldown हर तुलना को "नहीं" मानता है।- कई जगह लिखा कथन सबसे लंबी sticky और cooldown इस्तेमाल करता है।
- Peek Prompt रखा हुआ जवाब दिखाता है और टाइमर कभी आगे नहीं बढ़ाता।
अपनी Decision (निर्णय) फ़ील्ड से सक्रिय होने वाली लोरबुक एंट्री के लिए इसकी जगह एंट्री की अपनी Sticky (सक्रिय बनाए रखना) और Cooldown (विराम) इस्तेमाल करें।
Until और while
किसी ब्लॉक को तब तक चालू रखने के लिए जब तक कोई चीज़ चलती रहे, until: या while: के साथ दूसरा कथन जोड़ें।
{{#if decision:"A fight starts in the latest message" until:"The fight ends in the latest message"}}
Keep combat pacing rules in effect.
{{/if}}- हाँ के बाद ब्लॉक चालू रहता है। पहला कथन नहीं पूछा जाता। उसकी जगह हर टर्न
untilकथन पूछा जाता है, और जिस टर्न वह सही हो, उसी टर्न ब्लॉक बंद हो जाता है। while:इसके उलट काम करता है: जब तक उसका कथन सही रहे, ब्लॉक चालू रहता है, और उसके गलत होने पर बंद हो जाता है।- दोनों में से कोई एक ही इस्तेमाल करें। दोनों लिखे हों तो सिर्फ़ पहला लागू होता है।
- ब्लॉक बंद होने पर cooldown हमेशा की तरह शुरू होता है। किसी टर्न जवाब न मिले, तो ब्लॉक चालू रहता है।
untilयाwhileकथन Decision statements per turn में गिना जाता है। ब्लॉक चालू रहते हुए पहला कथन इसमें नहीं गिना जाता।- यह
decision:के साथ चलता है,decision_choice:के साथ नहीं।
sticky के साथ, दूसरे कथन के बाद :and (:restrict भी) या :or (:extend भी) जोड़कर चुनें कि दोनों कैसे मिलकर काम करें।
| लिखा हुआ | हाँ के बाद ब्लॉक कब तक चालू रहता है |
until:"..." sticky:5 या until:"...":and sticky:5 | ज़्यादा से ज़्यादा 5 और टर्न तक, और until कथन सही हो जाए तो उससे पहले ही बंद हो जाता है। |
until:"...":or sticky:5 | कम से कम 5 और टर्न तक, फिर तब तक जब तक until कथन सही न हो जाए। |
while:"..." sticky:5 या while:"...":or sticky:5 | कम से कम 5 और टर्न तक, फिर तब तक जब तक while कथन सही रहे। |
while:"...":and sticky:5 | ज़्यादा से ज़्यादा 5 और टर्न तक, और while कथन गलत हो जाए तो उससे पहले ही बंद हो जाता है। |
कुछ टर्न बाद जाँचना
कथन को सिर्फ़ हर N टर्न पर पूछने के लिए every:N जोड़ें।
{{#if decision:"The weather changes in the latest message" every:3}}
Describe the new weather in a sentence.
{{/if}}- कथन तक पहले जिस टर्न में पहुँचा जाता है, उसी टर्न वह पूछा जाता है, फिर 3 टर्न बाद, और इसी तरह आगे। दो जाँचों के बीच उसे "नहीं" माना जाता है, वह पूछा नहीं जाता और Decision statements per turn में नहीं गिना जाता।
- दोबारा जेनरेशन या स्वाइप शेड्यूल आगे नहीं बढ़ाते।
- Sticky और cooldown अब भी जवाब रखते हैं।
every:सिर्फ़ यह तय करता है कि जिस कथन का जवाब रखा हुआ नहीं है, वह कब पूछा जाए। - कई जगह लिखा कथन सबसे छोटा
every:इस्तेमाल करता है।
प्राथमिकता
जब प्रॉम्प्ट की योजना में Decision statements per turn की सीमा से ज़्यादा कथन हों, तो priority:high या priority:low तय करता है कि कौन से पूछे जाएँ। प्राथमिकता न दी हो तो उसे मध्यम माना जाता है।
{{#if decision:"In the latest message, a character is badly hurt" priority:high}}...{{/if}}
{{#if decision:"The latest message mentions food" priority:low}}...{{/if}}- high कथन सबसे पहले और low कथन सबसे आखिर में पूछे जाते हैं। एक ही प्राथमिकता के अंदर प्रॉम्प्ट में आने का क्रम तय करता है।
- सीमा से बाहर के कथन "नहीं" माने जाते हैं, सबसे कम प्राथमिकता वाले पहले, और Peek Prompt उनकी सूची दिखाता है।
- कई जगह लिखा कथन सबसे ऊँची प्राथमिकता इस्तेमाल करता है।
- प्रॉम्प्ट के अपने कथन (प्रीसेट, कार्ड, पर्सोना, लेखक के नोट) पहले योजना में आते हैं। लोरबुक के कथन बची हुई जगह लेते हैं, उनकी प्राथमिकता चाहे जो हो।
सारे मॉडिफ़ायर किसी भी क्रम में साथ लिख सकते हैं: decision:"..." priority:high sticky:3 cooldown:5 every:2।
जवाब न मिलना यानी नहीं
जब भी जवाब न मिले, निर्णय शर्त गलत होती है: कोई निर्णय मॉडल सेट नहीं है, उसने समय पर जवाब नहीं दिया, या वह फ़ेल हो गया। decision_choice: में हर तुलना गलत होती है। इसे ध्यान में रखकर लिखें।
- निर्णय से निर्देश जोड़ें या काटें, उससे कभी वह सामग्री न भेजें जिस पर कहानी निर्भर है।
- हर निर्णय ब्लॉक का एक डिफ़ॉल्ट रखें: कुछ नहीं, या ऐसी
{{else}}जो किसी भी टर्न ठीक रहे। - निर्णयों को इस तरह एक-दूसरे पर निर्भर न बनाएँ कि एक गलत जवाब कई और जवाब बदल दे।
- सहमति, कंटेंट चेतावनी या सुरक्षा निर्देश किसी निर्णय पर निर्भर न रखें।
कोई भी मॉडल गलत जवाब दे सकता है। किसी एक प्रोडक्ट के लिए नहीं, "किसी भी निर्णय मॉडल" के लिए लिखें।
कथन लिखना
- ऐसा तथ्य लिखें जो सही या गलत हो सके, रिपोर्ट की किसी लाइन की तरह। सवाल नहीं ("Did the scene change?") और निर्देश भी नहीं ("If the scene changed, describe it")। छोटे मॉडल निर्देश पर अक्सर नहीं कह देते हैं, इसलिए ब्लॉक कभी नहीं चलता।
- जब इसी टर्न की बात हो, तो "in the latest message" लिखें। मॉडल कई संदेश पढ़ता है, और कोई पहले वाला संदेश उससे हाँ कहलवा सकता है।
- बताएँ कि बात किसकी है। "He is angry" को गलत कैरेक्टर के बारे में समझा जा सकता है।
- टेक्स्ट में दिखने वाली कोई चीज़ बताएँ, जैसे कोई काम या कही गई बात। मूड वाले शब्दों ("The scene is intense") और छिपी मंशा ("Mira is lying") से बचें।
- इसे छोटा रखें। अगर हिस्सों को दोबारा इस्तेमाल या डीबग करना हो, तो लंबे कथन को हिस्सों में बाँट दें।
अपने शब्दों का चुनाव जाँचने के लिए:
- Decision model में एक मॉडल चुनें और Test (टेस्ट करें) पर क्लिक करें। यह एक तय नमूने से कनेक्शन जाँचता है। यह आपका कथन टेस्ट नहीं करता।
- कथन को अपने प्रॉम्प्ट में जोड़ें, और ऐसे संदेश भेजें जिनमें वह सही होना चाहिए और ऐसे भी जिनमें गलत।
- कौन सी ब्रांच भेजी गई, यह देखने के लिए Peek Prompt इस्तेमाल करें। चैट का जवाब जेनरेट किए बिना निर्णयों के नए जवाब पाने के लिए Decision diagnostics (निर्णय जाँच) खोलें, फिर Test decisions (निर्णय टेस्ट करें) चुनें। होस्ट किए गए टेस्ट में पैसे लग सकते हैं। निर्णय कथनों की जाँच देखें।
- शब्द बदलें और फिर से टेस्ट करें। असली जेनरेशन के जवाब देखने के लिए Debug Mode या डीबग लॉगिंग चालू करें।
सीमाएँ और लागत
कथन की सीमा
Decision model के नीचे मौजूद Decision statements per turn का डिफ़ॉल्ट 32 है। यह हर Decision रिक्वेस्ट या खर्च पर लगी कोई एक अकेली सीमा नहीं है। Marinara इसे चरणों में लागू करता है।
- मुख्य चैट प्रॉम्प्ट के कथनों की योजना इस सीमा के अंदर बनती है। लोरबुक के निर्णय बची हुई जगह लेते हैं।
- जवाब से पहले या उसके साथ चलने वाले एजेंटों को मुख्य प्रॉम्प्ट के साथ एक साझा योजना मिलती है, जिसमें सीमा फिर से इस्तेमाल होती है। यह चरण लोरबुक का इस्तेमाल नहीं घटाता, इसलिए कुल संख्या सेटिंग से ज़्यादा हो सकती है।
- पोस्ट-प्रोसेसिंग एजेंटों को जवाब के बाद अलग सीमा मिलती है।
एजेंट के सक्रिय करने वाले सवाल और Smart response order इस सेटिंग से अलग हैं।
किसी चरण की योजना में सिर्फ़ वही कथन आते हैं जिन्हें वह चरण इस्तेमाल कर सकता है: चालू प्रीसेट सेक्शन और ग्रुप, चुने गए वेरिएबल विकल्प और सक्रिय लोरबुक एंट्री का कंटेंट। कोई तय शर्त किसी कथन को बाहर कर सकती है, जैसे कैरेक्टर Mira हो तब {{#if char == "Dottore" && decision:"..."}}। वेरिएबल वाली शर्त ऐसा नहीं करती, क्योंकि प्रॉम्प्ट बनते समय वेरिएबल बदल सकते हैं। sticky, cooldown या every: की वजह से रुके कथन कोई जगह नहीं लेते। बाहर रहे कथन "नहीं" माने जाते हैं।
रिक्वेस्ट और समय
होस्ट किए गए Decision अकाउंट पर एक टर्न में कई बिल वाली रिक्वेस्ट हो सकती हैं। कथन बैच में भेजे जा सकते हैं, लेकिन लोरबुक सक्रियता, नई सक्रिय हुई एंट्री के कंटेंट, रिकर्सिव मैच और एजेंट फ़ेज़ के लिए और बैच लग सकते हैं। लोकल चैट मॉडल शुल्क के बजाय प्रोसेसिंग का समय बढ़ाता है, और decision_choice: का जवाब हर विकल्प के लिए एक हाँ/नहीं सवाल से देता है।
हर रिक्वेस्ट की एक समय सीमा होती है: होस्ट किए गए Decision अकाउंट के लिए डिफ़ॉल्ट 1.5 सेकंड, या OpenAI-संगत चैट मॉडल अकाउंट या लोकल मॉडल के लिए 4 सेकंड। समय सीमाएँ देखें। तर्क करने वाला लोकल मॉडल जवाब से पहले रुका रहता है, जब तक आप Also gate agents that run before the reply (जवाब से पहले चलने वाले एजेंट भी जाँचें) चालू न करें।
जवाब दोबारा इस्तेमाल करना
Marinara आम तौर पर उसी टर्न और निर्णय मॉडल के सफल जवाब दोबारा इस्तेमाल करता है, इसलिए दोबारा जेनरेशन अक्सर बिना नई रिक्वेस्ट के वही ब्रांच भेजती है। यह कैश चलते हुए सर्वर में रहता है और 200 टर्न तक रखता है। रीस्टार्ट, कैश से हटना, नया या एडिट किया गया आखिरी संदेश, दूसरा मॉडल, या बदला हुआ कथन या विकल्पों का सेट नया जवाब माँग सकता है।
गायब या फ़ेल जवाब कैश नहीं होते, इसलिए दोबारा कोशिश करने पर फिर से पूछा जा सकता है और दूसरी ब्रांच मिल सकती है। एजेंट प्रॉम्प्ट के कथन भी यही नियम मानते हैं। एजेंट को हाथ से दोबारा चलाने पर उसके इनपुट के लिए जो जवाब अब भी कैश में हैं, वही इस्तेमाल होते हैं। एजेंट प्रॉम्प्ट के निर्णय कथन देखें।
प्रॉम्प्ट कैश
प्रोवाइडर का प्रॉम्प्ट कैश Marinara के जवाब कैश से अलग है। यह आपके चैट मॉडल को भेजे गए प्रॉम्प्ट के न बदले शुरुआती हिस्से को दोबारा इस्तेमाल कर सकता है। निर्णय ब्रांच बदलने पर उस जगह से आगे दोबारा इस्तेमाल रुक सकता है, हालाँकि उससे पहले का न बदला हिस्सा फिर भी योग्य हो सकता है। बिलिंग प्रोवाइडर पर निर्भर करती है।
अक्सर बदलने वाले निर्णय ब्लॉक प्रॉम्प्ट के आखिरी हिस्से में रखें, जैसे हिस्ट्री के बाद वाले निर्देश या कम गहराई वाला लेखक का नोट। निर्णय को शुरुआत के पास तभी रखें जब उसका जवाब कम ही बदलता हो। प्रीसेट वेरिएबल के विकल्प भी इसी तरह काम करते हैं, क्योंकि उनका टेक्स्ट वहीं पहुँचता है जहाँ {{name}} लिखा हो।
सीधे Anthropic अकाउंट पर Enable prompt caching (प्रॉम्प्ट कैशिंग चालू करें) चालू हो, तो Marinara सिस्टम प्रॉम्प्ट का अंत और सबसे नए संदेश से Cache depth (कैश गहराई) संदेश पीछे वाला चैट संदेश चिह्नित करता है (डिफ़ॉल्ट 5)। हिस्ट्री से पहले का बदलाव सिस्टम सीमा और उसके बाद की हिस्ट्री को अमान्य कर सकता है। चिह्नित हिस्ट्री सीमा के बाद का बदलाव कैश वाला हिस्सा बचा सकता है। न्यूनतम कैश लंबाई मॉडल के हिसाब से अलग होती है। प्रोवाइडर की मौजूदा Anthropic प्रॉम्प्ट कैश गाइड या OpenAI प्रॉम्प्ट कैश गाइड देखें।
जब निर्णय ब्रांच कभी न दिखे
संभावित कारण, इस क्रम में:
- कोई निर्णय मॉडल सेट नहीं है। हर निर्णय शर्त गलत है। एडिटर ऐसी शर्त इस्तेमाल करने वाली हर फ़ील्ड के नीचे चेतावनी दिखाता है।
- निर्णय मॉडल जवाब नहीं दे रहा: होस्ट किए गए अकाउंट पर गलत कुंजी, क्रेडिट न होना या रेट लिमिट, रुका हुआ या बहुत धीमा लोकल मॉडल, या इंस्टॉल किया गया निर्णय मॉडल जो शुरू नहीं हुआ।
- यह तर्क करने वाला मॉडल है जो जवाब से पहले रुका रहता है।
- योजना वाले चरण में बहुत ज़्यादा कथन हैं, सीमा से ज़्यादा।
- यह जवाब देता है, पर अपनी सीमा से नीचे। आम तौर पर इसकी वजह शब्दों का चुनाव होता है।
देखें कि Test क्या बताता है, और भेजी गई ब्रांच देखने के लिए Peek Prompt इस्तेमाल करें। यह उन कथनों की सूची दिखाता है जिनका अभी तक जवाब नहीं मिला, और जिन्हें "नहीं" माना जाता है। लॉग लेवल debug पर हो, तो हर कथन, उसका जवाब और उसे हाँ माना गया या नहीं, लॉग होते हैं। लॉग लेवल देखें। सुधार कम ही प्रीसेट में होता है। आम तौर पर वजह शब्दों का चुनाव होता है, या ऐसी ब्रांच जिसमें वह चीज़ है जिसके बिना प्रॉम्प्ट काम नहीं चला सकता।
मिलती-जुलती गाइड
- निर्णय मॉडल
- प्रॉम्प्ट मैक्रो
- प्रीसेट वेरिएबल
- ग्रुप चैट और ग्रुप Conversation