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

# Gestire i documenti

Gestisci la tua knowledge base dalla [dashboard della knowledge base](https://elevenlabs.io/app/agents/knowledge-base), dalla CLI o dall'API. Per scoprire cos'è una knowledge base e come la usano gli agenti, consulta [Knowledge base](/docs/it/eleven-agents/customization/knowledge-base).

![Interfaccia principale della knowledge base che mostra un elenco di
documenti](/docs/_fern-img/0887213c4d8099240b7e5a8fec86fc75f4763e8fd80a6f7a6de33545c45f37a2.webp)

## Aggiungi documenti

I documenti possono essere creati da file, pagine web o testo semplice. Una volta creati, collegali a un agente per rendere disponibili i loro contenuti nelle conversazioni.

#### Dashboard

Dalla [dashboard della knowledge base](https://elevenlabs.io/app/agents/knowledge-base), o direttamente dalla configurazione di un agente, fai clic su **Aggiungi documento** e scegli una fonte.

#### File

Carica un documento in formato PDF, TXT, DOCX, HTML, EPUB o Markdown, fino a 20 MB per file.

![Interfaccia di caricamento file che mostra i formati supportati e il limite di 20 MB](/docs/_fern-img/b428874877d6aa2b24167c0293709e6a52a096a13b02244c0a5463139d3988e4.webp)

#### URL

Importa una pagina web incollando il relativo URL. Per acquisire un intero sito, usa l'opzione di scansione: puoi
eseguire la scansione dell'intero sito web seguendo i link dall'URL iniziale oppure importare le pagine dalla
sitemap del sito. Se una pagina non viene importata, verifica che il tuo sito consenta il [user agent del crawler ](#crawler-user-agent).

![Interfaccia di importazione URL in cui gli utenti possono incollare un link alla documentazione](/docs/_fern-img/8523ea5c5ae0418007eb7042d4af3e792a111ca41b74a090357df34cd5b4a369.webp)

> **Warning**
>
> Assicurati di avere l'autorizzazione a utilizzare i contenuti degli URL forniti.

#### Testo

Inserisci manualmente il testo e assegnagli un nome.

![Interfaccia di inserimento testo in cui gli utenti possono assegnare un nome e aggiungere contenuti personalizzati](/docs/_fern-img/4e44e310335dcea24b4832d38813992f1bdc55ef85b4e54353963dc47e9baa0a.webp)

#### CLI

La CLI non carica direttamente i documenti della knowledge base. Creali tramite la dashboard o l'API, quindi collega gli ID dei documenti risultanti alla configurazione del tuo agente.

#### Scarica la configurazione dell'agente

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

#### Modifica \`agent\_configs/\<agent-name>.json\`

Imposta `conversation_config.agent.prompt.knowledge_base`:

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

#### Invia le modifiche

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

#### API

Crea ogni documento, quindi collega gli ID restituiti alla configurazione dell'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 },
        ],
      },
    },
  },
});
```

Per sottoporre a scansione un intero sito web in una cartella di documenti anziché aggiungere una singola pagina, avvia un job di scansione. La scansione viene eseguita in modo asincrono: usa l'ID del job restituito per verificarne lo stato o annullarlo.

```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,
});
```

### User agent del crawler

Le importazioni di URL e i job di scansione recuperano le pagine con lo user agent `ElevenlabsBot/1.0`.

> **Warning**
>
> Se il tuo sito è protetto da una CDN, un WAF o una regola di protezione dai bot, consenti questo user agent affinché il crawler
> possa leggere le tue pagine. Quando una richiesta viene bloccata, il documento viene creato ma non è possibile
> estrarne alcun contenuto.

Il crawler rispetta anche `robots.txt`. Le pagine non consentite per `ElevenlabsBot` o per tutti gli user agent vengono ignorate, quindi controlla le tue regole se manca una pagina che ti aspetti venga indicizzata. Per consentire esplicitamente il crawler:

**`robots.txt`**

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

## Aggiungi documenti esistenti a un agente

I documenti possono essere riutilizzati tra gli agenti, quindi le conoscenze condivise devono essere mantenute una sola volta.

1. Vai alla [configurazione](https://elevenlabs.io/app/agents/agents) dell'agente.
2. Trova la sezione della knowledge base e fai clic su **Aggiungi documento**.
3. Seleziona un documento esistente dalla tua knowledge base oppure caricane uno nuovo.

![Interfaccia per aggiungere documenti a un
agente](/docs/_fern-img/8e8a6a2df244ed20d1ab889c8ae5dda76aefed0d15f3dd2fe09c35b281c63673.webp)

> **Tip**
>
> Riutilizzare i documenti tra gli agenti mantiene coerenti le conoscenze ed evita di duplicare i caricamenti.

## Modifica documenti

Puoi modificare direttamente il contenuto di un documento invece di eliminarlo e ricaricarlo. La modifica di un documento rigenera automaticamente i relativi chunk per la ricerca nei contenuti e gli embedding RAG, mantenendo sincronizzati la ricerca e il recupero da parte dell'agente.

* **Documenti di testo e file**: Modifica il contenuto inline e salva.
* **Documenti file**: In alternativa, sostituisci il file sottostante con una nuova versione.
* **Documenti URL**: Modifica il contenuto quando la sincronizzazione automatica è disattivata. Quando è attivata, il ciclo di sincronizzazione gestisce il documento e le modifiche manuali sono bloccate.

![Modifica inline del contenuto di un documento nella knowledge
base](/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,
});
```

## Mantieni aggiornati i contenuti URL

I documenti creati da un URL possono essere aggiornati per recuperare nuovamente i contenuti più recenti dalla fonte. L'aggiornamento reindicizza il documento, in modo che gli agenti con RAG abilitato utilizzino i contenuti aggiornati.

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

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

Nella dashboard puoi anche abilitare la sincronizzazione automatica per aggiornare automaticamente i documenti URL secondo una pianificazione, così i loro contenuti rimangono aggiornati senza interventi manuali.

## Organizza con le cartelle

Le cartelle raggruppano documenti correlati, così sono più facili da gestire e da collegare in blocco. Crea una cartella, quindi sposta al suo interno i documenti dalla dashboard o tramite l'API.

Una cartella collegata a un agente rende tutti i suoi documenti disponibili tramite RAG, quindi l'agente deve avere RAG abilitato per usare le cartelle.

![Creazione di una cartella e spostamento dei documenti al
suo interno](/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,
});
```

## Dipendenze ed eliminazione

Ogni documento ha una scheda **Agenti dipendenti** che elenca gli agenti che al momento dipendono da esso.

![Vista dei dettagli del documento che mostra la scheda Agenti dipendenti
](/docs/_fern-img/20ecce9f1db77d27bdf760b4a90c9bd2baacb612b48cf660e0f395c82aa3a725.webp)

Un documento non può essere eliminato finché un agente dipende da esso. Rimuovi prima il documento da tali agenti oppure usa l'eliminazione forzata per scollegarlo da tutti i dipendenti in una sola volta.