कस्टम एजेंट बनाना
कस्टम एजेंट ऐसा मददगार है जिसे आप खुद लिखते हैं: उसके निर्देश, वह कब चले और वह क्या बदल सकता है, यह सब आप तय करते हैं। जब कोई डाउनलोड करने लायक एजेंट आपका मनचाहा काम न करे, तब अपना एजेंट बनाएँ। अगर इंस्टॉल किया हुआ कोई एजेंट आपकी ज़रूरत के करीब है, तो Agents (एजेंट) पैनल में उसके कार्ड पर माउस ले जाएँ और Copy agent पर क्लिक करें। इससे उसकी एक कॉपी बनती है, जिसे आप बदल सकते हैं।
शुरू करने से पहले: एजेंट: आपकी चैट में मदद करने वाले AI पढ़ें। एजेंट बना देने भर से वह चलने नहीं लगता। बाद में उसे किसी चैट में जोड़ना पड़ता है। कस्टम एजेंट हर चैट मोड में चलते हैं।
एक कस्टम एजेंट बनाना
- Agents पैनल खोलें।
- ऊपर की तरफ़ New (प्लस आइकन) पर क्लिक करें। पूरे पेज वाला एजेंट एडिटर खुलता है।
- टाइटल फ़ील्ड में नाम टाइप करें, जैसे
Weather Reporter। - Description और Author भरें।
- Pipeline Phase चुनें (Pipeline Phase देखें)।
- Custom Agent Abilities में वे क्षमताएँ चालू करें, जो एजेंट को चाहिए।
- एजेंट जो बनाता है, उससे मेल खाता Result Type चुनें। पक्का न हो, तो Context Injection चुनें। इसके लिए न कोई क्षमता चाहिए, न आउटपुट का कोई सख्त फ़ॉर्मैट।
- Prompt Template में उसके निर्देश लिखें।
- ऊपर की पट्टी में Save पर क्लिक करें। हरा Saved बैज दिखता है।
अब एजेंट Agents पैनल के Custom Agents हिस्से में दिखता है। इसे इस्तेमाल करने के लिए कोई चैट खोलें, Chat Settings (चैट सेटिंग्स) में जाएँ, Enable Agents चालू करें और Custom Agents से एजेंट जोड़ें।
Pipeline Phase
Pipeline Phase तय करता है कि एजेंट कब चलेगा।
- Pre-Generation: जवाब से पहले। यह कॉन्टेक्स्ट जोड़ सकता है या प्रॉम्प्ट बदल सकता है।
- Parallel: जवाब के साथ-साथ। इसे पूरा हुआ जवाब नहीं दिखता।
- Post-Processing: जवाब के बाद। यह जवाब पढ़ सकता है और कुछ रिज़ल्ट टाइप के साथ उसे बदल भी सकता है।
कुछ रिज़ल्ट टाइप फ़ेज़ खुद तय कर देते हैं। Text Rewrite फ़ेज़ को Post-Processing पर बदल देता है। Prompt Patch और Character Activity उसे Pre-Generation पर बदल देते हैं।
Post-Processing एजेंट को एक Turn Data Access सेक्शन भी मिलता है, जिसमें दो टॉगल हैं: Pre-generation injections और Parallel agent results। इन्हें चालू करने पर एजेंट पढ़ सकता है कि उसी टर्न में दूसरे एजेंट ने क्या बनाया।
Custom Agent Abilities
क्षमताएँ ऐसी ताकतें हैं, जिन्हें आपको खुद चालू करना पड़ता है। हर क्षमता तब तक बंद रहती है, जब तक आप उसका टॉगल चालू न करें।
- Create lorebooks: लोर आउटपुट का कोई टारगेट न हो, तो एजेंट की बनाई नई लोरबुक तैयार करना।
- Edit lorebooks: लोरबुक एंट्री लिखना या लोरबुक अपडेट वाले रिज़ल्ट लौटाना।
- Edit messages: जेनरेट हुए संदेश का टेक्स्ट बदलना, या उसमें आगे बढ़ने के विकल्प जोड़ना।
- Edit trackers: गेम, कैरेक्टर, पर्सोना या कस्टम ट्रैकर की स्थिति अपडेट करना।
- Frontend styling: जेनरेशन के दौरान कुछ देर के लिए विज़ुअल स्टाइल लगाना।
- Change chat backgrounds: किसी चैट का बैकग्राउंड बदलना और सेव करना।
- Change character sprites: चैट में दिख रहे कैरेक्टर और पर्सोना के एक्सप्रेशन बदलना।
- Control media playback: Spotify, YouTube या लोकल म्यूज़िक को कंट्रोल करना।
- Control haptic devices: जुड़ी हुई हैप्टिक डिवाइस को सीमित कमांड भेजना।
- Edit About Me details: उस चैट का About Me टेक्स्ट बदलना। पब्लिक कार्ड के बदलावों के लिए फिर भी आपकी मंज़ूरी चाहिए।
- Image generation: इमेज जेनरेटर को इमेज प्रॉम्प्ट भेजना।
- Vectors/embeddings: वेक्टर कॉन्टेक्स्ट इस्तेमाल करना। वेक्टर की मदद से Marinara टेक्स्ट को मतलब के आधार पर खोज पाता है।
- Main prompt edits: मुख्य मॉडल को भेजा जाने वाला प्रॉम्प्ट बदलना।
- Create character cards: नया कैरेक्टर कार्ड सुझाना। वह तभी सेव होता है, जब आप उसे देखकर स्वीकार करें।
- Choose active chat characters: तय करना कि मौजूदा Conversation या Roleplay जवाब के लिए जुड़े हुए कैरेक्टर में से कौन-से चालू रहें।
Edit lorebooks चालू करने पर एक Lorebook Writer सेक्शन दिखने लगता है। Allow lorebook entry writes चालू करें और Target lorebook में एक लोरबुक चुनें। एजेंट सिर्फ़ उसी लोरबुक में लिख सकता है।
Result Type
Result Type से Marinara को पता चलता है कि एजेंट का जवाब कैसे पढ़ना है। ज़्यादातर टाइप JSON की उम्मीद रखते हैं। JSON एक टेक्स्ट फ़ॉर्मैट है, जो ब्रेस और उद्धरण-चिह्नों के साथ लिखा जाता है। कोई टाइप तब तक ग्रे रहता है, जब तक आप उसकी ज़रूरी क्षमता चालू न करें।
जिन टाइप के लिए कोई क्षमता नहीं चाहिए:
- Context Injection: जेनरेशन से पहले टेक्स्ट जोड़ता है, या उसके बाद नोट दर्ज करता है। शुरुआत के लिए सबसे आसान।
जिन टाइप के लिए Edit messages चाहिए:
- Text Rewrite: जवाब के बाद संदेश का टेक्स्ट बदल देता है।
- Interactive Choices: संदेश में आगे बढ़ने के विकल्प जोड़ता है।
जिन टाइप के लिए Edit trackers चाहिए:
- Character Tracker: सीन में मौजूद कैरेक्टर अपडेट करता है।
- Persona Stats: पर्सोना के स्टैट्स, स्टेटस और इन्वेंटरी अपडेट करता है।
- Custom Tracker: आपके कस्टम ट्रैकर के फ़ील्ड बदल देता है।
- Game State: वर्ल्ड स्टेट जैसा गेम डेटा अपडेट करता है।
बाकी टाइप, जिनमें से हर एक की अपनी क्षमता है:
- Lorebook Update (Edit lorebooks): लोरबुक एंट्री बनाता या अपडेट करता है।
- Image Prompt (Image generation): इमेज जेनरेटर से सीन बनवाता है।
- Prompt Patch (Main prompt edits): प्रॉम्प्ट के हिस्से जोड़ता है, शुरू में लगाता है या बदल देता है।
- Frontend Style (Frontend styling): कुछ देर के लिए स्टाइल का असर लगाता है।
- Background Change (Change chat backgrounds): कोई उपलब्ध बैकग्राउंड चुनता और सेव करता है।
- Sprite Change (Change character sprites): चैट में दिख रहे एक्सप्रेशन बदलता है।
- Spotify Control, YouTube Control, Local Music Control (Control media playback): प्लेबैक कंट्रोल करते हैं।
- Haptic Command (Control haptic devices): हैप्टिक डिवाइस को सीमित कमांड भेजता है।
- About Me Update (Edit About Me details): उस चैट का About Me टेक्स्ट अपडेट करता है और पब्लिक बदलाव सुझाता है।
- Character Card Creation (Create character cards): आपकी मंज़ूरी के लिए एक कैरेक्टर कार्ड सुझाता है, जिसे बदला जा सकता है।
- Character Activity (Choose active chat characters): मौजूदा जवाब के लिए इस्तेमाल होने वाले कैरेक्टर कार्ड चुनता है। यह जवाब से पहले चलता है और इसे जुड़े हुए कैरेक्टर में से कम से कम एक को चुनना होता है।
किसी चैट में इमेज एजेंट के कंट्रोल
Image generation क्षमता वाले एजेंट को Chat Settings → Agents → Custom Agents (चैट सेटिंग्स → एजेंट → कस्टम एजेंट) में दो अतिरिक्त कंट्रोल मिलते हैं।
- Image model: सिर्फ़ इस चैट में इस एजेंट का इमेज कनेक्शन बदलता है। एजेंट की अपनी सेटिंग रखने के लिए इसे Agent default पर छोड़ दें। चैट का Image Style भी कस्टम एजेंट की इमेज पर लागू होता है।
- Camera button: सक्रिय करने वाले कीवर्ड का इंतज़ार किए बिना अभी इमेज बनाता है। अगर एजेंट का टेम्पलेट प्रॉम्प्ट लिखने से मना कर दे, तो इमेज की जगह एरर वाला टोस्ट दिखता है।
Activation Keywords
डिफ़ॉल्ट रूप से एजेंट अपनी सामान्य आवृत्ति (यानी वह कितनी बार चलता है) पर चलता है। Activation Keywords की मदद से एजेंट तब तक छूटा रहता है, जब तक सीन उससे जुड़ा न हो। इससे टोकन बचते हैं।
- Activation Keywords में हर पंक्ति पर एक कीवर्ड या वाक्यांश टाइप करें, जैसे
tavernयाsecret door। - Scan Depth में यह संख्या डालें कि कितने हाल के संदेशों में खोजना है। डिफ़ॉल्ट 5 है और ज़्यादा से ज़्यादा 200।
इसके बाद एजेंट तभी चलता है, जब उन संदेशों में कोई कीवर्ड आता है। फ़िल्टर बंद करने के लिए बॉक्स खाली छोड़ दें। आवृत्ति और सक्रिय करने वाला सवाल, अगर हो, फिर भी लागू रहते हैं।
टूल जोड़ना
एजेंट टूल चला सकता है। टूल ऐसे फ़ंक्शन हैं, जिन्हें AI कुछ लाने या बदलने के लिए चलाता है और फिर उनका नतीजा पढ़ता है। इसे फ़ंक्शन कॉलिंग भी कहते हैं।
- एजेंट एडिटर में Tools / Function Calling खोलें और हर मनचाहा टूल चालू करें। लिस्ट में बिल्ट-इन टूल भी हैं और आपके अपने टूल भी। अपना टूल बनाने के लिए कस्टम टूल देखें।
- Chat Settings में Function Calling खोलें और Enable Tool Use चालू करें। इसके बिना एजेंट के टूल बंद रहते हैं।
इंपोर्ट किए गए एजेंट को टूल की पहुँच कभी नहीं मिलती। इंपोर्ट किए गए एजेंट को देख लें, फिर उसके टूल खुद चुनें।
एक रन में एजेंट को ज़्यादा से ज़्यादा 16 राउंड टूल कॉल मिलते हैं (सर्वर का MAX_TOOL_ROUNDS कम हो तो इससे कम), फिर उसके पास जो है, उसी से वह जवाब देता है। जो मॉडल एक बार में एक ही टूल कॉल करता है, वह हर कॉल पर एक राउंड खर्च करता है, इसलिए बहुत सारी एंट्री सेव करने वाला एजेंट एक ही जवाब में कई कॉल करे। लोरबुक बैकफ़िल रन को 64 राउंड तक मिलते हैं।
Named prompt options
एक एजेंट में प्रॉम्प्ट के कई रूप रखे जा सकते हैं, ताकि हर चैट एजेंट को बदले बिना उनमें से एक चुन सके।
- Prompt Template के नीचे Named prompt options ढूँढें।
- Add option पर क्लिक करें।
- उसे नाम और छोटा विवरण दें, फिर उसका पूरा प्रॉम्प्ट लिखें।
जब कोई इस एजेंट को किसी चैट में जोड़ता है, तो Prompt Mode ड्रॉपडाउन में आपके विकल्प दिखते हैं। कोई विकल्प न हो, तो सिर्फ़ डिफ़ॉल्ट प्रॉम्प्ट दिखता है।
दूसरी सेटिंग्स
- Model override: इस एजेंट के लिए कोई दूसरा मॉडल इस्तेमाल करें, जैसे कोई सस्ता मॉडल। चैट का मॉडल इस्तेमाल करने के लिए इसे खाली छोड़ दें। एजेंट उस कनेक्शन पर सेव किए गए जेनरेशन पैरामीटर भेजता है। एजेंट के लिए पैरामीटर देखें।
- Agent Budget: Context Size बताता है कि एजेंट कितने हाल के संदेश पढ़ता है (डिफ़ॉल्ट 5)। Max Output Tokens आउटपुट के लिए रखी गई जगह है (डिफ़ॉल्ट 4096, 128 से 32768 तक)।
- Add as Prompt Section: एजेंट के ताज़ा आउटपुट को एक सेक्शन के रूप में उपलब्ध कराता है, जिसे आप प्रॉम्प्ट प्रीसेट में रख सकते हैं।
{{user}} और {{char}} जैसे मैक्रो Prompt Template में काम करते हैं। मैक्रो देखें।
एक पूरा उदाहरण
यह एजेंट हर जवाब को ब्रिटिश अंग्रेज़ी में दोबारा लिखता है।
- इसका नाम
British English Editorरखें। - Custom Agent Abilities में Edit messages चालू करें।
- Result Type में Text Rewrite चुनें। फ़ेज़ बदलकर Post-Processing हो जाता है।
- यह टेक्स्ट Prompt Template में पेस्ट करें:
You are a copy editor. Rewrite the latest reply into British English.
Change spelling and vocabulary only. Do not change the meaning, tone, or events.
Return JSON with an "editedText" field holding the full rewritten reply,
and a "changes" array of short notes describing what you changed.- Save पर क्लिक करें।
- कोई Roleplay चैट खोलें, Chat Settings में Enable Agents चालू करें और Custom Agents से एजेंट जोड़ें।
हर जवाब के बाद एजेंट इस तरह का JSON लौटाता है:
{"editedText":"The colour of the harbour caught her eye.","changes":[{"description":"color to colour, harbor to harbour"}]}Marinara जवाब की जगह editedText लगा देता है। changes वाले नोट छोटे सारांश के रूप में दिखते हैं।
एजेंट इंपोर्ट और एक्सपोर्ट करना
एक एजेंट एक्सपोर्ट करने के लिए एडिटर की ऊपरी पट्टी में Export agent (अपलोड आइकन) पर क्लिक करें। फ़ाइल में एजेंट का प्रॉम्प्ट और सेटिंग्स होती हैं, कस्टम टूल की परिभाषाएँ कभी नहीं। कई एजेंट एक्सपोर्ट करने के लिए Agents पैनल में Select agents इस्तेमाल करें, उन्हें चुनें और एक्सपोर्ट करें।
बाहर से इंपोर्ट डिफ़ॉल्ट रूप से बंद रहता है।
- Settings → Advanced → Danger Zone (सेटिंग्स → एडवांस्ड → डेंजर ज़ोन) खोलें और Allow custom Agent imports चालू करें।
.envमें कोई बदलाव नहीं करना पड़ता। - Agents पैनल में Import agents पर क्लिक करें और एजेंट फ़ाइलें या कोई फ़ोल्डर चुनें।
- Marinara जो परमिशन लिस्ट दिखाता है, उसे देखें। सिर्फ़ वही मंज़ूर करें, जो एजेंट को चाहिए। बिना टिक वाली क्षमताएँ बंद रहती हैं।
यह रोक सिर्फ़ फ़ाइलों, फ़ोल्डरों या कस्टम रिपॉज़िटरी से आने वाले एजेंट पर लागू होती है। आपके बनाए एजेंट और Agent Organizer (एजेंट ऑर्गनाइज़र) से आए आधिकारिक एजेंट आम तरीके से चलते हैं। इंपोर्ट की गई हर फ़ाइल को नई कस्टम पहचान मिलती है, इसलिए वह किसी आधिकारिक एजेंट की जगह नहीं ले सकती।
सुरक्षा के लिए Marinara पैकेज में आए फ़ंक्शन अनदेखा करता है, टूल का चुनाव हटा देता है, अस्थायी CSS साफ़ करता है, और इंपोर्ट किया गया एजेंट संदेश, ट्रैकर, लोरबुक, बैकग्राउंड, स्प्राइट, मीडिया, हैप्टिक्स, About Me डेटा, प्रॉम्प्ट या इमेज बदल पाए, इससे पहले मंज़ूर की गई क्षमताएँ जाँचता है। भरोसेमंद फ़ंक्शन अलग से इंपोर्ट करें, उन्हें देख लें, और खुद एजेंट से जोड़ें। Danger Zone वाला टॉगल बंद करने पर इंपोर्ट किए गए एजेंट चलना बंद हो जाते हैं।
सक्रिय करने वाले सवाल
सक्रिय करने वाला सवाल पूछता है कि हाल के सीन को आपके एजेंट की ज़रूरत है या नहीं। यह दूसरे शब्दों में कही गई वे बातें भी पकड़ लेता है, जो कीवर्ड से छूट जाती हैं। इसके लिए Decision model (निर्णय मॉडल) चाहिए, यानी एक छोटा मॉडल जो हाँ-या-ना वाले सवालों के जवाब देता है। इसे Connections पैनल में चुनें। निर्णय मॉडल देखें। Decision model डिफ़ॉल्ट रूप से None (कोई नहीं) पर रहता है। तब सवाल वाली फ़ील्ड बंद रहती हैं, और सवाल वाला एजेंट ऐसे चलता है जैसे उसमें कोई सवाल हो ही नहीं।
- कस्टम एजेंट खोलें।
- 500 अक्षर तक का Question (सवाल) टाइप करें। इसमें
{{user}}और{{char}}मैक्रो काम करते हैं। - Run when probability is at least (संभावना कम से कम इतनी हो तो चलाएँ) में इस एजेंट की सीमा सेट करें। "हाँ" की संभावना इस सीमा तक पहुँचे, तो एजेंट चलता है, इसलिए ऊँची वैल्यू ज़्यादा रन छोड़ती है। एडिटर आपके मॉडल के लिए सुझाई गई वैल्यू दिखाता है: लोकल चैट मॉडल और Decision अकाउंट के लिए 0.5, या बिल्ट-इन Open-Jev मॉडल के लिए 0.1। मॉडल बदलने के बाद इसे अपनी चैट में जाँच लें। सीमाएँ देखें।
- वैकल्पिक: Bypass the question after this many messages without a successful run (सफल रन के बिना इतने संदेश बाद सवाल छोड़ दें) सेट करें। इतने संदेशों के बाद सवाल छोड़ दिया जाता है, ताकि लगातार "नहीं" कहने वाला मॉडल एजेंट को हमेशा के लिए चुप न कर सके। कीवर्ड और आवृत्ति फिर भी लागू रहते हैं।
सवाल को आखिरी संदेश के बारे में एक कथन की तरह लिखें। छोटे मॉडल ने Did the scene change? के मुकाबले The latest message moves the scene to a new place. जैसे कथन का जवाब ज़्यादा भरोसे से दिया। कथन लिखना देखें।
यह कैसे चलता है:
- कीवर्ड और आवृत्ति पहले जाँचे जाते हैं, इसलिए छूटे हुए एजेंट पर कोई निर्णय रिक्वेस्ट खर्च नहीं होती। एक जैसी स्कैन डेप्थ वाले सवाल हर फ़ेज़ में एक साथ बैच किए जाते हैं।
- Scan Depth कीवर्ड और सवाल, दोनों के लिए इस्तेमाल होने वाले संदेश तय करता है।
- प्री-जेनरेशन और समानांतर एजेंट जवाब से पहले की चैट इस्तेमाल करते हैं। पोस्ट-प्रोसेसिंग एजेंट पूरा हुआ जवाब भी देखते हैं।
- टाइमआउट, मॉडल का उपलब्ध न होना या अमान्य जवाब एजेंट को सामान्य तरीके से चलने देता है। समय सीमा मॉडल के प्रकार पर, और इस पर निर्भर करती है कि मॉडल को पहले सोचना है या नहीं। समय सीमाएँ देखें।
- सक्रिय करने वाले सवाल या निर्णय कथनों वाले इंपोर्ट किए गए एजेंट पर एक नोटिस दिखता है, जिसमें निर्णय मॉडल गाइड का लिंक होता है। निर्णय मॉडल के बिना एजेंट तब चलता है, जब भी कीवर्ड और Trigger Cadence (चलने की आवृत्ति) इजाज़त दें, और प्रॉम्प्ट के कथनों का जवाब "नहीं" माना जाता है।
सक्रिय करने वाले सवाल सिर्फ़ कस्टम एजेंट पर लागू होते हैं।
एजेंट प्रॉम्प्ट के निर्णय कथन
सक्रिय करने वाला सवाल तय करता है कि एजेंट चले या नहीं। Prompt Template में लिखा निर्णय कथन तय करता है कि चलते हुए एजेंट को क्या बताया जाए। इसकी सिंटैक्स कंडीशनल प्रॉम्प्ट में है:
{{#if decision:"In the latest message, the characters move to a different location"}}
Update the location field.
{{else}}
Leave the location as it is.
{{/if}}शांत टर्न पर छोटा प्रॉम्प्ट भेजने के लिए इनका इस्तेमाल करें। ट्रैकर स्थान तभी अपडेट कर सकता है, जब वह बदला हो। इमेज एजेंट नई तस्वीर का विवरण तभी लिख सकता है, जब सीन बदला हो। म्यूज़िक एजेंट ट्रैक तभी बदल सकता है, जब मूड बदला हो। कई निर्देश सेट में से एक चुनने के लिए {{#if decision_choice:"The kind of scene in the latest message" == "combat"}}, फिर {{else if decision_choice:"The kind of scene in the latest message" == "dialogue"}} और इसी तरह आगे इस्तेमाल करें। कंडीशनल प्रॉम्प्ट देखें।
- प्री-जेनरेशन और समानांतर एजेंट जवाब से पहले की चैट पढ़ते हैं और मुख्य प्रॉम्प्ट के साथ जवाब साझा करते हैं। पोस्ट-प्रोसेसिंग एजेंट पूरा हुआ जवाब पढ़ते हैं, और उनके कथन उसके साथ फिर से पूछे जाते हैं।
- किसी एजेंट को दोबारा चलाने पर उसी टर्न, मॉडल और कथनों के वे सफल जवाब फिर इस्तेमाल होते हैं, जो अब भी कैश में हैं। जवाब दोबारा इस्तेमाल करना देखें।
- एजेंट प्रॉम्प्ट में
{{char}}चैट के हर कैरेक्टर का नाम देता है, इसलिए ग्रुप में{{char}} is angryसे "Kaelen, Alyssa is angry" बनता है। कैरेक्टर का नाम लिखें, या "a character" लिखें। - जवाब न मिले, तो कथन का जवाब "नहीं" माना जाता है।
{{else}}ब्रांच को समझदारी वाला रखें, क्योंकि कई यूज़र के पास निर्णय मॉडल नहीं होता।
Marinara-Agents से इंस्टॉल किए गए एजेंट भी प्रॉम्प्ट इसी तरह रेंडर करते हैं।
मिलती-जुलती गाइड
- एजेंट: आपकी चैट में मदद करने वाले AI
- निर्णय मॉडल
- डाउनलोड किए जाने वाले एजेंट का रेफ़रेंस
- कस्टम टूल
- मैक्रो