Hoppa till navigering

Klientverktyg

Gör det möjligt för din assistent att utlösa åtgärder på klientsidan.

Klientverktyg gör det möjligt för din assistent att köra funktioner på klientsidan. Till skillnad från webhook-verktyg kan klientverktyg låta assistenten utföra åtgärder som att utlösa webbläsarhändelser, köra funktioner på klientsidan eller skicka notiser till ett gränssnitt.

Översikt

Applikationer kan kräva att assistenter interagerar direkt med användarens miljö. Verktyg på klientsidan ger din assistent möjlighet att utföra åtgärder på klientsidan.

Här är några exempel där klientverktyg kan vara användbara:

  • Utlösa gränssnittshändelser: Låt en assistent utlösa webbläsarhändelser, till exempel varningar, modaler eller notiser.
  • Interagera med DOM: Gör det möjligt för en assistent att manipulera Document Object Model (DOM) för dynamiska innehållsuppdateringar eller för att vägleda användare genom komplexa gränssnitt.

Använd webhook- verktyg i stället för att anropa API:er på serversidan.

Guide

Förutsättningar

1

Skapa ett nytt verktyg på klientsidan

Konfigurera ett klientverktyg med namnet logMessage med den obligatoriska strängparametern message (“Meddelandet som ska loggas i konsolen”).

Gå till agentens kontrollpanel. Klicka på Add Tool i avsnittet Tools. Kontrollera att Tool Type är inställt på Client. Konfigurera sedan följande:

InställningParameter
NamnlogMessage
BeskrivningAnvänd det här klientverktyget för att logga ett meddelande hos användaren.

Skapa sedan en ny parameter, message, med följande konfiguration:

InställningParameter
DatatypSträng
Identifieraremessage
Obligatorisktrue
BeskrivningMeddelandet som ska loggas i konsolen. Se till att meddelandet är informativt och relevant.

Konfiguration av klientverktyget logMessage

2

Registrera klientverktyget i din kod

Till skillnad från webhook-verktyg måste klientverktyg registreras i din kod.

Använd följande kod för att registrera klientverktyget:

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()

Verktygs- och parameternamnen i agentkonfigurationen är skiftlägeskänsliga och måste matcha dem som registrerats i din kod.

3

Testning

Starta en konversation med din agent och säg något i stil med:

Logga ett meddelande i konsolen med texten Hello World

Du bör se en Hello World-logg i konsolen.

4

Nästa steg

Nu när du har konfigurerat en grundläggande händelse på klientsidan kan du:

  • Utforska mer komplexa klientverktyg, som att öppna modaler, navigera till sidor eller interagera med DOM.
  • Kombinera klientverktyg med webhookar på serversidan för fullstack-interaktioner.
  • Använda klientverktyg för att öka användarengagemanget och ge återkoppling i realtid under konversationer.

Skicka resultat från klientverktyg till konversationskontexten

När du vill att din agent ska få tillbaka data från ett klientverktyg ska du se till att markera alternativet Wait for response i verktygskonfigurationen.

Alternativet Vänta på svar i konfigurationen av klientverktyget

När klientverktyget har lagts till väntar agenten på dess svar när funktionen anropas och lägger till svaret i konversationskontexten.

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()

I det här exemplet körs funktionen på klienten när agenten anropar getCustomerDetails, och agenten tar emot den returnerade datan som sedan används som en del av konversationskontexten. Värdena från svaret kan också valfritt tilldelas dynamiska variabler, på samma sätt som med webhook-verktyg. Observera att systemverktyg inte kan uppdatera dynamiska variabler.

Felsökning

  • Kontrollera att verktygs- och parameternamnen i agentkonfigurationen matchar dem som registrerats i din kod.
  • Visa konversationstranskriptionen i agentens kontrollpanel för att kontrollera att verktyget körs.
  • Öppna webbläsarkonsolen för att kontrollera om det finns några fel.
  • Kontrollera att din kod har nödvändig felhantering för odefinierade eller oväntade parametrar.

Bästa praxis

Namnge verktyg intuitivt och med detaljerade beskrivningar

Om assistenten inte anropar rätt verktyg kan du behöva uppdatera verktygsnamnen och beskrivningarna så att assistenten tydligare förstår när varje verktyg ska väljas. Undvik att använda förkortningar eller akronymer för att förkorta namn på verktyg och argument.

Du kan också inkludera detaljerade beskrivningar av när ett verktyg ska anropas. För komplexa verktyg bör du inkludera beskrivningar för varje argument för att hjälpa assistenten förstå vad den behöver fråga användaren om för att samla in argumentet.

Namnge verktygsparametrar intuitivt och med detaljerade beskrivningar

Använd tydliga och beskrivande namn för verktygsparametrar. Ange vid behov det förväntade formatet för en parameter i beskrivningen (t.ex. YYYY-mm-dd eller dd/mm/yy för ett datum).

Överväg att ge ytterligare information om hur och när verktyg ska anropas i assistentens systemprompt

Tydliga instruktioner i systemprompten kan avsevärt förbättra assistentens precision vid verktygsanrop. Du kan till exempel vägleda assistenten med instruktioner som följande:

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?'.

Ge kontext för komplexa scenarier. Till exempel:

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

Val av LLM

När du använder verktyg rekommenderar vi modeller med hög intelligens, som GPT 6 eller Claude Sonnet 5.5.

Det är viktigt att notera att valet av LLM påverkar hur väl funktionsanrop lyckas. Vissa LLM:er kan ha svårt att extrahera relevanta parametrar från konversationen.