क्लाइंट टूल्स

अपने असिस्टेंट को क्लाइंट-साइड ऑपरेशंस ट्रिगर करने की सुविधा दें।

क्लाइंट टूल्स आपके असिस्टेंट को क्लाइंट-साइड फ़ंक्शंस चलाने देते हैं। वेबहुक टूल्स के विपरीत, क्लाइंट टूल्स असिस्टेंट को ब्राउज़र इवेंट्स ट्रिगर करने, क्लाइंट-साइड फ़ंक्शंस चलाने या UI को नोटिफ़िकेशन भेजने जैसे काम करने देते हैं।

ओवरव्यू

ऐप्लिकेशन में असिस्टेंट्स को यूज़र के एनवायरनमेंट के साथ सीधे इंटरैक्ट करना पड़ सकता है। क्लाइंट-साइड टूल्स आपके असिस्टेंट को क्लाइंट-साइड ऑपरेशंस करने की सुविधा देते हैं।

यहां कुछ उदाहरण हैं जहां क्लाइंट टूल्स उपयोगी हो सकते हैं:

  • UI इवेंट्स ट्रिगर करना: असिस्टेंट को अलर्ट, मोडल या नोटिफ़िकेशन जैसे ब्राउज़र इवेंट्स ट्रिगर करने दें।
  • DOM के साथ इंटरैक्ट करना: असिस्टेंट को डायनामिक कंटेंट अपडेट्स के लिए Document Object Model (DOM) में बदलाव करने या यूज़र्स को जटिल इंटरफ़ेस में गाइड करने दें।

सर्वर-साइड APIs को कॉल करने के लिए, इसके बजाय वेबहुक टूल्स इस्तेमाल करें।

गाइड

ज़रूरी शर्तें

1

नया क्लाइंट-साइड टूल बनाएं

आवश्यक स्ट्रिंग पैरामीटर message (“कंसोल में लॉग करने वाला संदेश”) के साथ logMessage नाम का क्लाइंट टूल कॉन्फ़िगर करें।

अपने एजेंट डैशबोर्ड पर जाएं। Tools सेक्शन में, Add Tool पर क्लिक करें। सुनिश्चित करें कि Tool Type को Client पर सेट किया गया है। फिर निम्न कॉन्फ़िगर करें:

सेटिंगपैरामीटर
नामlogMessage
विवरणयूज़र के क्लाइंट पर संदेश लॉग करने के लिए इस क्लाइंट-साइड टूल का इस्तेमाल करें।

फिर निम्न कॉन्फ़िगरेशन के साथ नया पैरामीटर message बनाएं:

सेटिंगपैरामीटर
डेटा टाइपString
आइडेंटिफ़ायरmessage
आवश्यकtrue
विवरणकंसोल में लॉग करने वाला संदेश। सुनिश्चित करें कि संदेश जानकारीपूर्ण और प्रासंगिक हो।

logMessage क्लाइंट-टूल सेटअप

2

अपने कोड में क्लाइंट टूल रजिस्टर करें

वेबहुक टूल्स के विपरीत, क्लाइंट टूल्स को आपके कोड में रजिस्टर करना होता है।

क्लाइंट टूल रजिस्टर करने के लिए निम्न कोड इस्तेमाल करें:

from elevenlabs import ElevenLabs
from elevenlabs.conversational_ai.conversation import Conversation, ClientTools
def log_message(parameters):
message = parameters.get("message")
print(message)
client_tools = ClientTools()
client_tools.register("logMessage", log_message)
conversation = Conversation(
client=ElevenLabs(api_key="your-api-key"),
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
requires_auth=True,
client_tools=client_tools,
# ...
)
conversation.start_session()

एजेंट कॉन्फ़िगरेशन में टूल और पैरामीटर के नाम case-sensitive हैं और आपके कोड में रजिस्टर किए गए नामों से ज़रूर मेल खाने चाहिए।

3

टेस्टिंग

अपने एजेंट के साथ बातचीत शुरू करें और कुछ ऐसा कहें:

कंसोल में Hello World लिखने वाला संदेश लॉग करें

आपको अपने कंसोल में Hello World लॉग दिखाई देना चाहिए।

4

अगले चरण

अब आपने एक बेसिक क्लाइंट-साइड इवेंट सेट अप कर लिया है, आप ये कर सकते हैं:

  • मोडल खोलने, पेज पर नेविगेट करने या DOM के साथ इंटरैक्ट करने जैसे अधिक जटिल क्लाइंट टूल्स एक्सप्लोर करें।
  • फुल-स्टैक इंटरैक्शन के लिए क्लाइंट टूल्स को सर्वर-साइड वेबहुक के साथ जोड़ें।
  • बातचीत के दौरान यूज़र एंगेजमेंट बेहतर करने और रीयल-टाइम फ़ीडबैक देने के लिए क्लाइंट टूल्स इस्तेमाल करें।

बातचीत के संदर्भ में क्लाइंट टूल के नतीजे भेजना

जब आप चाहते हैं कि आपके एजेंट को क्लाइंट टूल से डेटा वापस मिले, तो सुनिश्चित करें कि टूल कॉन्फ़िगरेशन में Wait for response विकल्प चुना गया हो।

क्लाइंट टूल कॉन्फ़िगरेशन में रिस्पॉन्स का इंतज़ार करने का विकल्प

क्लाइंट टूल जुड़ने के बाद, जब फ़ंक्शन कॉल होगा, एजेंट उसके रिस्पॉन्स का इंतज़ार करेगा और रिस्पॉन्स को बातचीत के संदर्भ में जोड़ देगा।

def get_customer_details():
# Fetch customer details (e.g., from an API or database)
customer_data = {
"id": 123,
"name": "Alice",
"subscription": "Pro"
}
# Return the customer data; it can also be a JSON string if needed.
return customer_data
client_tools = ClientTools()
client_tools.register("getCustomerDetails", get_customer_details)
conversation = Conversation(
client=ElevenLabs(api_key="your-api-key"),
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
requires_auth=True,
client_tools=client_tools,
# ...
)
conversation.start_session()

इस उदाहरण में, जब एजेंट getCustomerDetails को कॉल करता है, तो फ़ंक्शन क्लाइंट पर चलेगा और एजेंट को वापस किया गया डेटा मिलेगा, जिसका इस्तेमाल फिर बातचीत के संदर्भ के हिस्से के रूप में होगा। रिस्पॉन्स की वैल्यूज़ को वेबहुक टूल्स की तरह, वैकल्पिक रूप से डायनामिक वैरिएबल्स को भी असाइन किया जा सकता है। ध्यान दें कि सिस्टम टूल्स डायनामिक वैरिएबल्स अपडेट नहीं कर सकते।

समस्या निवारण

  • सुनिश्चित करें कि एजेंट कॉन्फ़िगरेशन में टूल और पैरामीटर के नाम आपके कोड में रजिस्टर किए गए नामों से मेल खाते हैं।
  • टूल के चलने की पुष्टि करने के लिए एजेंट डैशबोर्ड में बातचीत का ट्रांसक्रिप्ट देखें।
  • किसी भी एरर के लिए ब्राउज़र कंसोल खोलें।
  • सुनिश्चित करें कि आपके कोड में अपरिभाषित या अप्रत्याशित पैरामीटर्स के लिए ज़रूरी एरर हैंडलिंग है।

सर्वोत्तम तरीके

टूल को स्पष्ट नाम और विस्तृत विवरण दें

अगर असिस्टेंट सही टूल को कॉल नहीं करता, तो आपको टूल के नाम और विवरण अपडेट करने पड़ सकते हैं, ताकि असिस्टेंट बेहतर ढंग से समझ सके कि उसे हर टूल कब चुनना है। टूल और आर्ग्युमेंट के नाम छोटे करने के लिए संक्षिप्त रूप या एक्रोनिम का इस्तेमाल न करें।

आप यह भी विस्तार से बता सकते हैं कि टूल को कब कॉल करना चाहिए। जटिल टूल के लिए, हर आर्ग्युमेंट का विवरण शामिल करें, ताकि असिस्टेंट समझ सके कि उस आर्ग्युमेंट के लिए उसे यूज़र से क्या पूछना है।

टूल पैरामीटर को स्पष्ट नाम और विस्तृत विवरण दें

टूल पैरामीटर के लिए स्पष्ट और वर्णनात्मक नाम इस्तेमाल करें। अगर लागू हो, तो विवरण में पैरामीटर का अपेक्षित फ़ॉर्मैट बताएं (जैसे तारीख के लिए YYYY-mm-dd या dd/mm/yy)।

अपने असिस्टेंट के सिस्टम प्रॉम्प्ट में टूल को कैसे और कब कॉल करना है, इसकी अतिरिक्त जानकारी देने पर विचार करें

अपने सिस्टम प्रॉम्प्ट में स्पष्ट निर्देश देने से असिस्टेंट की टूल कॉलिंग सटीकता काफ़ी बेहतर हो सकती है। उदाहरण के लिए, असिस्टेंट को इस तरह के निर्देश दें:

Use `check_order_status` when the user inquires about the status of their order, such as 'Where is my order?' or 'Has my order shipped yet?'.

जटिल स्थितियों के लिए संदर्भ दें। उदाहरण के लिए:

Before scheduling a meeting with `schedule_meeting`, check the user's calendar for availability using check_availability to avoid conflicts.

LLM चयन

टूल इस्तेमाल करते समय, हम GPT 5.2, Gemini-2.5-Flash या Claude Sonnet 4.5 जैसे उच्च बुद्धिमत्ता वाले मॉडल चुनने और Gemini-2.0-Flash से बचने की सलाह देते हैं।

यह ध्यान रखना ज़रूरी है कि फंक्शन कॉल की सफलता के लिए LLM का चुनाव मायने रखता है। कुछ LLM बातचीत से संबंधित पैरामीटर निकालने में मुश्किल महसूस कर सकते हैं।