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

# Gestionar documentos

Gestiona tu base de conocimientos desde el [panel de la base de conocimientos](https://elevenlabs.io/app/agents/knowledge-base), la CLI o la API. Para saber qué es una base de conocimientos y cómo la usan los agentes, consulta [Base de conocimientos](/docs/es/eleven-agents/customization/knowledge-base).

![Interfaz principal de la base de conocimientos que muestra una lista de
documentos](/docs/_fern-img/0887213c4d8099240b7e5a8fec86fc75f4763e8fd80a6f7a6de33545c45f37a2.webp)

## Añadir documentos

Puedes crear documentos a partir de archivos, páginas web o texto sin formato. Una vez creados, asígnalos a un agente para que su contenido esté disponible en las conversaciones.

#### Panel

Desde el [panel de la base de conocimientos](https://elevenlabs.io/app/agents/knowledge-base), o directamente desde la configuración de un agente, haz clic en **Añadir documento** y elige una fuente.

#### Archivo

Sube un documento en formato PDF, TXT, DOCX, HTML, EPUB o Markdown, de hasta 20 MB por archivo.

![Interfaz de carga de archivos que muestra los formatos compatibles y el límite de tamaño de 20 MB](/docs/_fern-img/b428874877d6aa2b24167c0293709e6a52a096a13b02244c0a5463139d3988e4.webp)

#### URL

Importa una página web pegando su URL. Para ingerir un sitio completo, usa la opción de rastreo: puedes rastrear todo el sitio web siguiendo enlaces desde la URL inicial o importar páginas desde el mapa del sitio. Si no se puede importar una página, confirma que tu sitio permite el [agente de usuario del rastreador](#crawler-user-agent).

![Interfaz de importación de URL donde puedes pegar un enlace a la documentación](/docs/_fern-img/8523ea5c5ae0418007eb7042d4af3e792a111ca41b74a090357df34cd5b4a369.webp)

> **Warning**
>
> Asegúrate de tener permiso para usar el contenido de las URL que proporciones.

#### Texto

Introduce el texto manualmente y asígnale un nombre.

![Interfaz de introducción de texto donde puedes nombrar y añadir contenido personalizado](/docs/_fern-img/4e44e310335dcea24b4832d38813992f1bdc55ef85b4e54353963dc47e9baa0a.webp)

#### CLI

La CLI no sube documentos de la base de conocimientos directamente. Créelos desde el panel o la API y, después, añade los ID de documento resultantes a la configuración de tu agente.

#### Descarga la configuración del agente

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

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

Configura `conversation_config.agent.prompt.knowledge_base`:

```json
{
  "conversation_config": {
    "agent": {
      "prompt": {
        "knowledge_base": [
          {
            "type": "file",
            "name": "Unladen Swallow Facts",
            "id": "i2YYI6huwBmcgYydAXARmQJc3pmX",
            "usage_mode": "auto"
          }
        ]
      }
    }
  }
}
```

#### Envía tus cambios

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

#### API

Crea cada documento y, después, añade los ID devueltos a la configuración del agente.

```python
import os

from dotenv import load_dotenv
from elevenlabs import ElevenLabs

load_dotenv()

elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))

# Create a document from text
text_doc = elevenlabs.conversational_ai.knowledge_base.documents.create_from_text(
    text="The airspeed velocity of an unladen swallow (European) is 24 miles per hour, or roughly 11 meters per second.",
    name="Unladen Swallow facts",
)

# Create a document from a URL
url_doc = elevenlabs.conversational_ai.knowledge_base.documents.create_from_url(
    url="https://en.wikipedia.org/wiki/Unladen_swallow",
    name="Unladen Swallow Wikipedia page",
)

# Create a document from a file
file_doc = elevenlabs.conversational_ai.knowledge_base.documents.create_from_file(
    file=open("/path/to/unladen-swallow-facts.txt", "rb"),
    name="Unladen Swallow Facts",
)

# Attach the documents to an agent
elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    conversation_config={
        "agent": {
            "prompt": {
                "knowledge_base": [
                    {"type": "text", "name": text_doc.name, "id": text_doc.id},
                    {"type": "url", "name": url_doc.name, "id": url_doc.id},
                    {"type": "file", "name": file_doc.name, "id": file_doc.id},
                ]
            }
        }
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import fs from "node:fs";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

// Create a document from text
const textDoc = await elevenlabs.conversationalAi.knowledgeBase.documents.createFromText({
  name: "Unladen Swallow Facts",
  text: "The airspeed velocity of an unladen swallow (European) is 24 miles per hour, or roughly 11 meters per second.",
});

// Create a document from a URL
const urlDoc = await elevenlabs.conversationalAi.knowledgeBase.documents.createFromUrl({
  name: "Unladen Swallow Wikipedia page",
  url: "https://en.wikipedia.org/wiki/Unladen_swallow",
});

// Create a document from a file
const fileBuffer = fs.readFileSync("/path/to/unladen-swallow-facts.txt");
const file = new File([fileBuffer], "unladen-swallow-facts.txt", { type: "text/plain" });
const fileDoc = await elevenlabs.conversationalAi.knowledgeBase.documents.createFromFile({
  name: "Unladen Swallow Facts",
  file,
});

// Attach the documents to an agent
await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  conversationConfig: {
    agent: {
      prompt: {
        knowledgeBase: [
          { type: "text", name: textDoc.name, id: textDoc.id },
          { type: "url", name: urlDoc.name, id: urlDoc.id },
          { type: "file", name: fileDoc.name, id: fileDoc.id },
        ],
      },
    },
  },
});
```

Para rastrear un sitio web entero en una carpeta de documentos en lugar de añadir una sola página, inicia un trabajo de rastreo. El rastreo se ejecuta de forma asíncrona: usa el ID del trabajo devuelto para comprobar su estado o cancelarlo.

```python
crawl = elevenlabs.conversational_ai.knowledge_base.crawl_jobs.create(
    url="https://elevenlabs.io/docs",
    max_depth=3,
    max_pages=1000,
)
```

```typescript
const crawl = await elevenlabs.conversationalAi.knowledgeBase.crawlJobs.create({
  url: "https://elevenlabs.io/docs",
  maxDepth: 3,
  maxPages: 1000,
});
```

### Agente de usuario del rastreador

Las importaciones de URL y los trabajos de rastreo recuperan páginas con el agente de usuario `ElevenlabsBot/1.0`.

> **Warning**
>
> Si tu sitio está detrás de una CDN, un WAF o una regla de protección contra bots, permite este agente de usuario para que el rastreador pueda leer tus páginas. Cuando se bloquea una solicitud, el documento se crea, pero no se puede extraer contenido de él.

El rastreador también respeta `robots.txt`. Se omiten las páginas no permitidas para `ElevenlabsBot` o para todos los agentes de usuario, así que revisa tus reglas si falta una página que esperabas que se indexara. Para permitir explícitamente el rastreador:

**`robots.txt`**

```txt robots.txt
User-agent: ElevenlabsBot
Allow: /
```

## Añadir documentos existentes a un agente

Puedes reutilizar documentos entre agentes, por lo que el conocimiento compartido solo necesita mantenerse una vez.

1. Ve a la [configuración](https://elevenlabs.io/app/agents/agents) del agente.
2. Busca la sección de base de conocimientos y haz clic en **Añadir documento**.
3. Selecciona un documento existente de tu base de conocimientos o sube uno nuevo.

![Interfaz para añadir documentos a un
agente](/docs/_fern-img/8e8a6a2df244ed20d1ab889c8ae5dda76aefed0d15f3dd2fe09c35b281c63673.webp)

> **Tip**
>
> Reutilizar documentos entre agentes mantiene el conocimiento coherente y evita duplicar cargas.

## Editar documentos

Puedes editar directamente el contenido de un documento en lugar de eliminarlo y volver a subirlo. Al editar un documento se regeneran automáticamente sus fragmentos de búsqueda de contenido y sus embeddings de RAG, por lo que la búsqueda y la recuperación del agente se mantienen sincronizadas.

* **Documentos de texto y archivos**: Edita el contenido en línea y guarda los cambios.
* **Documentos de archivo**: También puedes sustituir el archivo subyacente por una nueva versión.
* **Documentos de URL**: Edita el contenido cuando la sincronización automática esté desactivada. Cuando está activada, el ciclo de sincronización gestiona el documento y bloquea las ediciones manuales.

![Edición del contenido de un documento en línea en la base de
conocimientos](/docs/_fern-img/4ea01bb2c13162f31f7610b049ae0db542e279a26da38f4c79f17fb89a8524f5.webp)

```python
# Update a document's name or content
elevenlabs.conversational_ai.knowledge_base.documents.update(
    documentation_id="i2YYI6huwBmcgYydAXARmQJc3pmX",
    name="Unladen Swallow Facts",
    content="The airspeed velocity of an unladen swallow (European) is 24 miles per hour.",
)

# Replace the underlying file of a file document

elevenlabs.conversational_ai.knowledge_base.document.update_file(
documentation_id="i2YYI6huwBmcgYydAXARmQJc3pmX",
file=open("/path/to/unladen-swallow-facts-v2.txt", "rb"),
)

```

```typescript
// Update a document's name or content
await elevenlabs.conversationalAi.knowledgeBase.documents.update("i2YYI6huwBmcgYydAXARmQJc3pmX", {
  name: "Unladen Swallow Facts",
  content: "The airspeed velocity of an unladen swallow (European) is 24 miles per hour.",
});

// Replace the underlying file of a file document
const fileBuffer = fs.readFileSync("/path/to/unladen-swallow-facts-v2.txt");
const updatedFile = new File([fileBuffer], "unladen-swallow-facts-v2.txt", { type: "text/plain" });
await elevenlabs.conversationalAi.knowledgeBase.document.updateFile("i2YYI6huwBmcgYydAXARmQJc3pmX", {
  file: updatedFile,
});
```

## Mantener actualizado el contenido de las URL

Puedes actualizar los documentos creados a partir de una URL para volver a obtener el contenido más reciente de su fuente. Al actualizarse, el documento se reindexa para que los agentes con RAG usen el contenido actualizado.

```python
elevenlabs.conversational_ai.knowledge_base.document.refresh(
    documentation_id="i2YYI6huwBmcgYydAXARmQJc3pmX",
)
```

```typescript
await elevenlabs.conversationalAi.knowledgeBase.document.refresh("i2YYI6huwBmcgYydAXARmQJc3pmX");
```

En el panel, también puedes activar la sincronización automática para actualizar los documentos de URL según una programación, de modo que su contenido se mantenga al día sin actualizaciones manuales.

## Organizar con carpetas

Las carpetas agrupan documentos relacionados para que sea más fácil gestionarlos y añadirlos en bloque. Crea una carpeta y, después, mueve documentos a ella desde el panel o la API.

Una carpeta asignada a un agente pone todos sus documentos a disposición mediante RAG, por lo que el agente debe tener RAG activado para usar carpetas.

![Creación de una carpeta y traslado de documentos a
ella](/docs/_fern-img/8267c0d4a36282c1fcaaacf0a665e5caf8c4cf6f2908451fc5a3b1cf6a8dd2e0.webp)

```python
# Create a folder
folder = elevenlabs.conversational_ai.knowledge_base.documents.create_folder(
    name="Product documentation",
)

# Move a document into the folder

elevenlabs.conversational_ai.knowledge_base.documents.move(
document_id="i2YYI6huwBmcgYydAXARmQJc3pmX",
move_to=folder.id,
)

```

```typescript
// Create a folder
const folder = await elevenlabs.conversationalAi.knowledgeBase.documents.createFolder({
  name: "Product documentation",
});

// Move a document into the folder
await elevenlabs.conversationalAi.knowledgeBase.documents.move("i2YYI6huwBmcgYydAXARmQJc3pmX", {
  moveTo: folder.id,
});
```

## Dependencias y eliminación

Cada documento tiene una pestaña **Agentes dependientes** que muestra los agentes que dependen actualmente de él.

![Vista de detalles del documento que muestra la pestaña Agentes dependientes](/docs/_fern-img/20ecce9f1db77d27bdf760b4a90c9bd2baacb612b48cf660e0f395c82aa3a725.webp)

No puedes eliminar un documento mientras un agente dependa de él. Primero elimina el documento de esos agentes o usa la eliminación forzada para desvincularlo de todos los dependientes de una vez.