डायनामिक वेरिएबल्स
अपने एजेंट के व्यवहार को वैयक्तिकृत करने के लिए रनटाइम वैल्यू पास करें।
डायनामिक वेरिएबल्स आपको अपने एजेंट के संदेशों, सिस्टम प्रॉम्प्ट और टूल्स में रनटाइम वैल्यू शामिल करने देते हैं। इससे आप कई एजेंट बनाए बिना, हर बातचीत को यूज़र के हिसाब से डेटा के साथ वैयक्तिकृत कर सकते हैं।
ओवरव्यू
डायनामिक वेरिएबल्स को आपके एजेंट के कई हिस्सों में इंटीग्रेट किया जा सकता है:
- व्यवहार और संदर्भ को कस्टमाइज़ करने के लिए सिस्टम प्रॉम्प्ट्स
- अभिवादन को वैयक्तिकृत करने के लिए पहले संदेश
- यूज़र-विशिष्ट डेटा पास करने के लिए टूल पैरामीटर और हेडर्स
डायनामिक वेरिएबल्स इन स्थितियों में उपयोगी होते हैं:
- यूज़र नामों के साथ अभिवादन को वैयक्तिकृत करना
- जवाबों में अकाउंट की जानकारी शामिल करना
- टूल कॉल्स को डेटा पास करना
- सब्सक्रिप्शन टियर के आधार पर व्यवहार को कस्टमाइज़ करना
- बातचीत ID या कॉल अवधि जैसी सिस्टम जानकारी एक्सेस करना
डायनामिक वेरिएबल्स तीन तरह की वैल्यू सपोर्ट करते हैं:
सिस्टम डायनामिक वेरिएबल्स
आपके एजेंट के पास हर बातचीत में बिना रनटाइम कॉन्फ़िगरेशन के बिल्ट-इन system__* वेरिएबल्स का एक्सेस होता है। इन वेरिएबल्स के आगे आरक्षित system__ नेमस्पेस लगा होता है और बातचीत आगे बढ़ने के साथ ये अपने-आप अपडेट होते हैं। कस्टम डायनामिक वेरिएबल्स system__ प्रीफ़िक्स का इस्तेमाल नहीं कर सकते या सिस्टम वेरिएबल्स को ओवरराइड नहीं कर सकते।
† से चिह्नित वेरिएबल्स टर्न के बीच बदलते हैं। इन्हें प्रॉम्प्ट टेक्स्ट में रखने से प्रॉम्प्ट कैशिंग रुक सकती है; विकल्पों के लिए सर्वोत्तम तरीके देखें।
एजेंट और बातचीत की पहचान
समय और टाइमज़ोन
टेलीफ़ोनी और मैसेजिंग
ये वेरिएबल्स टेलीफ़ोनी और मैसेजिंग चैनलों के लिए लागू होने पर भरे जाते हैं:
हर टर्न की बातचीत स्थिति
बातचीत इतिहास फ़ॉर्मैट
system__conversation_history वेरिएबल में इस संरचना वाला एक JSON ऑब्जेक्ट होता है:
हर एंट्री में एक role ("user", "agent", या "tool") और इनमें से एक होता है:
message: टर्न की टेक्स्ट सामग्रीtool_requests: एजेंट द्वारा किए गए टूल कॉल्स का एक ऐरे, जिसमें रिज़ॉल्व किए गए पैरामीटर वैल्यू होते हैंtool_results: टूल रिस्पॉन्स का एक ऐरे
अगर किसी टूल रिज़ल्ट या पैरामीटर में नेस्टेड बातचीत इतिहास है, तो अनबाउंडेड रिकर्सिव विस्तार से बचने के लिए उसे प्लेसहोल्डर (जैसे [conversation_history (5 turns)]) से रिडैक्ट कर दिया जाता है।
यह वेरिएबल टूल्स (जैसे वेबहुक या कस्टम LLMs) को बातचीत का संदर्भ पास करने या हैंडऑफ़ के दौरान सब-एजेंट प्रॉम्प्ट्स में बातचीत इतिहास शामिल करने के लिए उपयोगी है।
सीक्रेट डायनामिक वेरिएबल्स
सीक्रेट डायनामिक वेरिएबल्स सामान्य डायनामिक वेरिएबल्स की तरह ही भरे जाते हैं, लेकिन ये ElevenAgents को बताते हैं कि इनका उपयोग केवल डायनामिक वेरिएबल हेडर्स में किया जाना चाहिए और एजेंट के सिस्टम प्रॉम्प्ट या पहले संदेश के हिस्से के रूप में कभी किसी LLM प्रोवाइडर को नहीं भेजा जाना चाहिए।
ऐसे ऑथ टोकन या निजी IDs के लिए सीक्रेट डायनामिक वेरिएबल्स इस्तेमाल करें जिन्हें LLM को नहीं भेजना चाहिए। सीक्रेट डायनामिक वेरिएबल बनाने के लिए, डायनामिक वेरिएबल के आगे secret__ लगाएं।
सीक्रेट वैल्यू रिडैक्ट करके स्टोर की जाती हैं, इसलिए conversations API उन्हें <REDACTED> के रूप में लौटाता है।
कॉल के बाद ट्रांसक्रिप्शन वेबहुक मूल वैल्यू भेजते हैं, इसलिए सुनिश्चित करें कि आपका वेबहुक एंडपॉइंट
उन्हें सीक्रेट के रूप में हैंडल करता है। जिन वैल्यू को आपको conversations API से वापस पढ़ना हो, उनके लिए secret__ प्रीफ़िक्स का इस्तेमाल न करें।
उन्हें सामान्य डायनामिक वेरिएबल्स के रूप में पास करें, या कोई गैर-संवेदनशील आइडेंटिफ़ायर पास करें और
संवेदनशील वैल्यू को अपने सिस्टम पर देखें।
टूल्स से डायनामिक वेरिएबल्स अपडेट करना
अगर टूल कॉल्स एक वैध JSON ऑब्जेक्ट लौटाते हैं, तो वे डायनामिक वेरिएबल्स बना या अपडेट कर सकते हैं। क्या एक्सट्रैक्ट किया जाना चाहिए, यह तय करने के लिए डॉट नोटेशन से ऑब्जेक्ट पाथ सेट करें। अगर फ़ील्ड या पाथ मौजूद नहीं है, तो कुछ भी अपडेट नहीं होगा।
रिस्पॉन्स ऑब्जेक्ट और डॉट नोटेशन का उदाहरण:
- स्टेटस इस पाथ से संबंधित है:
response.status - users ऐरे में पहले यूज़र का ईमेल इस पाथ से संबंधित है:
response.users.0.email
डायनामिक वेरिएबल को पहले यूज़र के ईमेल से अपडेट करने के लिए, असाइनमेंट इस तरह सेट करें।

असाइनमेंट हर वेबहुक टूल पर कॉन्फ़िगर किए जाते हैं; API रेफरेंस में टूल असाइनमेंट्स देखें।
गाइड
ज़रूरी शर्तें:
- एक ElevenLabs अकाउंट
- कॉन्फ़िगर किया हुआ ElevenAgents एजेंट (इसे बनाने के लिए क्विकस्टार्ट देखें)
प्रॉम्प्ट्स में डायनामिक वेरिएबल्स तय करें
अपने इन हिस्सों में डबल कर्ली ब्रेसेज़ {{variable_name}} का इस्तेमाल करके वेरिएबल्स जोड़ें:
- सिस्टम प्रॉम्प्ट्स
- पहले संदेश
- टूल पैरामीटर


टूल्स में डायनामिक वेरिएबल्स तय करें
आप टूल कॉन्फ़िगरेशन में भी डायनामिक वेरिएबल्स तय कर सकते हैं।
नया डायनामिक वेरिएबल बनाने के लिए, वैल्यू टाइप को Dynamic variable पर सेट करें और + बटन पर क्लिक करें।


प्लेसहोल्डर्स सेट करें
रनटाइम पर वेरिएबल्स पास किए बिना टेस्टिंग के लिए डिफ़ॉल्ट वैल्यू कॉन्फ़िगर करें।
डैशबोर्ड से अपडेट करें
CLI से अपडेट करें
API से अपडेट करें
एजेंट के डैशबोर्ड में हर डायनामिक वेरिएबल के लिए डिफ़ॉल्ट वैल्यू सेट करें।

रनटाइम पर वेरिएबल्स पास करें
बातचीत शुरू करते समय, अपने कोड में डायनामिक वेरिएबल्स दें:
सुनिश्चित करें कि आपके पास नवीनतम SDK इंस्टॉल है।
पब्लिक टॉक-टू पेज इंटीग्रेशन
पब्लिक टॉक-टू पेज URL पैरामीटर्स के ज़रिए डायनामिक वेरिएबल्स सपोर्ट करता है, जिससे एजेंट लिंक शेयर करते समय आप बातचीत को वैयक्तिकृत कर सकते हैं। यह खास तौर पर वेबसाइट्स, ईमेल या मार्केटिंग कैंपेन में वैयक्तिकृत एजेंट एम्बेड करने के लिए उपयोगी है।
URL पैरामीटर तरीके
पब्लिक टॉक-टू पेज पर डायनामिक वेरिएबल्स पास करने के दो तरीके हैं:
तरीका 1: Base64-एन्कोडेड JSON
vars पैरामीटर का इस्तेमाल करके वेरिएबल्स को base64-एन्कोडेड JSON ऑब्जेक्ट के रूप में पास करें:
vars पैरामीटर में base64-एन्कोडेड JSON होता है:
तरीका 2: अलग-अलग क्वेरी पैरामीटर्स
var_ प्रीफ़िक्स वाले क्वेरी पैरामीटर्स से वेरिएबल्स पास करें:
पैरामीटर प्राथमिकता
जब दोनों तरीके एक साथ इस्तेमाल किए जाते हैं, तो टकराव रोकने के लिए अलग-अलग var_ पैरामीटर्स की प्राथमिकता base64-एन्कोडेड वेरिएबल्स से ज़्यादा होती है:
इस उदाहरण में user_name, "Jane" (base64-एन्कोडेड vars से) की जगह "John" (var_user_name से) होगा।
इंप्लीमेंटेशन उदाहरण
JavaScript URL जनरेशन
Python URL जनरेशन
मैन्युअल URL निर्माण
सर्वोत्तम तरीके
प्रॉम्प्ट्स में मौजूदा समय रखने के बजाय टाइमज़ोन सेट करें
सिस्टम प्रॉम्प्ट, वर्कफ़्लो नोड्स और प्रक्रियाओं में वेरिएबल्स हर टर्न पर रिज़ॉल्व होते हैं। अगर टर्न के बीच कोई वैल्यू बदलती है, तो प्रॉम्प्ट कैश नहीं हो सकता, जिससे लागत और लेटेंसी बढ़ती है। {{system__time_utc}} और {{system__time_second}} हर टर्न पर बदलते हैं; {{system__time}} और {{system__time_minute}} हर मिनट बदलते हैं।
एजेंट को मौजूदा तारीख और समय देने के लिए, प्रॉम्प्ट टेक्स्ट में {{system__time}} या {{system__time_utc}} रखने के बजाय सिस्टम प्रॉम्प्ट एडिटर में टाइमज़ोन बटन से टाइमज़ोन सेट करें (conversation_config.agent.prompt.timezone)। टाइमज़ोन सेट होने पर, प्लेटफ़ॉर्म कैश किए गए प्रॉम्प्ट प्रीफ़िक्स के बाहर मौजूदा तारीख और समय जोड़ता है, इसलिए आपका सिस्टम प्रॉम्प्ट टर्न्स के बीच कैश रहता है। टाइमज़ोन के बिना, एजेंट को मौजूदा तारीख और समय नहीं मिलता।
अगर आपके प्रॉम्प्ट में तारीख या घंटा इनलाइन चाहिए, तो {{system__time_date}}, {{system__time_hour}}, और {{system__timezone}} को मिलाएं (उदाहरण के लिए, आज {{system__time_date}} है, घंटा {{system__time_hour}} है ({{system__timezone}}))। ये अधिकतम हर घंटे एक बार बदलते हैं।
लाइव स्टेट वेरिएबल्स को टूल पैरामीटर्स और हेडर्स से बाइंड करें
अगर किसी टूल को † से चिह्नित वैल्यू चाहिए, तो उसे प्रॉम्प्ट में रखने के बजाय टूल पैरामीटर या हेडर से बाइंड करें। टूल पैरामीटर्स सिर्फ़ टूल कॉल होने पर रिज़ॉल्व होते हैं, इसलिए वे प्रॉम्प्ट कैशिंग को प्रभावित नहीं करते। LLM बातचीत पहले से देखता है, इसलिए प्रॉम्प्ट्स में {{system__conversation_history}} की शायद ही ज़रूरत होती है।
प्रॉम्प्ट्स में टर्न काउंटर्स के विकल्पों पर विचार करें
अगर आपका प्रॉम्प्ट {{system__agent_turns}} जैसे टर्न काउंटर्स जाँचता है, तो इन विकल्पों पर विचार करें। स्थिर शुरुआती अभिवादन या डिस्क्लोज़र के लिए first_message का इस्तेमाल करें।
पहले जवाब के व्यवहार के लिए, आप बातचीत इतिहास के आधार पर निर्देश लिख सकते हैं (उदाहरण के लिए, “अपने पहले जवाब में, जब आपने अभी तक कॉलर का अभिवादन नहीं किया है…”)। यह LLM द्वारा निर्देश का पालन करने पर निर्भर करता है, इसलिए अपने मॉडल के साथ इसे टेस्ट करें और अगर नतीजे कम भरोसेमंद हों तो टर्न काउंटर रखें।
अगर काउंटर सिर्फ़ यह तय करता है कि ब्रांच या एस्केलेट कब करना है, तो वर्कफ़्लो एज एक्सप्रेशन कंडीशन या स्ट्रक्चर्ड प्रक्रिया का If स्टेप एक्सप्रेशन (जैसे system__agent_turns >= 5) इसे प्रॉम्प्ट के बाहर हैंडल कर सकता है। यह उन स्थितियों को कवर नहीं करता जहाँ LLM को खुद वैल्यू चाहिए।
secret__ का इस्तेमाल सिर्फ़ उन वैल्यू के लिए करें जो टूल हेडर्स में रहती हैं
ऑथ टोकन और API कीज़ के आगे secret__ लगाएं, ताकि उन्हें केवल टूल हेडर्स से बाइंड किया जा सके और वे LLM को कभी न भेजे जाएं। क्योंकि secret__ वैल्यू conversations API में <REDACTED> के रूप में रिडैक्ट की जाती हैं (कॉल के बाद ट्रांसक्रिप्शन वेबहुक को फिर भी मूल वैल्यू मिलती हैं), जिन वैल्यू को आपको conversations API से वापस पढ़ना हो उन्हें सामान्य डायनामिक वेरिएबल्स के रूप में पास करें, या कोई गैर-संवेदनशील आइडेंटिफ़ायर पास करें और संवेदनशील वैल्यू को अपने सिस्टम पर देखें।
ऑथेंटिकेशन के लिए system__user_id पर निर्भर न रहें
system__user_id क्लाइंट द्वारा ट्रैकिंग और एनालिटिक्स के लिए दिया जाता है और ElevenAgents द्वारा सत्यापित नहीं होता। अकाउंट डेटा दिखाने से पहले बातचीत शुरू करने वाले वेबहुक, secret__ हेडर वेरिएबल में साइन किया गया टोकन, या वेरिफ़िकेशन टूल कॉल से कॉलर की पहचान सत्यापित करें।
टेस्टिंग और प्रीव्यू के लिए प्लेसहोल्डर्स कॉन्फ़िगर करें
अपने प्रॉम्प्ट्स, पहले संदेशों और टूल्स में इस्तेमाल होने वाले हर कस्टम वेरिएबल के लिए dynamic_variable_placeholders में डिफ़ॉल्ट वैल्यू सेट करें। डैशबोर्ड में प्रीव्यू बातचीत और सिम्युलेशन टेस्ट्स बातचीत शुरू करने वाले वेबहुक नहीं चलाते, इसलिए टेस्टिंग के दौरान अनसेट वेरिएबल्स लिटरल {{variable_name}} प्लेसहोल्डर्स के रूप में रहते हैं।
समस्या निवारण
वेरिएबल बदल नहीं रहे हैं
पुष्टि करें कि:
- वेरिएबल के नाम बिल्कुल मेल खाते हों (अक्षर केस-सेंसिटिव है)
- वेरिएबल में डबल कर्ली ब्रेसेस हों:
{{variable_name}} - वेरिएबल आपके
dynamic_variablesऑब्जेक्ट में शामिल हों
टाइप एरर
सुनिश्चित करें कि:
- वेरिएबल की वैल्यू अपेक्षित टाइप से मेल खाती हो
- वैल्यू केवल स्ट्रिंग, नंबर या बूलियन हों