Dynamiska variabler
Skicka värden vid körning för att anpassa agentens beteende.
Dynamiska variabler låter dig infoga värden vid körning i agentens meddelanden, systemprompter och verktyg. På så sätt kan du anpassa varje konversation med användarspecifika data utan att skapa flera agenter.
Översikt
Dynamiska variabler kan integreras i flera delar av din agent:
- Systemprompter för att anpassa beteende och kontext
- Första meddelanden för att anpassa hälsningar
- Verktygsparametrar och headers för att skicka användarspecifika data
Här är några exempel på när dynamiska variabler är användbara:
- Personliga hälsningar med användarnamn
- Kontouppgifter i svar
- Data till verktygsanrop
- Anpassat beteende baserat på prenumerationsnivåer
- Systeminformation som konversations-ID eller samtalslängd
Dynamiska variabler stöder tre värdetyper:
Dynamiska systemvariabler
Din agent har tillgång till inbyggda system__*-variabler i varje konversation utan konfiguration vid körning. Dessa variabler har det reserverade prefixet system__ och uppdateras automatiskt medan konversationen pågår. Anpassade dynamiska variabler kan inte använda prefixet system__ eller åsidosätta systemvariabler.
Variabler markerade med † ändras mellan turer. Om du placerar dem i prompttext kan det förhindra promptcachelagring. Se Bästa praxis för alternativ.
Agent- och konversationsidentitet
Tid och tidszon
Telefoni och meddelanden
Dessa variabler fylls i när det är relevant för telefoni- och meddelandekanaler:
Konversationstillstånd per tur
Format för konversationshistorik
Variabeln system__conversation_history innehåller ett JSON-objekt med följande struktur:
Varje post innehåller en role ("user", "agent" eller "tool") och ett av följande:
message: Turens textinnehålltool_requests: En array med verktygsanrop som agenten har gjort, med lösta parametervärdentool_results: En array med verktygssvar
Om ett verktygsresultat eller en parameter innehåller en kapslad konversationshistorik maskeras den till en platshållare (som [conversation_history (5 turns)]) för att undvika obegränsad rekursiv expansion.
Den här variabeln är användbar för att skicka konversationskontext till verktyg (som webhooks eller anpassade LLM:er) eller för att inkludera konversationshistorik i underagentprompter vid överlämningar.
Hemliga dynamiska variabler
Hemliga dynamiska variabler fylls i på samma sätt som vanliga dynamiska variabler, men visar för ElevenAgents att de endast ska användas i headers för dynamiska variabler och aldrig skickas till en LLM-leverantör som en del av agentens systemprompt eller första meddelande.
Använd hemliga dynamiska variabler för autentiseringstoken eller privata ID:n som inte ska skickas till en LLM. Om du vill skapa en hemlig dynamisk variabel lägger du till prefixet secret__ före den dynamiska variabeln.
Hemliga värden lagras maskerade, så conversations API returnerar dem som <REDACTED>.
Webhooks för transkribering efter samtal skickar de ursprungliga värdena, så se till att din webhook-slutpunkt
hanterar dem som hemligheter. Använd inte prefixet secret__ för värden som du behöver läsa tillbaka från
conversations API. Skicka dem som vanliga dynamiska variabler, eller skicka en icke-känslig identifierare och
slå upp det känsliga värdet i ditt eget system.
Uppdatera dynamiska variabler från verktyg
Verktygsanrop kan skapa eller uppdatera dynamiska variabler om de returnerar ett giltigt JSON-objekt. För att ange vad som ska extraheras anger du objektsökvägarna med punktnotation. Om fältet eller sökvägen inte finns uppdateras ingenting.
Exempel på ett svarsobjekt och punktnotation:
- Status motsvarar sökvägen:
response.status - Den första användarens e-postadress i users-arrayen motsvarar sökvägen:
response.users.0.email
För att uppdatera en dynamisk variabel till den första användarens e-postadress ställer du in tilldelningen så här.

Tilldelningar konfigureras för varje webhook-verktyg. Se verktygstilldelningar i API-referensen.
Guide
Förutsättningar:
- Ett ElevenLabs-konto
- En konfigurerad ElevenAgents-agent (följ snabbstarten för att skapa en)
Definiera dynamiska variabler i prompter
Lägg till variabler med dubbla klammerparenteser {{variable_name}} i dina:
- Systemprompter
- Första meddelanden
- Verktygsparametrar


Definiera dynamiska variabler i verktyg
Du kan även definiera dynamiska variabler i verktygskonfigurationen.
För att skapa en ny dynamisk variabel ställer du in värdetypen på Dynamisk variabel och klickar på knappen +.


Ställ in platshållare
Konfigurera standardvärden för testning utan att skicka variabler vid körning.
Uppdatera via instrumentpanelen
Uppdatera via CLI
Uppdatera via API:et
Ange standardvärden för varje dynamisk variabel i agentens instrumentpanel.

Skicka variabler vid körning
När du startar en konversation anger du de dynamiska variablerna i din kod:
Kontrollera att du har den senaste SDK:n installerad.
Integrering med offentlig talk-to-sida
Den offentliga talk-to-sidan stöder dynamiska variabler via URL-parametrar, så att du kan anpassa konversationer när du delar agentlänkar. Det är särskilt användbart när du bäddar in personliga agenter på webbplatser, i e-post eller i marknadsföringskampanjer.
Metoder för URL-parametrar
Det finns två metoder för att skicka dynamiska variabler till den offentliga talk-to-sidan:
Metod 1: Base64-kodad JSON
Skicka variabler som ett base64-kodat JSON-objekt med parametern vars:
Parametern vars innehåller base64-kodad JSON:
Metod 2: Enskilda frågeparametrar
Skicka variabler med frågeparametrar som har prefixet var_:
Parameterprioritet
När båda metoderna används samtidigt har enskilda var_-parametrar företräde framför de base64-kodade variablerna för att undvika konflikter:
I det här exemplet blir user_name "John" (från var_user_name) i stället för "Jane" (från den base64-kodade vars).
Implementeringsexempel
Generera JavaScript-URL
Generera Python-URL
Skapa URL manuellt
Bästa praxis
Ange en tidszon i stället för att placera aktuell tid i prompter
Variabler i systemprompten, workflow-noder och procedurer löses vid varje tur. Om ett värde ändras mellan turer kan prompten inte cachelagras, vilket ökar kostnaden och latensen. {{system__time_utc}} och {{system__time_second}} ändras vid varje tur; {{system__time}} och {{system__time_minute}} ändras varje minut.
För att ge agenten aktuellt datum och aktuell tid anger du en tidszon med tidszonsknappen i redigeraren för systemprompten (conversation_config.agent.prompt.timezone) i stället för att placera {{system__time}} eller {{system__time_utc}} i prompttexten. När en tidszon är inställd lägger plattformen till aktuellt datum och aktuell tid utanför det cachade promptprefixet, så att systemprompten förblir cachad mellan turer. Utan en tidszon får agenten inte aktuellt datum och aktuell tid.
Om prompten behöver datumet eller timmen infogat i texten kombinerar du {{system__time_date}}, {{system__time_hour}} och {{system__timezone}} (till exempel Today is {{system__time_date}}, hour {{system__time_hour}} ({{system__timezone}})). Dessa ändras högst en gång i timmen.
Koppla variabler med aktuellt tillstånd till verktygsparametrar och headers
Om ett verktyg behöver ett värde markerat med † kopplar du det till verktygsparametern eller headern i stället för att placera det i prompten. Verktygsparametrar löses endast när verktyget anropas, så de påverkar inte promptcachelagringen. LLM:en ser redan konversationen, så {{system__conversation_history}} behövs sällan i prompter.
Överväg alternativ till turräknare i prompter
Om prompten kontrollerar turräknare som {{system__agent_turns}}, överväg följande alternativ. Använd first_message för statiska inledande hälsningar eller upplysningar.
För beteende vid första svaret kan du formulera instruktionen utifrån konversationshistoriken (till exempel “On your first reply, when you have not yet greeted the caller…”). Detta förlitar sig på att LLM:en följer instruktionen, så testa det med din modell och behåll turräknaren om resultaten är mindre tillförlitliga.
Om räknaren bara avgör när förgreningen eller eskaleringen ska ske kan ett villkor för workflow-kantuttryck eller ett strukturerat procedure-If-steguttryck (som system__agent_turns >= 5) hantera det utanför prompten. Detta täcker inte fall där LLM:en behöver själva värdet.
Använd secret__ endast för värden som stannar i verktygsheaders
Lägg till secret__ före autentiseringstoken och API-nycklar så att de endast kan kopplas till verktygsheaders och aldrig skickas till LLM:en. Eftersom secret__-värden maskeras som <REDACTED> i conversations API (webhooks för transkribering efter samtal får fortfarande de ursprungliga värdena), skickar du värden som du behöver läsa tillbaka från conversations API som vanliga dynamiska variabler, eller skickar en icke-känslig identifierare och slår upp det känsliga värdet i ditt eget system.
Förlita dig inte på system__user_id för autentisering
system__user_id tillhandahålls av klienten för spårning och analys och verifieras inte av ElevenAgents. Verifiera uppringarens identitet via en webhook för konversationsstart, en signerad token i en secret__-headervariabel eller ett anrop till ett verifieringsverktyg innan du visar kontodata.
Konfigurera platshållare för testning och förhandsvisningar
Ange standardvärden i dynamic_variable_placeholders för varje anpassad variabel som används i dina prompter, första meddelanden och verktyg. Förhandsvisningskonversationer i instrumentpanelen och simuleringstester kör inte webhooks för konversationsstart, så oinställda variabler förblir bokstavliga platshållare som {{variable_name}} under testning.
Felsökning
Variabler ersätts inte
Kontrollera att:
- Variabelnamnen matchar exakt (skiftlägeskänsliga)
- Variabler använder dubbla klammerparenteser:
{{variable_name}} - Variabler ingår i ditt
dynamic_variables-objekt
Typfel
Kontrollera att:
- Variabelvärdena matchar den förväntade typen
- Värdena endast är strängar, tal eller booleska värden