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

# Detección de idioma

## Descripción general

La herramienta del sistema `language detection` permite que tu agente de ElevenLabs cambie su idioma de salida a cualquiera de los idiomas compatibles.
Esta herramienta del sistema no se activa automáticamente. Puedes personalizar su descripción para adaptarla a tu caso de uso específico.

> **Note**
>
> Siempre que sea posible, recomendamos activar todos los idiomas para un agente y activar la herramienta del sistema
> de detección de idioma.

Nuestra herramienta de detección de idioma activa el cambio de idioma en dos casos, ambos basados en el idioma y el contenido detectados en el audio recibido:

* `detection`: si un usuario habla en un idioma diferente al idioma de salida actual, se activará un cambio
* `content`: si el usuario pide en el idioma actual cambiar a un idioma nuevo, se activará un cambio

**Objetivo**: Cambiar automáticamente al idioma detectado del usuario durante las conversaciones.

**Condiciones de activación**: El LLM debe llamar a esta herramienta cuando:

* El usuario habla en un idioma distinto al idioma actual de la conversación
* El usuario solicita explícitamente cambiar de idioma
* Se necesita compatibilidad multilingüe para la conversación

**Parámetros**:

* `reason` (cadena, obligatorio): El motivo del cambio de idioma
* `language` (cadena, obligatorio): El código de idioma al que cambiar (debe estar en la lista de idiomas compatibles)

**Formato de llamada de función**:

```json
{
  "type": "function",
  "function": {
    "name": "language_detection",
    "arguments": "{\"reason\": \"User requested Spanish\", \"language\": \"es\"}"
  }
}
```

**Implementación**: Configura los idiomas compatibles en los ajustes del agente y añade la herramienta de sistema de detección de idioma. El agente cambiará automáticamente la voz y las respuestas para coincidir con los idiomas detectados.

## Activar la detección de idioma

#### Configura los idiomas compatibles

Los idiomas a los que el agente puede cambiar deben definirse en la pestaña de configuración `Agent`.

![Idiomas del agente](/docs/_fern-img/633707d54276febd3baa054c4f41b186225b74f606307a46e8262607befc8381.webp)

#### Añade la herramienta de detección de idioma

Activa la detección de idioma seleccionando la herramienta del sistema preconfigurada en las herramientas de tu agente, en la pestaña `Agent`.
Estará disponible automáticamente como opción al seleccionar `add tool`.

![Herramienta del sistema](/docs/_fern-img/3d17048ab2bc1a0547c49056abb98f624caf866927ff1714af27f898b06ab18f.webp)

#### Configura la descripción de la herramienta

Añade una descripción que especifique cuándo llamar a la herramienta.

![Descripción](/docs/_fern-img/3bebc9fe07dba7121bce7793f3793858c710fc8ea1c221347604eb05929271df.webp)

## Restringir el cambio al inicio de la conversación

En una conversación larga, el habla de fondo o un acento poco habitual pueden activar ocasionalmente un cambio que la
persona que llama no pretendía. Al activar `only_at_conversation_start`, el cambio se limita a los dos primeros turnos
del usuario.

Si el idioma no cambia durante esos dos turnos, la detección de idioma se desactiva durante el resto
de la conversación: cualquier intento posterior falla y el agente sigue hablando en el idioma actual. Si
el idioma cambia dentro de esa ventana, el cambio seguirá disponible durante el resto de la
conversación, por lo que se podrá corregir una detección incorrecta.

La opción está desactivada de forma predeterminada.

#### Actualizar desde el panel de control

Selecciona la herramienta **Detect language** en la pestaña **Tools** y activa **Only at start of conversation**.

#### Actualizar mediante la CLI

#### Obtén la configuración del agente

```bash
elevenlabs agents pull
```

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

Configura `only_at_conversation_start` en la herramienta de detección de idioma. Los campos circundantes
se han omitido aquí por brevedad.

```json
{
  "conversation_config": {
    "agent": {
      "prompt": {
        "built_in_tools": {
          "language_detection": {
            "type": "system",
            "name": "language_detection",
            "params": {
              "system_tool_type": "language_detection",
              "only_at_conversation_start": true
            }
          }
        }
      }
    }
  }
}
```

#### Envía tus cambios

```bash
elevenlabs agents push
```

#### Actualizar mediante la API

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    conversation_config={
        "agent": {
            "prompt": {
                "built_in_tools": {
                    "language_detection": {
                        "type": "system",
                        "name": "language_detection",
                        "params": {
                            "system_tool_type": "language_detection",
                            "only_at_conversation_start": True,
                        },
                    }
                }
            }
        }
    },
)
```

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

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  conversationConfig: {
    agent: {
      prompt: {
        builtInTools: {
          languageDetection: {
            type: "system",
            name: "language_detection",
            params: {
              systemToolType: "language_detection",
              onlyAtConversationStart: true,
            },
          },
        },
      },
    },
  },
});
```

> **Note**
>
> Cuando se bloquea el cambio, la herramienta devuelve un error al LLM indicándole que siga hablando
> en el idioma actual. El motivo no se muestra a la persona que llama.

## Implementación mediante API

Al crear un agente mediante la API, puedes añadir la herramienta `language detection` a la configuración de tu agente. Debe definirse como una herramienta del sistema:

```python
from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs

elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")

# Create language presets
language_presets = {
    "nl": {"overrides": {"agent": {"first_message": "Hoi, hoe gaat het met je?"}}},
    "fi": {"overrides": {"agent": {"first_message": "Hei, kuinka voit?"}}},
    "tr": {"overrides": {"agent": {"first_message": "Merhaba, nasılsın?"}}},
    "ru": {"overrides": {"agent": {"first_message": "Привет, как ты?"}}},
    "pt": {"overrides": {"agent": {"first_message": "Oi, como você está?"}}},
}

response = elevenlabs.conversational_ai.agents.create(
    conversation_config=ConversationalConfig(
        agent=AgentConfig(
            first_message="Hi how are you?",
            prompt={
                "built_in_tools": {
                    "language_detection": {
                        "type": "system",
                        "name": "language_detection",
                        # Optional: customize when the tool should be triggered
                        "description": "",
                        "params": {"system_tool_type": "language_detection"},
                    }
                },
            },
        ),
        language_presets=language_presets,
    ),
)
```

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

const elevenlabs = new ElevenLabsClient({
  apiKey: "YOUR_API_KEY",
});

await elevenlabs.conversationalAi.agents.create({
  conversationConfig: {
    agent: {
      firstMessage: "Hi, how are you?",
      prompt: {
        builtInTools: {
          languageDetection: {
            type: "system",
            name: "language_detection",
            description: "", // Optional: Customize when the tool should be triggered
            params: { systemToolType: "language_detection" },
          },
        },
      },
    },
    languagePresets: {
      nl: { overrides: { agent: { firstMessage: "Hoi, hoe gaat het met je?" } } },
      fi: {
        overrides: { agent: { firstMessage: "Hei, kuinka voit?" } },
        firstMessageTranslation: {
          sourceHash: '{"firstMessage":"Hi how are you?","language":"en"}',
          text: "Hei, kuinka voit?",
        },
      },
      tr: { overrides: { agent: { firstMessage: "Merhaba, nasılsın?" } } },
      ru: { overrides: { agent: { firstMessage: "Привет, как ты?" } } },
      pt: { overrides: { agent: { firstMessage: "Oi, como você está?" } } },
      ar: { overrides: { agent: { firstMessage: "مرحبًا كيف حالك؟" } } },
    },
  },
});
```

```bash
curl -X POST https://api.elevenlabs.io/v1/convai/agents/create \
     -H "xi-api-key: YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
  "conversation_config": {
    "agent": {
      "first_message": "Hi how are you?",
      "prompt": {
        "built_in_tools": {
          "language_detection": {
            "type": "system",
            "name": "language_detection",
            "description": "",
            "params": { "system_tool_type": "language_detection" }
          }
        }
      }
    },
    "language_presets": {
      "nl": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Hoi, hoe gaat het met je?",
            "language": null
          },
          "tts": null
        }
      },
      "fi": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Hei, kuinka voit?",
            "language": null
          },
          "tts": null
        }
      },
      "tr": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Merhaba, nasılsın?",
            "language": null
          },
          "tts": null
        }
      },
      "ru": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Привет, как ты?",
            "language": null
          },
          "tts": null
        }
      },
      "pt": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "Oi, como você está?",
            "language": null
          },
          "tts": null
        }
      },
      "ar": {
        "overrides": {
          "agent": {
            "prompt": null,
            "first_message": "مرحبًا كيف حالك؟",
            "language": null
          },
          "tts": null
        }
      }
    }
  }
}'
```

> **Tip**
>
> Deja la descripción en blanco para usar el prompt predeterminado de detección de idioma.