📘 Application de questions/réponses portant sur un document avec LangChain : stratégie de chunking sur du markdown
Ce programme permet de poser des questions sur un document préalablement chargé et d'obtenir des réponses pertinentes en utilisant un modèle d'intelligence artificielle. Le système exploite une base vectorielle pour rechercher le contexte approprié dans le document, puis génère une réponse via un modèle de chat. L'application propose deux interfaces :
- Une interface en ligne de commande (CLI) via
main.py. - Une interface web interactive via Streamlit avec
app.py.
Un article complet est dédié à La stratégie de chunking avec MarkdownTextSplitter
graph TD
A[init_resources] -->|Appelle| B[initialize_openai_key]
A -->|Charge et découpe| C[load_and_split_document]
A -->|Crée la base vectorielle| D[create_vector_store]
A -->|Configure le modèle et les prompts| E[setup_templates_and_model]
C -->|Fournit les fragments| D
D -->|Récupère les documents pertinents| F[generate_response]
F -->|Retourne la réponse| G[Application]
python3 -m venv env
source env/bin/activatepython -m venv env
source env/bin/activateUtilisez pip3 sur Mac ou Linux, et pip sous Windows :
pip install -r requirements.txt
pip install --upgrade langchainPour configurer correctement votre environnement, créez un fichier .env à la racine du projet et ajoutez les informations suivantes :
# Clé API OpenAI pour accéder aux modèles d'OpenAI
OPENAI_API_KEY=sk-clé open ai
# Activer le suivi avancé (tracing) pour LangChain
LANGCHAIN_TRACING_V2=true
# URL de l'endpoint LangSmith pour le suivi des performances
LANGCHAIN_ENDPOINT="https://eu.api.smith.langchain.com"
# Clé API LangSmith pour le suivi
LANGSMITH_API_KEY=clé langsmith
# Nom du projet de suivi (facultatif, pour organiser vos traces)
LANGCHAIN_PROJECT="Test_project"Pour confirmer que les variables d'environnement sont bien définies, utilisez cette commande :
echo $OPENAI_API_KEY # Sous MacOS/Linux
echo %OPENAI_API_KEY% # Sous WindowsPour démarrer l'interface en ligne de commande :
python main.pyPour démarrer l'interface web interactive :
streamlit run app.py- Le document source (
presentation-VPS.md) est chargé et segmenté en fragments pour permettre une recherche efficace. - Une base vectorielle est construite à partir de ces fragments pour rechercher les parties pertinentes du document.
- L'utilisateur pose une question via l'interface (CLI ou Streamlit).
- Les fragments pertinents sont récupérés et utilisés comme contexte pour générer une réponse à l'aide du modèle de chat.
- La réponse est affichée à l'utilisateur.