कस्टम एजेंट बनाना

कस्टम एजेंट ऐसा मददगार है जिसे आप खुद लिखते हैं: उसके निर्देश, वह कब चले और वह क्या बदल सकता है, यह सब आप तय करते हैं। जब कोई डाउनलोड करने लायक एजेंट आपका मनचाहा काम न करे, तब अपना एजेंट बनाएँ। अगर इंस्टॉल किया हुआ कोई एजेंट आपकी ज़रूरत के करीब है, तो Agents (एजेंट) पैनल में उसके कार्ड पर माउस ले जाएँ और Copy agent पर क्लिक करें। इससे उसकी एक कॉपी बनती है, जिसे आप बदल सकते हैं।

शुरू करने से पहले: एजेंट: आपकी चैट में मदद करने वाले AI पढ़ें। एजेंट बना देने भर से वह चलने नहीं लगता। बाद में उसे किसी चैट में जोड़ना पड़ता है। कस्टम एजेंट हर चैट मोड में चलते हैं।

एक कस्टम एजेंट बनाना

  1. Agents पैनल खोलें।
  2. ऊपर की तरफ़ New (प्लस आइकन) पर क्लिक करें। पूरे पेज वाला एजेंट एडिटर खुलता है।
  3. टाइटल फ़ील्ड में नाम टाइप करें, जैसे Weather Reporter।
  4. Description और Author भरें।
  5. Pipeline Phase चुनें (Pipeline Phase देखें)।
  6. Custom Agent Abilities में वे क्षमताएँ चालू करें, जो एजेंट को चाहिए।
  7. एजेंट जो बनाता है, उससे मेल खाता Result Type चुनें। पक्का न हो, तो Context Injection चुनें। इसके लिए न कोई क्षमता चाहिए, न आउटपुट का कोई सख्त फ़ॉर्मैट।
  8. Prompt Template में उसके निर्देश लिखें।
  9. ऊपर की पट्टी में Save पर क्लिक करें। हरा Saved बैज दिखता है।

अब एजेंट Agents पैनल के Custom Agents हिस्से में दिखता है। इसे इस्तेमाल करने के लिए कोई चैट खोलें, Chat Settings (चैट सेटिंग्स) में जाएँ, Enable Agents चालू करें और Custom Agents से एजेंट जोड़ें।

Pipeline Phase

Pipeline Phase तय करता है कि एजेंट कब चलेगा।

कुछ रिज़ल्ट टाइप फ़ेज़ खुद तय कर देते हैं। Text Rewrite फ़ेज़ को Post-Processing पर बदल देता है। Prompt Patch और Character Activity उसे Pre-Generation पर बदल देते हैं।

Post-Processing एजेंट को एक Turn Data Access सेक्शन भी मिलता है, जिसमें दो टॉगल हैं: Pre-generation injections और Parallel agent results। इन्हें चालू करने पर एजेंट पढ़ सकता है कि उसी टर्न में दूसरे एजेंट ने क्या बनाया।

Custom Agent Abilities

क्षमताएँ ऐसी ताकतें हैं, जिन्हें आपको खुद चालू करना पड़ता है। हर क्षमता तब तक बंद रहती है, जब तक आप उसका टॉगल चालू न करें।

Edit lorebooks चालू करने पर एक Lorebook Writer सेक्शन दिखने लगता है। Allow lorebook entry writes चालू करें और Target lorebook में एक लोरबुक चुनें। एजेंट सिर्फ़ उसी लोरबुक में लिख सकता है।

Result Type

Result Type से Marinara को पता चलता है कि एजेंट का जवाब कैसे पढ़ना है। ज़्यादातर टाइप JSON की उम्मीद रखते हैं। JSON एक टेक्स्ट फ़ॉर्मैट है, जो ब्रेस और उद्धरण-चिह्नों के साथ लिखा जाता है। कोई टाइप तब तक ग्रे रहता है, जब तक आप उसकी ज़रूरी क्षमता चालू न करें।

जिन टाइप के लिए कोई क्षमता नहीं चाहिए:

जिन टाइप के लिए Edit messages चाहिए:

जिन टाइप के लिए Edit trackers चाहिए:

बाकी टाइप, जिनमें से हर एक की अपनी क्षमता है:

किसी चैट में इमेज एजेंट के कंट्रोल

Image generation क्षमता वाले एजेंट को Chat Settings → Agents → Custom Agents (चैट सेटिंग्स → एजेंट → कस्टम एजेंट) में दो अतिरिक्त कंट्रोल मिलते हैं।

Activation Keywords

डिफ़ॉल्ट रूप से एजेंट अपनी सामान्य आवृत्ति (यानी वह कितनी बार चलता है) पर चलता है। Activation Keywords की मदद से एजेंट तब तक छूटा रहता है, जब तक सीन उससे जुड़ा न हो। इससे टोकन बचते हैं।

  1. Activation Keywords में हर पंक्ति पर एक कीवर्ड या वाक्यांश टाइप करें, जैसे tavern या secret door।
  2. Scan Depth में यह संख्या डालें कि कितने हाल के संदेशों में खोजना है। डिफ़ॉल्ट 5 है और ज़्यादा से ज़्यादा 200।

इसके बाद एजेंट तभी चलता है, जब उन संदेशों में कोई कीवर्ड आता है। फ़िल्टर बंद करने के लिए बॉक्स खाली छोड़ दें। आवृत्ति और सक्रिय करने वाला सवाल, अगर हो, फिर भी लागू रहते हैं।

टूल जोड़ना

एजेंट टूल चला सकता है। टूल ऐसे फ़ंक्शन हैं, जिन्हें AI कुछ लाने या बदलने के लिए चलाता है और फिर उनका नतीजा पढ़ता है। इसे फ़ंक्शन कॉलिंग भी कहते हैं।

  1. एजेंट एडिटर में Tools / Function Calling खोलें और हर मनचाहा टूल चालू करें। लिस्ट में बिल्ट-इन टूल भी हैं और आपके अपने टूल भी। अपना टूल बनाने के लिए कस्टम टूल देखें।
  2. Chat Settings में Function Calling खोलें और Enable Tool Use चालू करें। इसके बिना एजेंट के टूल बंद रहते हैं।

इंपोर्ट किए गए एजेंट को टूल की पहुँच कभी नहीं मिलती। इंपोर्ट किए गए एजेंट को देख लें, फिर उसके टूल खुद चुनें।

एक रन में एजेंट को ज़्यादा से ज़्यादा 16 राउंड टूल कॉल मिलते हैं (सर्वर का MAX_TOOL_ROUNDS कम हो तो इससे कम), फिर उसके पास जो है, उसी से वह जवाब देता है। जो मॉडल एक बार में एक ही टूल कॉल करता है, वह हर कॉल पर एक राउंड खर्च करता है, इसलिए बहुत सारी एंट्री सेव करने वाला एजेंट एक ही जवाब में कई कॉल करे। लोरबुक बैकफ़िल रन को 64 राउंड तक मिलते हैं।

Named prompt options

एक एजेंट में प्रॉम्प्ट के कई रूप रखे जा सकते हैं, ताकि हर चैट एजेंट को बदले बिना उनमें से एक चुन सके।

  1. Prompt Template के नीचे Named prompt options ढूँढें।
  2. Add option पर क्लिक करें।
  3. उसे नाम और छोटा विवरण दें, फिर उसका पूरा प्रॉम्प्ट लिखें।

जब कोई इस एजेंट को किसी चैट में जोड़ता है, तो Prompt Mode ड्रॉपडाउन में आपके विकल्प दिखते हैं। कोई विकल्प न हो, तो सिर्फ़ डिफ़ॉल्ट प्रॉम्प्ट दिखता है।

दूसरी सेटिंग्स

{{user}} और {{char}} जैसे मैक्रो Prompt Template में काम करते हैं। मैक्रो देखें।

एक पूरा उदाहरण

यह एजेंट हर जवाब को ब्रिटिश अंग्रेज़ी में दोबारा लिखता है।

  1. इसका नाम British English Editor रखें।
  2. Custom Agent Abilities में Edit messages चालू करें।
  3. Result Type में Text Rewrite चुनें। फ़ेज़ बदलकर Post-Processing हो जाता है।
  4. यह टेक्स्ट 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.
  1. Save पर क्लिक करें।
  2. कोई 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 इस्तेमाल करें, उन्हें चुनें और एक्सपोर्ट करें।

बाहर से इंपोर्ट डिफ़ॉल्ट रूप से बंद रहता है।

  1. Settings → Advanced → Danger Zone (सेटिंग्स → एडवांस्ड → डेंजर ज़ोन) खोलें और Allow custom Agent imports चालू करें। .env में कोई बदलाव नहीं करना पड़ता।
  2. Agents पैनल में Import agents पर क्लिक करें और एजेंट फ़ाइलें या कोई फ़ोल्डर चुनें।
  3. Marinara जो परमिशन लिस्ट दिखाता है, उसे देखें। सिर्फ़ वही मंज़ूर करें, जो एजेंट को चाहिए। बिना टिक वाली क्षमताएँ बंद रहती हैं।

यह रोक सिर्फ़ फ़ाइलों, फ़ोल्डरों या कस्टम रिपॉज़िटरी से आने वाले एजेंट पर लागू होती है। आपके बनाए एजेंट और Agent Organizer (एजेंट ऑर्गनाइज़र) से आए आधिकारिक एजेंट आम तरीके से चलते हैं। इंपोर्ट की गई हर फ़ाइल को नई कस्टम पहचान मिलती है, इसलिए वह किसी आधिकारिक एजेंट की जगह नहीं ले सकती।

सुरक्षा के लिए Marinara पैकेज में आए फ़ंक्शन अनदेखा करता है, टूल का चुनाव हटा देता है, अस्थायी CSS साफ़ करता है, और इंपोर्ट किया गया एजेंट संदेश, ट्रैकर, लोरबुक, बैकग्राउंड, स्प्राइट, मीडिया, हैप्टिक्स, About Me डेटा, प्रॉम्प्ट या इमेज बदल पाए, इससे पहले मंज़ूर की गई क्षमताएँ जाँचता है। भरोसेमंद फ़ंक्शन अलग से इंपोर्ट करें, उन्हें देख लें, और खुद एजेंट से जोड़ें। Danger Zone वाला टॉगल बंद करने पर इंपोर्ट किए गए एजेंट चलना बंद हो जाते हैं।

सक्रिय करने वाले सवाल

सक्रिय करने वाला सवाल पूछता है कि हाल के सीन को आपके एजेंट की ज़रूरत है या नहीं। यह दूसरे शब्दों में कही गई वे बातें भी पकड़ लेता है, जो कीवर्ड से छूट जाती हैं। इसके लिए Decision model (निर्णय मॉडल) चाहिए, यानी एक छोटा मॉडल जो हाँ-या-ना वाले सवालों के जवाब देता है। इसे Connections पैनल में चुनें। निर्णय मॉडल देखें। Decision model डिफ़ॉल्ट रूप से None (कोई नहीं) पर रहता है। तब सवाल वाली फ़ील्ड बंद रहती हैं, और सवाल वाला एजेंट ऐसे चलता है जैसे उसमें कोई सवाल हो ही नहीं।

  1. कस्टम एजेंट खोलें।
  2. 500 अक्षर तक का Question (सवाल) टाइप करें। इसमें {{user}} और {{char}} मैक्रो काम करते हैं।
  3. Run when probability is at least (संभावना कम से कम इतनी हो तो चलाएँ) में इस एजेंट की सीमा सेट करें। "हाँ" की संभावना इस सीमा तक पहुँचे, तो एजेंट चलता है, इसलिए ऊँची वैल्यू ज़्यादा रन छोड़ती है। एडिटर आपके मॉडल के लिए सुझाई गई वैल्यू दिखाता है: लोकल चैट मॉडल और Decision अकाउंट के लिए 0.5, या बिल्ट-इन Open-Jev मॉडल के लिए 0.1। मॉडल बदलने के बाद इसे अपनी चैट में जाँच लें। सीमाएँ देखें।
  4. वैकल्पिक: 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. जैसे कथन का जवाब ज़्यादा भरोसे से दिया। कथन लिखना देखें।

यह कैसे चलता है:

सक्रिय करने वाले सवाल सिर्फ़ कस्टम एजेंट पर लागू होते हैं।

एजेंट प्रॉम्प्ट के निर्णय कथन

सक्रिय करने वाला सवाल तय करता है कि एजेंट चले या नहीं। 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"}} और इसी तरह आगे इस्तेमाल करें। कंडीशनल प्रॉम्प्ट देखें।

Marinara-Agents से इंस्टॉल किए गए एजेंट भी प्रॉम्प्ट इसी तरह रेंडर करते हैं।

मिलती-जुलती गाइड