#Estoy integrando ElevenLabs Agents usando el SDK de Python y necesito enviar variables dinámicas de
1 messages · Page 1 of 1 (latest)
La forma soportada es usar Dynamic Variables y pasarlas al iniciar la conversación con ConversationInitiationData. Luego, referencias esas variables en el System prompt o First message con {{variable}}.
Ejemplo (Python SDK):
- En el prompt del agente: “Hola {{cliente_nombre}}”.
- En tu backend:
from elevenlabs.client import ElevenLabs
from elevenlabs.conversational_ai.conversation import Conversation, ConversationInitiationData
from elevenlabs.conversational_ai.default_audio_interface import DefaultAudioInterface
client = ElevenLabs(api_key=API_KEY)
config = ConversationInitiationData(
dynamic_variables={"cliente_nombre": "María"}
)
conv = Conversation(client, agent_id, config=config, requires_auth=True, audio_interface=DefaultAudioInterface())
conv.start_session()
Esto inyecta cliente_nombre en la sesión y el agente lo sustituirá en el System prompt y/o First message. (elevenlabs.io)
Notas importantes:
- Sintaxis: usa llaves dobles {{nombre_variable}} en System prompt/First message/herramientas. Nombres sensibles a mayúsculas. (elevenlabs.io)
- Tipos permitidos: string, number, boolean. (elevenlabs.io)
- No uses el prefijo reservado system__ para variables personalizadas. (elevenlabs.io)
- Para valores que no deben enviarse al LLM (p. ej., tokens), usa el prefijo secret__ (se usan en headers de herramientas pero no se insertan en System prompt/First message). (elevenlabs.io)
Alternativa (si necesitas reemplazar por completo el prompt o first message en runtime):
- Habilita Overrides en la pestaña de seguridad del agente y pasa conversation_config_override con los campos agent.prompt.prompt y/o agent.first_message al iniciar la conversación. (elevenlabs.io)
Sources:
Dynamic variables | ElevenLabs Documentation
Dynamic variables | ElevenLabs Documentation
Dynamic variables | ElevenLabs Documentation
Dynamic variables | ElevenLabs Documentation
Dynamic variables | ElevenLabs Documentation
Overrides | ElevenLabs Documentation
corrige:
def start(self):
dummy_audio = DummyAudioInterface()
conversation_override = {
"conversation": {
"text_only": True
}
}
# Si ya tenemos un conversation_id guardado, lo pasamos en el config
config = ConversationInitiationData(
conversation_config_override=conversation_override,
)
self.conversation = Conversation(
client=self.client,
agent_id=self.agent_id,
requires_auth=True,
audio_interface=dummy_audio,
config=config,
callback_agent_response=self.handle_agent_response,
callback_user_transcript=self.handle_user_transcript,
)
self.conversation.start_session()
time.sleep(1.5)
self._is_connected = True
Aquí tienes el mismo método corregido para inyectar variables dinámicas que luego podrás usar en el system prompt o first message con la sintaxis {{variable}}. Se mantiene el override para text_only y se añaden los dynamic_variables en el config.
def start(self, dynamic_vars: dict):
dummy_audio = DummyAudioInterface()
conversation_override = {
"conversation": {
"text_only": True # requiere tener habilitado este override en el agente
}
}
config = ConversationInitiationData(
conversation_config_override=conversation_override,
dynamic_variables=dynamic_vars, # e.g., {"cliente_nombre": "María"}
)
self.conversation = Conversation(
client=self.client,
agent_id=self.agent_id,
requires_auth=True,
audio_interface=dummy_audio,
config=config,
callback_agent_response=self.handle_agent_response,
callback_user_transcript=self.handle_user_transcript,
)
self.conversation.start_session()
time.sleep(1.5)
self._is_connected = True
Notas:
- Define las variables en tus prompts con {{variable}} (por ejemplo: Hola {{cliente_nombre}}) y pásalas en dynamic_variables al iniciar la conversación. (elevenlabs.io)
- Si usas overrides (como conversation.text_only o para sustituir system prompt/first message), asegúrate de habilitarlos previamente en la pestaña Security del agente; de lo contrario, el override fallará. (elevenlabs.io)
Sources:
Dynamic variables | ElevenLabs Documentation
Overrides | ElevenLabs Documentation
ElevenLabsChatClient.start() got an unexpected keyword argument 'dynamic_vars'
Causa del error
dynamic_vars no es un argumento válido de start()/start_session. En Python, las variables dinámicas se pasan dentro de ConversationInitiationData usando el campo dynamic_variables y, si hace falta, los overrides van en conversation_config_override. (elevenlabs.io)
Implementación correcta (Python SDK)
- Defina sus variables y páselas en dynamic_variables; el agente las usa con {{variable}} en system prompt/first message.
- Si va a sobreescribir prompt/first_message/language/text_only, habilite esos overrides en la pestaña Security del agente y envíelos vía conversation_config_override.
Ejemplo mínimo adaptado a su código:
def start(self):
dummy_audio = DummyAudioInterface()
conversation_override = {
"conversation": {"text_only": True},
# "agent": {"first_message": "Hola {{cliente_nombre}}"} # si usa override
}
dynamic_vars = {
"cliente_nombre": "Carlos"
}
config = ConversationInitiationData(
dynamic_variables=dynamic_vars,
conversation_config_override=conversation_override,
)
self.conversation = Conversation(
client=self.client,
agent_id=self.agent_id,
requires_auth=True,
audio_interface=dummy_audio,
config=config,
callback_agent_response=self.handle_agent_response,
callback_user_transcript=self.handle_user_transcript,
)
self.conversation.start_session()
time.sleep(1.5)
self._is_connected = True
Referencias oficiales
- Dynamic variables: cómo definir {{variable}} y pasarlas con ConversationInitiationData(dynamic_variables=...). (elevenlabs.io)
- Overrides: estructura de conversation_config_override, ejemplo con "conversation": {"text_only": True} y necesidad de habilitarlos en Security. (elevenlabs.io)
Sources:
Dynamic variables | ElevenLabs Documentation
Dynamic variables | ElevenLabs Documentation
Overrides | ElevenLabs Documentation
no funciona, no se estan inyectando las variables de forma dinámica