Bibliothèques

Les bibliothèques sont des bases de connaissances persistantes que vous pouvez alimenter avec des documents et connecter à vos agents pour l’augmentation des capacités de génération par récupération (RAG). Importez des PDF, des articles ou tout autre document, et vos agents pourront les explorer à la demande.

Cette page explique comment créer des bibliothèques, importer des documents, vérifier le statut de traitement et gérer les accès — le tout via l’API.

Astuce

Vous pouvez également utiliser des bibliothèques créées dans Vibe : l’identifiant de la bibliothèque apparaît dans l’URL (https://chat.mistral.ai/libraries/<library_id>). Pour permettre à un agent d’accéder à une bibliothèque Vibe, vous devez être Admin de l’Organisation et la partager avec l’organisation. L’inverse fonctionne aussi : créez une bibliothèque via l’API et partagez-la avec votre équipe dans Vibe.

Créer une bibliothèque

Créer une bibliothèque

Créez une nouvelle bibliothèque en renseignant un nom et éventuellement une description.

new_library = client.beta.libraries.create(name="Mistral Models", description="Une bibliothèque simple contenant des informations sur les modèles Mistral.")

La réponse contient des métadonnées comme generated_name et generated_description — celles-ci sont mises à jour automatiquement à mesure que vous ajoutez des fichiers.

Une nouvelle bibliothèque commence vide. Vous pouvez lister ses documents pour vérifier :

doc_list = client.beta.libraries.documents.list(library_id=new_library.id).data
for doc in doc_list:
    print(f"{doc.name}: {doc.extension} avec {doc.number_of_pages} pages.")
    print(f"{doc.summary}")
Lister les bibliothèques

Lister les bibliothèques

Listez toutes les bibliothèques de votre espace de travail avec leur nombre de documents.

libraries = client.beta.libraries.list().data
for library in libraries:
    print(library.name, f"avec {library.nb_documents} documents.")
Importer des documents

Importer des documents

Importez un document en renseignant l’identifiant de la bibliothèque et le fichier.

from mistralai.client.models import File

# Import d’un document
file_path = "mistral7b.pdf"
with open(file_path, "rb") as file_content:
    uploaded_doc = client.beta.libraries.documents.upload(
        library_id=new_library.id,
        file=File(fileName="mistral7b.pdf", content=file_content),
    )
Lister les documents

Lister les documents

Listez les documents d’une bibliothèque spécifique :

if len(libraries) == 0:
    print("Aucune bibliothèque trouvée.")
else:
    doc_list = client.beta.libraries.documents.list(library_id=libraries[0].id).data
    for doc in doc_list:
        print(f"{doc.name}: {doc.extension} avec {doc.number_of_pages} pages.")
        print(f"{doc.summary}")
Statut du document

Statut du document

Après avoir importé un document, vous pouvez vérifier son statut de traitement.

# Vérifier le statut du document
status = client.beta.libraries.documents.status(library_id=new_library.id, document_id=uploaded_doc.id)
print(status)

# Attendre la fin du traitement
import time
while status.processing_status == "Running":
    status = client.beta.libraries.documents.status(library_id=new_library.id, document_id=uploaded_doc.id)
    time.sleep(1)
print(status)

Le statut est Running tant que le document est en cours de traitement, puis Completed une fois prêt.

{
  "document_id": "424fdcb8-3c11-478c-a651-9637be8b4fc4",
  "processing_status": "Running"
}
Récupérer les informations d’un document

Récupérer les informations d’un document

Récupérez toutes les métadonnées d’un document une fois son traitement terminé.

# Obtenir les infos du document une fois traité
uploaded_doc = client.beta.libraries.documents.get(library_id=new_library.id, document_id=uploaded_doc.id)
Récupérer le contenu d’un document

Récupérer le contenu d’un document

Extrait le texte de n’importe quel document d’une bibliothèque.

extracted_text = client.beta.libraries.documents.text_content(library_id=new_library.id, document_id=uploaded_doc.id)
# Il existe aussi extracted_text signed_url et raw signed_url
print(extracted_text)
Suppression des bibliothèques et des documents

Suppression des bibliothèques et des documents

Supprimez des bibliothèques ou des documents individuels selon vos besoins.

deleted_library = client.beta.libraries.delete(library_id=new_library.id)
Gérer les accès

Gérer les accès

Vous pouvez contrôler qui accède à chaque bibliothèque. La gestion des accès se fait à partir de :

  • org_id — l’identifiant de votre organisation.
  • level — le niveau d’accès : "Viewer" ou "Editor".
  • share_with_uuid — l’identifiant de l’entité à laquelle vous partagez (disponible dans votre console et les paramètres de la plateforme).
  • share_with_type — le type d’entité : "User", "Workspace" ou "Org".

Quelques règles :

  • Vous devez être propriétaire de la bibliothèque pour la partager.
  • Un propriétaire ne peut pas supprimer son propre accès.
  • Vous devez être propriétaire de la bibliothèque pour supprimer l’accès de quelqu’un d’autre.
  • Les « viewers » ne peuvent pas modifier les bibliothèques. Les « editors », si.

Étant donnée une bibliothèque, liste toutes les entités qui y ont accès ainsi que leur niveau d'accès.

accesses_list = client.beta.libraries.accesses.list(library_id=new_library.id)

Pour toutes les informations techniques, consultez la documentation de l’API Bibliothèques.

Connecter des bibliothèques à des agents

Connecter des bibliothèques à des agents

La bibliothèque de documents est un outil agent intégré qui permet aux agents d’effectuer des recherches dans vos bibliothèques. Pour l’utiliser, créez un agent muni de l’outil document_library et transmettez les library_ids auxquelles il aura accès.

document_library_graph
library_agent = client.beta.agents.create(
    model="mistral-medium-latest",
    name="Document Library Agent",
    description="Agent utilisé pour accéder aux documents de la bibliothèque de documents.",
    instructions="Utilisez l’outil bibliothèque pour accéder à des documents externes.",
    tools=[{"type": "document_library", "library_ids": [new_library.id]}],
    completion_args={
        "temperature": 0.3,
        "top_p": 0.95,
    }
)

Lorsque vous créez un agent, la réponse inclut un identifiant d’agent. Utilisez-le pour démarrer une conversation.

Conversations avec un agent Bibliothèque de documents

Conversations avec un agent Bibliothèque de documents

Une fois l’agent prêt, vous pouvez interroger votre bibliothèque à tout moment :

response = client.beta.conversations.start(
    agent_id=library_agent.id,
    inputs="How does the vision encoder for pixtral 12b work"
)
Comprendre la réponse

Comprendre la réponse

La réponse contient deux types d’entrée :

  • tool.execution — l’outil Document Library a effectué une recherche. Contient le name, les timestamps (created_at, completed_at) et un identifiant unique id.

  • message.output — la réponse de l’agent, basée sur les documents retrouvés. Le champ content est une liste de blocs qui peuvent être de type text (la réponse proprement dite) ou tool_reference (citations qui référencent les documents source). Les citations garantissent la vérifiabilité des sorties.

L’objet usage donne les statistiques de jetons, dont les connector_tokens utilisés lors de la recherche dans la bibliothèque.

Astuce

Aller plus loin

  • Guide de démarrage RAG : construisez un pipeline de génération augmentée par récupération (RAG) de zéro.
  • Embeddings : générez des vecteurs d'embeddings pour des pipelines RAG personnalisés.
  • Outils d'agent : explorez d'autres outils intégrés comme la recherche web, Code Interpreter et la génération d'images.