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

# Gérer les documents

Gérez votre base de connaissances depuis le [Dashboard de la base de connaissances](https://elevenlabs.io/app/agents/knowledge-base), la CLI ou l'API. Pour savoir ce qu'est une base de connaissances et comment les agents l'utilisent, consultez [Base de connaissances](/docs/fr/eleven-agents/customization/knowledge-base).

![Interface principale de la base de connaissances affichant une liste de
documents](/docs/_fern-img/0887213c4d8099240b7e5a8fec86fc75f4763e8fd80a6f7a6de33545c45f37a2.webp)

## Ajouter des documents

Les documents peuvent être créés à partir de fichiers, de pages web ou de texte brut. Une fois créés, associez-les à un agent afin de rendre leur contenu disponible dans les conversations.

#### Dashboard

Depuis le [Dashboard de la base de connaissances](https://elevenlabs.io/app/agents/knowledge-base), ou directement depuis la configuration d'un agent, cliquez sur **Ajouter un document** et choisissez une source.

#### Fichier

Importez un document aux formats PDF, TXT, DOCX, HTML, EPUB ou Markdown, dans la limite de 20 Mo par fichier.

![Interface d'importation de fichier affichant les formats pris en charge et la limite de taille de 20 Mo](/docs/_fern-img/b428874877d6aa2b24167c0293709e6a52a096a13b02244c0a5463139d3988e4.webp)

#### URL

Importez une page web en collant son URL. Pour ingérer un site entier, utilisez l'option d'exploration, soit
pour explorer l'ensemble du site en suivant les liens depuis l'URL de départ, soit pour importer les pages à partir du
plan de site. Si l'importation d'une page échoue, vérifiez que votre site autorise l'[agent utilisateur du crawler](#crawler-user-agent).

![Interface d'importation d'URL dans laquelle les utilisateurs peuvent coller un lien vers la documentation](/docs/_fern-img/8523ea5c5ae0418007eb7042d4af3e792a111ca41b74a090357df34cd5b4a369.webp)

> **Warning**
>
> Assurez-vous d'avoir l'autorisation d'utiliser le contenu des URL que vous fournissez.

#### Texte

Saisissez le texte manuellement et donnez-lui un nom.

![Interface de saisie de texte permettant aux utilisateurs de nommer et d'ajouter du contenu personnalisé](/docs/_fern-img/4e44e310335dcea24b4832d38813992f1bdc55ef85b4e54353963dc47e9baa0a.webp)

#### CLI

La CLI n'importe pas directement les documents de la base de connaissances. Créez-les depuis le Dashboard ou l'API, puis associez les ID de document obtenus à la configuration de votre agent.

#### Récupérer la configuration de l'agent

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

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

Définissez `conversation_config.agent.prompt.knowledge_base` :

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

#### Envoyer vos modifications

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

#### API

Créez chaque document, puis associez les ID renvoyés à la configuration de l'agent.

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

Pour explorer un site web entier dans un dossier de documents plutôt que d'ajouter une seule page, lancez une tâche d'exploration. L'exploration s'exécute de manière asynchrone, utilisez l'ID de tâche renvoyé pour vérifier son statut ou l'annuler.

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

### Agent utilisateur du crawler

Les importations d'URL et les tâches d'exploration récupèrent les pages avec l'agent utilisateur `ElevenlabsBot/1.0`.

> **Warning**
>
> Si votre site se trouve derrière un CDN, un WAF ou une règle de protection contre les bots, autorisez cet agent utilisateur afin que le crawler
> puisse lire vos pages. Lorsqu'une requête est bloquée, le document est créé, mais aucun contenu ne peut en être
> extrait.

Le crawler respecte également `robots.txt`. Les pages interdites à `ElevenlabsBot` ou à tous les agents utilisateurs sont ignorées. Vérifiez donc vos règles si une page que vous prévoyez d'indexer est absente. Pour autoriser explicitement le crawler :

**`robots.txt`**

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

## Ajouter des documents existants à un agent

Les documents peuvent être réutilisés entre les agents, les connaissances partagées ne doivent donc être gérées qu'une seule fois.

1. Accédez à la [configuration](https://elevenlabs.io/app/agents/agents) de l'agent.
2. Recherchez la section de la base de connaissances et cliquez sur **Ajouter un document**.
3. Sélectionnez un document existant dans votre base de connaissances ou importez-en un nouveau.

![Interface permettant d'ajouter des documents à un
agent](/docs/_fern-img/8e8a6a2df244ed20d1ab889c8ae5dda76aefed0d15f3dd2fe09c35b281c63673.webp)

> **Tip**
>
> Réutiliser les documents entre les agents garantit la cohérence des connaissances et évite de dupliquer les importations.

## Modifier les documents

Vous pouvez modifier directement le contenu d'un document au lieu de le supprimer et de l'importer à nouveau. La modification d'un document régénère automatiquement ses segments de recherche de contenu et ses embeddings RAG, afin que la recherche et la récupération par l'agent restent synchronisées.

* **Documents texte et fichier** : modifiez le contenu directement et enregistrez-le.
* **Documents fichier** : vous pouvez également remplacer le fichier sous-jacent par une nouvelle version.
* **Documents URL** : modifiez le contenu lorsque la synchronisation automatique est désactivée. Lorsqu'elle est activée, le cycle de synchronisation gère le document et les modifications manuelles sont bloquées.

![Modification directe du contenu d'un document dans la base de
connaissances](/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,
});
```

## Maintenir le contenu des URL à jour

Les documents créés à partir d'une URL peuvent être actualisés afin de récupérer le contenu le plus récent de leur source. L'actualisation réindexe le document afin que les agents utilisant RAG exploitent le contenu mis à jour.

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

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

Dans le Dashboard, vous pouvez également activer la synchronisation automatique pour actualiser les documents URL selon une planification, afin que leur contenu reste à jour sans intervention manuelle.

## Organiser avec des dossiers

Les dossiers regroupent les documents associés afin de faciliter leur gestion et leur association en masse. Créez un dossier, puis déplacez-y des documents depuis le Dashboard ou l'API.

Un dossier associé à un agent rend tous ses documents disponibles via RAG. RAG doit donc être activé sur l'agent pour utiliser des dossiers.

![Création d'un dossier et déplacement de documents
dans celui-ci](/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,
});
```

## Dépendances et suppression

Chaque document comporte un onglet **Agents dépendants** qui répertorie les agents qui en dépendent actuellement.

![Vue détaillée du document affichant l'onglet
Agents dépendants](/docs/_fern-img/20ecce9f1db77d27bdf760b4a90c9bd2baacb612b48cf660e0f395c82aa3a725.webp)

Un document ne peut pas être supprimé tant qu'un agent en dépend. Retirez d'abord le document de ces agents, ou utilisez la suppression forcée pour le dissocier de tous les éléments dépendants en une seule fois.