Variáveis dinâmicas
Transmita valores de tempo de execução para personalizar o comportamento do seu agente.
As variáveis dinâmicas permitem inserir valores de tempo de execução nas mensagens, nos prompts de sistema e nas ferramentas do seu agente. Isso permite personalizar cada conversa com dados específicos do usuário sem criar vários agentes.
Visão geral
As variáveis dinâmicas podem ser integradas a vários aspectos do seu agente:
- Prompts de sistema para personalizar o comportamento e o contexto
- Primeiras mensagens para personalizar cumprimentos
- Parâmetros e cabeçalhos de ferramentas para transmitir dados específicos do usuário
Veja alguns exemplos em que as variáveis dinâmicas são úteis:
- Personalizar cumprimentos com nomes de usuários
- Incluir detalhes da conta nas respostas
- Transmitir dados para chamadas de ferramentas
- Personalizar o comportamento com base nos níveis de assinatura
- Acessar informações do sistema como o ID da conversa ou a duração da chamada
As variáveis dinâmicas aceitam três tipos de valor:
Variáveis dinâmicas do sistema
Seu agente tem acesso a variáveis integradas system__* em todas as conversas, sem configuração em tempo de execução. Essas variáveis têm o prefixo do namespace reservado system__ e são atualizadas automaticamente conforme a conversa avança. Variáveis dinâmicas personalizadas não podem usar o prefixo system__ nem substituir variáveis do sistema.
As variáveis marcadas com † mudam entre os turnos. Incluí-las no texto do prompt pode impedir o armazenamento do prompt em cache; veja Boas práticas para alternativas.
Identidade do agente e da conversa
Hora e fuso horário
Telefonia e mensagens
Essas variáveis são preenchidas quando aplicável nos canais de telefonia e mensagens:
Estado da conversa por turno
Formato do histórico da conversa
A variável system__conversation_history contém um objeto JSON com a seguinte estrutura:
Cada entrada inclui uma role ("user", "agent" ou "tool") e um dos seguintes itens:
message: O conteúdo de texto do turnotool_requests: Uma matriz de chamadas de ferramentas feitas pelo agente, com valores de parâmetros resolvidostool_results: Uma matriz de respostas de ferramentas
Se o resultado ou um parâmetro de uma ferramenta contiver um histórico de conversa aninhado, ele será ocultado e substituído por um marcador (como [conversation_history (5 turns)]) para evitar uma expansão recursiva ilimitada.
Essa variável é útil para transmitir o contexto da conversa para ferramentas (como webhooks ou LLMs personalizados) ou para incluir o histórico da conversa nos prompts de subagentes durante transferências.
Variáveis dinâmicas secretas
As variáveis dinâmicas secretas são preenchidas da mesma forma que as variáveis dinâmicas normais, mas indicam ao ElevenAgents que elas devem ser usadas somente nos cabeçalhos de variáveis dinâmicas e nunca enviadas a um provedor de LLM como parte do prompt de sistema ou da primeira mensagem de um agente.
Use variáveis dinâmicas secretas para tokens de autenticação ou IDs privados que não devem ser enviados a um LLM. Para criar uma variável dinâmica secreta, adicione o prefixo secret__ à variável dinâmica.
Os valores secretos são armazenados ocultos, portanto a API de conversas os retorna como <REDACTED>.
Os webhooks de transcrição pós-chamada entregam os valores originais, então garanta que seu endpoint de webhook
os trate como segredos. Não use o prefixo secret__ para valores que você precisa recuperar da
API de conversas. Transmita-os como variáveis dinâmicas normais ou transmita um identificador não confidencial e
procure o valor confidencial no seu próprio sistema.
Atualizar variáveis dinâmicas por ferramentas
Chamadas de ferramentas podem criar ou atualizar variáveis dinâmicas se retornarem um objeto JSON válido. Para especificar o que deve ser extraído, defina os caminhos dos objetos usando notação de ponto. Se o campo ou caminho não existir, nada será atualizado.
Exemplo de um objeto de resposta e de notação de ponto:
- O status corresponde ao caminho:
response.status - O e-mail do primeiro usuário na matriz de usuários corresponde ao caminho:
response.users.0.email
Para atualizar uma variável dinâmica com o e-mail do primeiro usuário, defina a atribuição da seguinte forma.

As atribuições são configuradas em cada ferramenta de webhook; consulte atribuições de ferramentas na referência da API.
Guia
Pré-requisitos:
- Uma conta da ElevenLabs
- Um agente do ElevenAgents configurado (siga o guia de início rápido para criar um)
Definir variáveis dinâmicas nos prompts
Adicione variáveis usando chaves duplas {{variable_name}} em:
- Prompts de sistema
- Primeiras mensagens
- Parâmetros de ferramentas


Definir variáveis dinâmicas em ferramentas
Você também pode definir variáveis dinâmicas na configuração da ferramenta.
Para criar uma nova variável dinâmica, defina o tipo de valor como Variável dinâmica e clique no botão +.


Definir marcadores
Configure valores padrão para testes sem transmitir variáveis em tempo de execução.
Atualizar pelo painel
Atualizar pela CLI
Atualizar pela API
Defina valores padrão para cada variável dinâmica no painel do agente.

Transmitir variáveis em tempo de execução
Ao iniciar uma conversa, forneça as variáveis dinâmicas no seu código:
Verifique se você tem a versão mais recente do SDK instalada.
Integração com a página pública de conversa
A página pública de conversa aceita variáveis dinâmicas por meio de parâmetros de URL, permitindo personalizar conversas ao compartilhar links de agentes. Isso é especialmente útil para incorporar agentes personalizados em sites, e-mails ou campanhas de marketing.
Métodos de parâmetros de URL
Há dois métodos para transmitir variáveis dinâmicas à página pública de conversa:
Método 1: JSON codificado em Base64
Transmita as variáveis como um objeto JSON codificado em Base64 usando o parâmetro vars:
O parâmetro vars contém JSON codificado em Base64:
Método 2: Parâmetros de consulta individuais
Transmita variáveis usando parâmetros de consulta com o prefixo var_:
Precedência de parâmetros
Quando os dois métodos são usados simultaneamente, os parâmetros individuais var_ têm precedência sobre as variáveis codificadas em Base64 para evitar conflitos:
Neste exemplo, user_name será "John" (de var_user_name) em vez de "Jane" (do vars codificado em Base64).
Exemplos de implementação
Geração de URL em JavaScript
Geração de URL em Python
Construção manual de URL
Boas práticas
Defina um fuso horário em vez de incluir a hora atual nos prompts
As variáveis no prompt de sistema, nos nós de workflow e nos procedimentos são resolvidas a cada turno. Se um valor mudar entre turnos, o prompt não poderá ser armazenado em cache, o que aumenta o custo e a latência. {{system__time_utc}} e {{system__time_second}} mudam a cada turno; {{system__time}} e {{system__time_minute}} mudam a cada minuto.
Para informar ao agente a data e a hora atuais, defina um fuso horário com o botão de fuso horário no editor de Prompt de sistema (conversation_config.agent.prompt.timezone), em vez de incluir {{system__time}} ou {{system__time_utc}} no texto do prompt. Quando um fuso horário é definido, a plataforma adiciona a data e a hora atuais fora do prefixo do prompt armazenado em cache, para que seu prompt de sistema permaneça em cache entre os turnos. Sem um fuso horário, o agente não recebe a data e a hora atuais.
Se o seu prompt precisar da data ou da hora em linha, combine {{system__time_date}}, {{system__time_hour}} e {{system__timezone}} (por exemplo, Today is {{system__time_date}}, hour {{system__time_hour}} ({{system__timezone}})). Elas mudam no máximo uma vez por hora.
Vincule variáveis de estado em tempo real a parâmetros e cabeçalhos de ferramentas
Se uma ferramenta precisar de um valor marcado com †, vincule-o ao parâmetro ou cabeçalho da ferramenta em vez de incluí-lo no prompt. Os parâmetros da ferramenta são resolvidos apenas quando a ferramenta é chamada, portanto não afetam o armazenamento do prompt em cache. O LLM já visualiza a conversa, então {{system__conversation_history}} raramente é necessário nos prompts.
Considere alternativas aos contadores de turnos nos prompts
Se o seu prompt verifica contadores de turnos como {{system__agent_turns}}, considere estas alternativas. Use first_message para cumprimentos ou avisos iniciais estáticos.
Para o comportamento da primeira resposta, você pode formular a instrução com base no histórico da conversa (por exemplo, “On your first reply, when you have not yet greeted the caller…”). Isso depende de o LLM seguir a instrução; portanto, teste com seu modelo e mantenha o contador de turnos se os resultados forem menos confiáveis.
Se o contador apenas decide quando ramificar ou escalar, uma condição de expressão de borda de workflow ou uma expressão de etapa If de procedimento estruturado (como system__agent_turns >= 5) pode lidar com isso fora do prompt. Isso não abrange casos em que o LLM precisa do próprio valor.
Use secret__ apenas para valores que ficam em cabeçalhos de ferramentas
Adicione o prefixo secret__ a tokens de autenticação e chaves de API para que eles só possam ser vinculados a cabeçalhos de ferramentas e nunca sejam enviados ao LLM. Como os valores secret__ são ocultados como <REDACTED> na API de conversas (os webhooks de transcrição pós-chamada ainda recebem os valores originais), transmita como variáveis dinâmicas normais os valores que você precisa recuperar da API de conversas ou transmita um identificador não confidencial e procure o valor confidencial no seu próprio sistema.
Não use system__user_id para autenticação
system__user_id é fornecido pelo cliente para rastreamento e análises e não é verificado pelo ElevenAgents. Verifique a identidade do chamador com um webhook de início de conversa, um token assinado em uma variável de cabeçalho secret__ ou uma chamada de ferramenta de verificação antes de expor dados da conta.
Configure marcadores para testes e prévias
Defina valores padrão em dynamic_variable_placeholders para cada variável personalizada usada nos seus prompts, primeiras mensagens e ferramentas. As conversas de prévia no painel e os testes de simulação não executam webhooks de início de conversa; portanto, as variáveis não definidas permanecem como marcadores literais {{variable_name}} durante os testes.
Solução de problemas
Variáveis não substituídas
Verifique se:
- Os nomes das variáveis correspondem exatamente (diferenciam maiúsculas de minúsculas)
- As variáveis usam chaves duplas:
{{variable_name}} - As variáveis estão incluídas no objeto
dynamic_variables
Erros de tipo
Certifique-se de que:
- Os valores das variáveis correspondem ao tipo esperado
- Os valores são apenas strings, números ou valores booleanos