Skip to content

Commit 5bb92d2

Browse files
author
Bintou DIOP
committed
update dossier locale
1 parent 3a364f0 commit 5bb92d2

6 files changed

Lines changed: 42 additions & 38 deletions

File tree

27.4 KB
Binary file not shown.

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Assistant Intelligent Multi-Compétences (RAG + Agents)
1+
# Assistant intelligent multi-compétences (RAG + Agents)
22

33
Ce projet implémente un assistant conversationnel basé sur l'IA, capable d'orchestrer plusieurs compétences : la recherche d'informations dans des documents internes (**RAG** - Retrieval-Augmented Generation) et l'utilisation d'outils externes (**Agents** - Calcul, Météo, Web).
44

55
L'architecture utilise **LangChain** et l'**Agent Executor** basé sur les fonctions OpenAI pour le raisonnement et la sélection d'outils, le tout exposé via une interface **Chainlit**.
66

77
---
88

9-
## Architecture du Projet
9+
## Architecture du projet
1010

1111
L'architecture est construite autour de l'outil **LangGraph**, qui gère l'état et le flux de travail de l'Agent. Nous utilisons une structure modulaire avec le principe de la **séparation des préoccupations**.
1212

@@ -19,7 +19,7 @@ L'architecture est construite autour de l'outil **LangGraph**, qui gère l'état
1919

2020
---
2121

22-
## Installation et Lancement
22+
## Installation et lancement
2323

2424
### 1. Pré-requis
2525

@@ -30,7 +30,7 @@ L'architecture est construite autour de l'outil **LangGraph**, qui gère l'état
3030
-`GCP_REGION` : Région de déploiement Cloud Run
3131
-`GCP_SA_KEY` : Fichier JSON de ta **Service Account Key**
3232

33-
### 2. Configuration de l'Environnement
33+
### 2. Configuration de l'environnement
3434

3535
Créez un fichier **`.env`** à la racine du projet pour stocker toutes les configurations sensibles.
3636

@@ -46,17 +46,17 @@ LLM_MODEL=gpt-4o-mini
4646
CHROMA_DB_DIR=./chroma_db_agent
4747
DOCUMENT_PATH=./data/finance_document.pdf
4848
```
49-
### 3. Installation des Dépendances
49+
### 3. Installation des dépendances
5050

5151
Créez un fichier **`requirements.txt`** listant toutes les bibliothèques nécessaires, puis exécutez l'installation.
5252

5353
```bash
5454
pip install -r requirements.txt
5555
```
56-
### 4. Ingestion des Documents (RAG)
56+
### 4. Ingestion des documents (RAG)
5757
Le processus d'ingestion est géré automatiquement au premier lancement (ou lors de l'importation de finance_rag.py). Assurez-vous que le document PDF de référence (finance_document.pdf) est placé dans le dossier ./data.
5858

59-
### 5. Lancement de l'Application
59+
### 5. Lancement de l'application
6060
Lancez l'interface web via Chainlit :
6161
l'application sera accessible via l'URL affichée dans le terminal (généralement http://localhost:8000).
6262
```bash
@@ -69,12 +69,12 @@ Le projet a été déployé temporairement sur Google Cloud Run via GitHub Actio
6969
- logs et erreurs sont monitorés via Cloud Run pour assurer la stabilité durant la période active.
7070

7171

72-
# Instructions de Test
72+
# Instructions de test
7373
L'Agent Orchestrateur est capable de choisir l'outil approprié. Testez les différents modes :
7474

7575
| Scénario | Exemple de Requête | Outil (via Agent) |
7676
| :--- |:---------------------------------------------------------------| :--- |
77-
| **RAG** | *Quelle est la politique de congés selon le manuel ?* | `Document_QandA` |
77+
| **RAG** | *Quelle est la politique de congés selon le manuel ?* | `finance_document.pdf` |
7878
| **Calcul** | *Calcule 15% de 2500.* | `calculator` |
7979
| **Web Search** | *Qui a remporté la dernière élection présidentielle aux USA ?* | `web_search` |
8080
| **Météo** | *Donne la météo pour Londres, UK.* | `weather` |

agent_tools.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# tools.py
21
import os
32
import requests
43
import ast
@@ -11,12 +10,12 @@
1110
from langchain_core.tools import tool
1211
from langchain_tavily import TavilySearch
1312

14-
# --- Configuration et Initialisation ---
13+
# Configuration et Initialisation
1514
load_dotenv()
1615
OPENWEATHER_API_KEY = os.getenv("OPENWEATHER_API_KEY")
1716
CALENDAR_FILE = "./data/calendar.json"
1817

19-
# --- Outil 1 : Calculatrice Sécurisée ---
18+
# Outil 1 : Calculatrice Sécurisée
2019

2120
# Opérateurs autorisés pour l'évaluation sécurisée
2221
ALLOWED_OPERATORS = {
@@ -55,17 +54,20 @@ def calculate_financial_operation(expression: str) -> str:
5554
return safe_eval(expression)
5655

5756

58-
# --- Outil 2 : Recherche Web (Tavily) ---
59-
60-
# TavilySearchResults est déjà une classe Tool/Runnable
61-
web_search_tool = TavilySearch(
62-
name="recherche_web_actualites",
63-
description="Utilisez cet outil pour trouver des informations externes, des actualités financières récentes, ou des définitions qui ne sont pas dans les documents internes.",
64-
max_results=3
65-
)
57+
# Outil 2 : Recherche Web (Tavily)
58+
tavily_search_instance = TavilySearch(max_results=3)
59+
@tool
60+
def recherche_web_actualites(query: str) -> str:
61+
"""
62+
Utilisez cet outil pour trouver des informations externes...
63+
"""
64+
try:
65+
return tavily_search_instance.invoke(query)
66+
except Exception as e:
67+
return f"Erreur lors de la recherche web (Tavily): {e}"
6668

6769

68-
# --- Outil 3 : Météo (OpenWeatherMap) ---
70+
# Outil 3 : Météo (OpenWeatherMap)
6971

7072
@tool
7173
def get_weather_for_city(city: str) -> str:
@@ -92,7 +94,7 @@ def get_weather_for_city(city: str) -> str:
9294
return "Erreur de connexion à l'API météo. Veuillez réessayer."
9395

9496

95-
# --- Outil 4 : Calendrier / Todo List Locale ---
97+
# Outil 4 : Calendrier /
9698

9799
@tool
98100
def read_calendar(query: str) -> str:
@@ -122,12 +124,11 @@ def read_calendar(query: str) -> str:
122124
return f"Erreur lors de la lecture du calendrier: {e}"
123125

124126

125-
# --- Liste des Outils Exportée ---
126127

127-
# NOTE : La recherche web est ajoutée directement car elle est déjà une classe Tool
128+
128129
EXTERNAL_TOOLS = [
129130
calculate_financial_operation,
130-
web_search_tool,
131+
recherche_web_actualites,
131132
get_weather_for_city,
132133
read_calendar
133134
]

app_chainlit.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# lien du document: https://www.lafinancepourtous.com/IMG/pdf/guide_pedagogique/guide-pedagogique.pdf
12
import chainlit as cl
23
import os
34
from dotenv import load_dotenv
@@ -30,21 +31,9 @@ async def start():
3031
# 3. Message de bienvenue avec statut et exemples
3132
await cl.Message(
3233
content=f" **Assistant Financier Multi Compétences**\n\n"
33-
f"Bonjour ! Je peux répondre à vos questions, faire des calculs précis et chercher des informations en temps réel.\n\n"
34-
f"{rag_status}",
34+
f"Bonjour ! Je peux répondre à vos questions, faire des calculs précis et chercher des informations en temps réel.\n\n",
3535
author="Assistant",
3636
).send()
37-
38-
await cl.Message(
39-
content="Voici quelques exemples de questions que vous pouvez me poser :\n"
40-
"Quelle est la définition de la monnaie selon nos documents ?\n"
41-
"Calculez 5000 * (1 + 0.045)^5\n"
42-
"Qui est le CEO de LVMH ?\n"
43-
"Quels événements sont prévus pour ce week-end ?",
44-
author="Assistant",
45-
).send()
46-
47-
4837
@cl.on_message
4938
async def main(message: cl.Message):
5039
"""Fonction appelée à chaque nouveau message utilisateur."""

chainlit.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Welcome to Chainlit! 🚀🤖
2+
3+
Hi there, Developer! 👋 We're excited to have you on board. Chainlit is a powerful tool designed to help you prototype, debug and share applications built on top of LLMs.
4+
5+
## Useful Links 🔗
6+
7+
- **Documentation:** Get started with our comprehensive [Chainlit Documentation](https://docs.chainlit.io) 📚
8+
- **Discord Community:** Join our friendly [Chainlit Discord](https://discord.gg/k73SQ3FyUh) to ask questions, share your projects, and connect with other developers! 💬
9+
10+
We can't wait to see what you create with Chainlit! Happy coding! 💻😊
11+
12+
## Welcome screen
13+
14+
To modify the welcome screen, edit the `chainlit.md` file at the root of your project. If you do not want a welcome screen, just leave this file empty.

data/finance_document.pdf

2.04 MB
Binary file not shown.

0 commit comments

Comments
 (0)