सिस्टम टूल्स

बाहरी रिक्वेस्ट के बिना बातचीत की आंतरिक स्थिति अपडेट करें।

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

ओवरव्यू

कुछ एप्लिकेशन में एजेंट को बातचीत का प्रवाह या स्थिति नियंत्रित करनी होती है। सिस्टम टूल्स असिस्टेंट को कॉल की स्थिति से जुड़े ऐसे काम करने देते हैं, जिनके लिए बाहरी सर्वर या क्लाइंट से संवाद करने की ज़रूरत नहीं होती।

उपलब्ध सिस्टम टूल्स

कॉल समाप्त करें

सही शर्तें पूरी होने पर अपने एजेंट को बातचीत अपने-आप समाप्त करने दें।

भाषा पहचान

बातचीत के दौरान अपने एजेंट को यूज़र की भाषा पर अपने-आप स्विच करने दें।

एजेंट ट्रांसफर

तय की गई शर्तों के आधार पर AI एजेंट्स के बीच बातचीत आसानी से ट्रांसफर करें।

नंबर पर ट्रांसफर करें

कॉल को बाहरी फ़ोन नंबर या SIP URI पर ट्रांसफर करें।

टर्न छोड़ें

अगर LLM को लगे कि एजेंट को अभी नहीं बोलना चाहिए, तो एजेंट को अपना टर्न छोड़ने दें।

कीपैड टच टोन चलाएं

एजेंट्स को ऑटोमेटेड फ़ोन सिस्टम से इंटरैक्ट करने और मेनू नेविगेट करने के लिए DTMF टोन चलाने दें।

वॉइसमेल पहचान

एजेंट्स को वॉइसमेल सिस्टम अपने-आप पहचानने और वैकल्पिक रूप से संदेश छोड़ने दें।

स्थिति अपडेट करें

अपने एजेंट को एक्सप्रेशन का उपयोग करके बातचीत के बीच में डायनामिक वेरिएबल्स अपडेट करने दें।

इम्प्लीमेंटेशन

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

कस्टम LLM इंटीग्रेशन

ElevenLabs एजेंट्स के साथ कस्टम LLM इस्तेमाल करने पर, सिस्टम टूल्स को ऐसे फ़ंक्शन डेफ़िनिशन के रूप में दिखाया जाता है जिन्हें आपका LLM कॉल कर सकता है। हर सिस्टम टूल के अपने पैरामीटर और ट्रिगर शर्तें होती हैं:

उपलब्ध सिस्टम टूल्स

उद्देश्य: उचित शर्तें पूरी होने पर बातचीत अपने-आप समाप्त करें।

ट्रिगर शर्तें: LLM को इस टूल को तब कॉल करना चाहिए, जब:

  • मुख्य टास्क पूरा हो गया हो और यूज़र संतुष्ट हो
  • आपसी सहमति के साथ बातचीत स्वाभाविक निष्कर्ष पर पहुंच गई हो
  • यूज़र साफ़ तौर पर बातचीत खत्म करने की इच्छा जताए

पैरामीटर:

  • reason (string, आवश्यक): कॉल खत्म करने का कारण
  • message (string, वैकल्पिक): कॉल खत्म करने से पहले यूज़र को भेजा जाने वाला विदाई मैसेज

फंक्शन कॉल फ़ॉर्मैट:

{
"type": "function",
"function": {
"name": "end_call",
"arguments": "{\"reason\": \"Task completed successfully\", \"message\": \"Thank you for using our service. Have a great day!\"}"
}
}

इम्प्लीमेंटेशन: अपनी एजेंट सेटिंग्स में इसे सिस्टम टूल के रूप में कॉन्फ़िगर करें। LLM को इस फंक्शन को कॉल करने के समय के बारे में विस्तृत निर्देश मिलेंगे।

और जानें: कॉल समाप्त करने का टूल

उद्देश्य: बातचीत के दौरान यूज़र की पहचानी गई भाषा पर अपने-आप स्विच करना।

ट्रिगर की शर्तें: LLM को यह टूल तब कॉल करना चाहिए जब:

  • यूज़र मौजूदा बातचीत की भाषा से अलग भाषा में बोलता है
  • यूज़र साफ़ तौर पर भाषा बदलने का अनुरोध करता है
  • बातचीत के लिए कई भाषाओं का सपोर्ट चाहिए

पैरामीटर्स:

  • reason (string, आवश्यक): भाषा बदलने का कारण
  • language (string, आवश्यक): जिस भाषा कोड पर स्विच करना है (सपोर्टेड भाषाओं की सूची में होना चाहिए)

फ़ंक्शन कॉल फ़ॉर्मैट:

{
"type": "function",
"function": {
"name": "language_detection",
"arguments": "{\"reason\": \"User requested Spanish\", \"language\": \"es\"}"
}
}

इम्प्लीमेंटेशन: एजेंट सेटिंग्स में सपोर्टेड भाषाएं कॉन्फ़िगर करें और भाषा पहचान सिस्टम टूल जोड़ें। एजेंट पहचानी गई भाषाओं से मेल खाने के लिए अपने-आप वॉइस और जवाब बदल देगा।

और जानें: भाषा पहचान टूल

उद्देश्य: यूज़र की ज़रूरतों के आधार पर विशेष AI एजेंट्स के बीच बातचीत ट्रांसफ़र करें।

ट्रिगर स्थितियां: LLM को यह टूल तब कॉल करना चाहिए जब:

  • यूज़र के अनुरोध के लिए विशेष जानकारी या अलग एजेंट क्षमताओं की ज़रूरत हो
  • मौजूदा एजेंट क्वेरी को पर्याप्त रूप से संभाल न सके
  • बातचीत का प्रवाह अलग एजेंट प्रकार की ज़रूरत दिखाए

पैरामीटर्स:

  • reason (string, वैकल्पिक): एजेंट ट्रांसफ़र का कारण
  • agent_number (integer, आवश्यक): जिस एजेंट को ट्रांसफ़र करना है उसका शून्य-आधारित नंबर (कॉन्फ़िगर किए गए ट्रांसफ़र नियमों के आधार पर)

फ़ंक्शन कॉल फ़ॉर्मैट:

{
"type": "function",
"function": {
"name": "transfer_to_agent",
"arguments": "{\"reason\": \"User needs billing support\", \"agent_number\": 0}"
}
}

इम्प्लीमेंटेशन: स्थितियों को खास एजेंट IDs से मैप करने वाले ट्रांसफ़र नियम तय करें। कॉन्फ़िगर करें कि मौजूदा एजेंट किन एजेंट्स को ट्रांसफ़र कर सकता है। ट्रांसफ़र कॉन्फ़िगरेशन में एजेंट्स को शून्य-आधारित नंबरों से संदर्भित किया जाता है।

और जानें: एजेंट ट्रांसफर टूल

उद्देश्य: AI सहायता अपर्याप्त होने पर बातचीत को सहज रूप से मानव ऑपरेटर को सौंपें।

ट्रिगर शर्तें: LLM को इस टूल को तब कॉल करना चाहिए, जब:

  • जटिल समस्या के लिए मानवीय निर्णय की ज़रूरत हो
  • यूज़र साफ़ तौर पर मानव सहायता मांगे
  • खास अनुरोध के लिए AI अपनी क्षमता की सीमा तक पहुंच जाए
  • एस्केलेशन प्रोटोकॉल ट्रिगर हो जाएं

पैरामीटर:

  • reason (string, वैकल्पिक): ट्रांसफ़र का कारण
  • transfer_number (string, आवश्यक): जिस फ़ोन नंबर पर ट्रांसफ़र करना है (कॉन्फ़िगर किए गए नंबरों से मेल खाना चाहिए)
  • client_message (string, आवश्यक): ट्रांसफ़र का इंतज़ार करते समय क्लाइंट को सुनाया जाने वाला मैसेज
  • agent_message (string, आवश्यक): कॉल पाने वाले मानव ऑपरेटर के लिए मैसेज

फंक्शन कॉल फ़ॉर्मैट:

{
"type": "function",
"function": {
"name": "transfer_to_number",
"arguments": "{\"reason\": \"Complex billing issue\", \"transfer_number\": \"+15551234567\", \"client_message\": \"I'm transferring you to a billing specialist who can help with your account.\", \"agent_message\": \"Customer has a complex billing dispute about order #12345 from last month.\"}"
}
}

इम्प्लीमेंटेशन: ट्रांसफ़र फ़ोन नंबर और शर्तें कॉन्फ़िगर करें। ग्राहक और कॉल पाने वाले मानव ऑपरेटर, दोनों के लिए मैसेज तय करें। यह Twilio और SIP ट्रंकिंग, दोनों के साथ काम करता है।

और जानें: नंबर पर ट्रांसफर करने का टूल

उद्देश्य: एजेंट को बिना बोले रुकने और यूज़र के input का इंतज़ार करने दें।

ट्रिगर स्थितियां: LLM को इस tool को तब call करना चाहिए, जब:

  • यूज़र बताए कि उसे एक पल चाहिए (“मुझे एक सेकंड दें”, “मुझे सोचने दें”)
  • यूज़र बातचीत के flow में pause का अनुरोध करे
  • एजेंट को लगे कि यूज़र को जानकारी समझने के लिए समय चाहिए

Parameters:

  • reason (string, वैकल्पिक): pause की ज़रूरत क्यों है, इसका free-form कारण

Function call format:

{
"type": "function",
"function": {
"name": "skip_turn",
"arguments": "{\"reason\": \"User requested time to think\"}"
}
}

Implementation: किसी अतिरिक्त configuration की ज़रूरत नहीं है। यह tool बस एजेंट को यूज़र के फिर से बोलने तक चुप रहने का संकेत देता है।

और जानें: टर्न छोड़ने का टूल

पैरामीटर्स:

  • reason (string, वैकल्पिक): DTMF टोन चलाने का कारण (जैसे, “एक्सटेंशन पर जाना”, “PIN दर्ज करना”)
  • dtmf_tones (string, आवश्यक): चलाने के लिए DTMF सीक्वेंस। मान्य कैरेक्टर: 0-9, *, #, w (0.5s का पॉज़), W (1s का पॉज़)

फ़ंक्शन कॉल फ़ॉर्मैट:

{
"type": "function",
"function": {
"name": "play_keypad_touch_tone",
"arguments": "{"reason": "Navigating to customer service", "dtmf_tones": "2"}"
}
}

और जानें: कीपैड टच टोन चलाने का टूल

Parameters:

  • reason (string, आवश्यक): voicemail detect होने का कारण (जैसे, “automated greeting detected”, “no human response”)

Function call format:

{
"type": "function",
"function": {
"name": "voicemail_detection",
"arguments": "{\"reason\": \"Automated greeting detected with request to leave message\"}"
}
}

और जानें: वॉइसमेल पहचान टूल

उद्देश्य: एजेंट को बातचीत के आधार पर एक या अधिक dynamic variables update करने दें, बिना किसी external API को call किए।

ट्रिगर स्थितियां: LLM को इस tool को तब call करना चाहिए, जब:

  • बातचीत में ऐसी जानकारी मिले जिसे record किया जाना चाहिए (जैसे escalation flag, चुना गया option या यूज़र द्वारा दी गई value)
  • configured state update किसी ऐसी value पर निर्भर हो जिसे LLM को बातचीत से तय या extract करना हो

Parameters:

Function के parameters इस बात पर निर्भर करते हैं कि tool कैसे configured है। LLM-extracted value इस्तेमाल करने वाला हर configured state update schema में एक property जोड़ता है, जिसका नाम उस update के dynamic variable पर होता है और जिसका type string, number या boolean होता है। केवल constants या दूसरे dynamic variables से बने state updates कोई parameters नहीं जोड़ते।

Function call format:

{
"type": "function",
"function": {
"name": "update_state",
"arguments": "{\"should_escalate\": true}"
}
}

Implementation: एजेंट extracted parameters और बातचीत के मौजूदा dynamic variables के साथ हर configured expression को evaluate करता है, फिर नतीजों को संबंधित dynamic variables में assign करता है। कोई external request नहीं की जाती।

और जानें: स्थिति अपडेट करने का टूल

from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs
elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")
# Each system tool is keyed by name under built_in_tools.
# Leave "description" blank to use the default, tool-specific prompt.
response = elevenlabs.conversational_ai.agents.create(
conversation_config=ConversationalConfig(
agent=AgentConfig(
prompt={
"built_in_tools": {
"end_call": {
"type": "system",
"name": "end_call",
"description": "",
"params": {"system_tool_type": "end_call"},
},
"language_detection": {
"type": "system",
"name": "language_detection",
"description": "",
"params": {"system_tool_type": "language_detection"},
},
}
},
),
),
)

अक्सर पूछे जाने वाले सवाल

हां, सिस्टम टूल्स को एक ही असिस्टेंट में वेबहुक टूल्स और क्लाइंट टूल्स के साथ इस्तेमाल किया जा सकता है। इससे आंतरिक स्थिति प्रबंधन और बाहरी इंटरैक्शन को मिलाकर व्यापक फ़ंक्शनैलिटी मिलती है।