> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Anulaciones

> **Warning**
>
> Aunque las anulaciones siguen siendo compatibles para sustituir por completo los prompts del sistema o los primeros mensajes, te
> recomendamos usar [Variables dinámicas](/docs/es/eleven-agents/customization/personalization/dynamic-variables) como la forma preferida
> de personalizar las respuestas de tu agente e introducir datos en tiempo real. Las variables dinámicas ofrecen un mejor
> mantenimiento y un enfoque más estructurado para la personalización.

Las **anulaciones** permiten que tu asistente adapte su comportamiento a cada interacción con usuarios. Puedes enviar datos y ajustes personalizados al inicio de cada conversación para que el asistente personalice sus respuestas y conocimientos con contexto en tiempo real. Las anulaciones sustituyen por completo los valores predeterminados del agente definidos en el [panel](https://elevenlabs.io/app/agents/agents) del agente.

## Descripción general

Las anulaciones te permiten modificar el comportamiento de tu agente de IA en tiempo real sin crear varios agentes. Esto te permite personalizar las respuestas con datos específicos de cada usuario.

Puedes activar anulaciones para los siguientes campos en la configuración de seguridad del agente:

* Prompt del sistema
* Primer mensaje
* Idioma
* ID de voz
* LLM (modelo de lenguaje extenso)
* Herramientas
* Base de conocimiento
* Modo de solo texto
* Estabilidad
* Velocidad
* Mejora de similitud
* Palabras clave de ASR

Cuando las anulaciones están activadas para un campo, proporcionar una anulación sigue siendo opcional. Si no proporcionas una, el agente usará los valores predeterminados definidos en el [panel](https://elevenlabs.io/app/agents/agents) del agente. Para la mayoría de los campos, se producirá un error si proporcionas una anulación cuando ese campo no tiene activadas las anulaciones.

> **Warning**
>
> Las **palabras clave de ASR** usan una denegación flexible: si el interruptor de Seguridad está desactivado y el cliente aun así envía
> `asr.keywords`, la conversación continúa y se ignoran las palabras clave (sin error). Activa la anulación de
> **palabras clave de ASR** en la configuración de Seguridad cuando quieras aplicar la mejora de palabras clave por conversación.
> Se admiten hasta 50 palabras clave por conversación.

Estos son algunos ejemplos en los que las anulaciones pueden ser útiles:

* **Saludar a usuarios** por su nombre
* **Incluir detalles específicos de la cuenta** en las respuestas
* **Ajustar el idioma** o el tono del agente según las preferencias del usuario
* **Enviar datos en tiempo real** como saldos de cuentas o el estado de pedidos
* **Mejorar la transcripción** de nombres o términos por llamada (por ejemplo, nombres de empresas en el CRM) mediante palabras clave de ASR

> **Info**
>
> Las anulaciones son especialmente útiles para aplicaciones que requieren interacciones personalizadas o gestionan
> datos sensibles de usuarios que no deberían almacenarse en la configuración base del agente.

## Guía

### Requisitos previos

* Una [cuenta de ElevenLabs](https://elevenlabs.io)
* Un agente conversacional de ElevenLabs configurado ([crea uno aquí](/docs/es/eleven-agents/quickstart))

Esta guía te muestra cómo anular los valores predeterminados del **prompt del sistema**, el **primer mensaje**, el **LLM**, las **herramientas**, la **base de conocimiento**, la **configuración de TTS** y las **palabras clave de ASR** del agente.

#### Activar anulaciones

Por razones de seguridad, las anulaciones están desactivadas de forma predeterminada. Activa los campos para los que quieras permitir anulaciones, como `first_message`, `prompt.prompt`, `prompt.tool_ids`, `prompt.knowledge_base`, `language` o `asr.keywords`.

#### Actualizar desde el panel

Ve a la configuración de tu agente y selecciona la pestaña **Seguridad**. Activa `First message`, `System prompt`, `Tools`, `Knowledge base`, `ASR keywords` y cualquier otra anulación que necesites, como `LLM`.

![Activar anulaciones](/docs/_fern-img/496f20380ffe29fc46275bbfe5c6eaabdb5e211c780188243a018b38715ea779.webp)

#### Actualizar mediante la CLI

#### Obtener la configuración del agente

```bash
elevenlabs agents pull --agent "<agent-name>"
```

#### Editar \`agent_configs/\<agent-name>.json\`

Establece los campos de `platform_settings.overrides.conversation_config_override` en `true` para permitir anulaciones en tiempo de ejecución para ese campo:

```json
{
  "platform_settings": {
    "overrides": {
      "conversation_config_override": {
        "agent": {
          "first_message": true,
          "language": true,
          "prompt": {
            "prompt": true,
            "tool_ids": true,
            "knowledge_base": true
          }
        },
        "tts": { "voice_id": true },
        "asr": { "keywords": true }
      }
    }
  }
}
```

#### Enviar tus cambios

```bash
elevenlabs agents push --agent "<agent-name>"
```

#### Actualizar mediante la API

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    platform_settings={
        "overrides": {
            "conversation_config_override": {
                "agent": {
                    "first_message": True,
                    "language": True,
                    "prompt": {
                        "prompt": True,
                        "tool_ids": True,
                        "knowledge_base": True,
                    },
                },
                "tts": {"voice_id": True},
                "asr": {"keywords": True},
            },
        },
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  platformSettings: {
    overrides: {
      conversationConfigOverride: {
        agent: {
          firstMessage: true,
          language: true,
          prompt: {
            prompt: true,
            toolIds: true,
            knowledgeBase: true,
          },
        },
        tts: { voiceId: true },
        asr: { keywords: true },
      },
    },
  },
});
```

#### Anular la conversación

En tu código, donde se inicia la conversación, pasa las anulaciones como parámetro. Las anulaciones de herramientas y de la base de conocimiento sustituyen los arrays predeterminados para esa conversación. Las anulaciones de palabras clave de ASR sustituyen la lista de palabras clave predeterminada del agente para esa conversación (máximo de 50 palabras clave).

**`Carga útil de inicio de conversación`**

```json title="Carga útil de inicio de conversación" focus={4-15}
{
  "conversation_config_override": {
    "agent": {
      "prompt": {
        "tool_ids": ["tool_7101k5zvyjhmfg983brhmhkd98n6"],
        "knowledge_base": [
          {
            "type": "file",
            "name": "Unladen Swallow Facts",
            "id": "5xM3yVvZQKV0EfqQpLrJ",
            "usage_mode": "auto"
          }
        ]
      }
    },
    "asr": {
      "keywords": ["Acme Corp", "Contoso", "Globex"]
    }
  }
}
```

> **Tip**
>
> Asegúrate de tener instalada la última versión del [SDK](/docs/es/eleven-agents/libraries/python).

**`Python`**

```python title="Python" focus={3-28} maxLines=28
from elevenlabs.conversational_ai.conversation import Conversation, ConversationInitiationData
...
conversation_override = {
    "agent": {
        "prompt": {
            "prompt": f"The customer's bank account balance is {customer_balance}. They are based in {customer_location}.", # Optional: override the system prompt.
            "llm": "gpt-4o", # Optional: override the LLM model.
            "tool_ids": [
                "tool_7101k5zvyjhmfg983brhmhkd98n6"
            ], # Optional: replace the tools available to the agent.
            "knowledge_base": [
                {
                    "type": "file",
                    "name": "Unladen Swallow Facts",
                    "id": "5xM3yVvZQKV0EfqQpLrJ",
                    "usage_mode": "auto",
                }
            ], # Optional: replace the knowledge base available to the agent.
        },
        "first_message": f"Hi {customer_name}, how can I help you today?", # Optional: override the first_message.
        "language": "en" # Optional: override the language.
    },
    "tts": {
        "voice_id": "custom_voice_id", # Optional: override the voice.
        "stability": 0.7, # Optional: override stability (0.0 to 1.0).
        "speed": 1.1, # Optional: override speed (0.7 to 1.2).
        "similarity_boost": 0.9 # Optional: override similarity boost (0.0 to 1.0).
    },
    "conversation": {
        "text_only": True # Optional: enable text-only mode (no audio).
    },
    "asr": {
        "keywords": ["Acme Corp", "Contoso"] # Optional: boost ASR for per-call terms (max 50). Requires Security → ASR keywords.
    }
}

config = ConversationInitiationData(
    conversation_config_override=conversation_override
)
conversation = Conversation(
    ...
    config=config,
    ...
)
conversation.start_session()
```

**`JavaScript`**

```javascript title="JavaScript" focus={4-29} maxLines=29
...
const conversation = await Conversation.startSession({
  ...
  overrides: {
      agent: {
          prompt: {
              prompt: `The customer's bank account balance is ${customer_balance}. They are based in ${customer_location}.`, // Optional: override the system prompt.
              llm: "gpt-4o", // Optional: override the LLM model.
              toolIds: [
                  "tool_7101k5zvyjhmfg983brhmhkd98n6"
              ], // Optional: replace the tools available to the agent.
              knowledgeBase: [
                  {
                      type: "file",
                      name: "Unladen Swallow Facts",
                      id: "5xM3yVvZQKV0EfqQpLrJ",
                      usageMode: "auto",
                  }
              ], // Optional: replace the knowledge base available to the agent.
          },
          firstMessage: `Hi ${customer_name}, how can I help you today?`, // Optional: override the first message.
          language: "en" // Optional: override the language.
      },
      tts: {
          voiceId: "custom_voice_id", // Optional: override the voice.
          stability: 0.7, // Optional: override stability (0.0 to 1.0).
          speed: 1.1, // Optional: override speed (0.7 to 1.2).
          similarityBoost: 0.9 // Optional: override similarity boost (0.0 to 1.0).
      },
      conversation: {
          textOnly: true // Optional: enable text-only mode (no audio).
      },
      asr: {
          keywords: ["Acme Corp", "Contoso"] // Optional: boost ASR for per-call terms (max 50). Requires Security → ASR keywords.
      }
  },
  ...
})
```

**`Swift`**

```swift title="Swift" focus={3-16} maxLines=16
import ElevenLabsSDK

let promptOverride = ElevenLabsSDK.AgentPrompt(
    prompt: "The customer's bank account balance is \(customer_balance). They are based in \(customer_location).", // Optional: override the system prompt.
    llm: "gpt-4o" // Optional: override the LLM model.
)
let agentConfig = ElevenLabsSDK.AgentConfig(
    prompt: promptOverride, // Optional: override the system prompt.
    firstMessage: "Hi \(customer_name), how can I help you today?", // Optional: override the first message.
    language: .en // Optional: override the language.
)
let ttsConfig = ElevenLabsSDK.TTSConfig(
    voiceId: "custom_voice_id", // Optional: override the voice.
    stability: 0.7, // Optional: override stability (0.0 to 1.0).
    speed: 1.1, // Optional: override speed (0.7 to 1.2).
    similarityBoost: 0.9 // Optional: override similarity boost (0.0 to 1.0).
)
let conversationConfig = ElevenLabsSDK.ConversationConfig(
    textOnly: true // Optional: enable text-only mode (no audio).
)
let overrides = ElevenLabsSDK.ConversationConfigOverride(
    agent: agentConfig, // Optional: override agent settings.
    tts: ttsConfig, // Optional: override TTS settings.
    conversation: conversationConfig // Optional: override conversation settings.
)

let config = ElevenLabsSDK.SessionConfig(
    agentId: "",
    overrides: overrides
)

let conversation = try await ElevenLabsSDK.Conversation.startSession(
  config: config,
  callbacks: callbacks
)
```

**`Widget`**

```html title="Widget"
  <elevenlabs-convai
    agent-id="agent_7101k5zvyjhmfg983brhmhkd98n6"
    override-language="es"         <!-- Optional: override the language -->
    override-prompt="Custom system prompt for this user"  <!-- Optional: override the system prompt -->
    override-first-message="Hi! How can I help you today?"  <!-- Optional: override the first message -->
    override-voice-id="custom_voice_id"  <!-- Optional: override the voice -->
  ></elevenlabs-convai>
```

> **Note**
>
> Al usar anulaciones, omite los campos que no quieras anular en lugar de establecer cadenas vacías o valores nulos. Incluye únicamente los campos que quieras personalizar específicamente.

> **Tip**
>
> Para encontrar la cadena correcta del modelo LLM, consulta la [referencia de la API de agentes](/docs/es/api-reference/agents/create#request.body.conversation_config.agent.prompt.llm), que incluye todos los modelos LLM compatibles y sus identificadores de cadena exactos.