Spaces:
Running
Running
Upload 4 files
Browse files- .gitattributes +3 -0
- documents/premiere.pdf +3 -0
- documents/seconde.pdf +3 -0
- documents/term.pdf +3 -0
- main.py +29 -32
.gitattributes
CHANGED
@@ -37,3 +37,6 @@ documents/prog.pdf filter=lfs diff=lfs merge=lfs -text
|
|
37 |
documents/guide.pdf filter=lfs diff=lfs merge=lfs -text
|
38 |
documents/prob.pdf filter=lfs diff=lfs merge=lfs -text
|
39 |
documents/QR.pdf filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
37 |
documents/guide.pdf filter=lfs diff=lfs merge=lfs -text
|
38 |
documents/prob.pdf filter=lfs diff=lfs merge=lfs -text
|
39 |
documents/QR.pdf filter=lfs diff=lfs merge=lfs -text
|
40 |
+
documents/premiere.pdf filter=lfs diff=lfs merge=lfs -text
|
41 |
+
documents/seconde.pdf filter=lfs diff=lfs merge=lfs -text
|
42 |
+
documents/term.pdf filter=lfs diff=lfs merge=lfs -text
|
documents/premiere.pdf
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:80b8ef1440548faeb5861adc764e6c9740cc2d2c806685287b72eabb5aeeea73
|
3 |
+
size 484423
|
documents/seconde.pdf
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:7f4fe9747468bc08e188cfa798edac2ad621426c59d512c151c6d9f4e93ca8e4
|
3 |
+
size 410341
|
documents/term.pdf
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:eb8369e7c1611e90f51491fecc5a7c2081a9c57f9c7fbb08d0414677b56ce16f
|
3 |
+
size 487224
|
main.py
CHANGED
@@ -32,52 +32,49 @@ app.add_middleware(
|
|
32 |
allow_headers=["*"],
|
33 |
)
|
34 |
|
|
|
35 |
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash", temperature=0.5)
|
36 |
|
37 |
memory = MemorySaver()
|
38 |
|
39 |
-
glob_pattern="./*.md"
|
40 |
-
directory_path = "./documents"
|
41 |
-
loader = DirectoryLoader(directory_path, glob=glob_pattern)
|
42 |
-
doc_2025 = loader.load()
|
43 |
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
|
56 |
system = """
|
57 |
-
Tu es un assistant expert en pédagogie. Ta spécialité est
|
58 |
-
Ton
|
59 |
-
Ton
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
Si
|
|
|
|
|
65 |
"""
|
66 |
|
67 |
prompt = ChatPromptTemplate.from_messages(
|
68 |
[
|
69 |
("system", system),
|
70 |
("human", """
|
71 |
-
Voici différents
|
72 |
-
Le
|
73 |
-
{
|
74 |
-
|
75 |
-
{
|
76 |
-
|
77 |
-
{
|
78 |
-
|
79 |
-
{doc_2025}
|
80 |
-
Tu trouveras aussi l'historique conversation avec l'élève : \n {historical}
|
81 |
Et enfin l'intervention de l'élève : {question}"),
|
82 |
""")
|
83 |
]
|
@@ -95,7 +92,7 @@ class GraphState(TypedDict):
|
|
95 |
messages: Annotated[list[AnyMessage], add_messages]
|
96 |
|
97 |
def chatbot(state : GraphState):
|
98 |
-
question = prompt.invoke({'historical': format_historical(state['messages']),'
|
99 |
q = question.messages[0].content + question.messages[1].content
|
100 |
if len(state['messages'][-1].content) > 1 :
|
101 |
response = llm.invoke([HumanMessage(
|
|
|
32 |
allow_headers=["*"],
|
33 |
)
|
34 |
|
35 |
+
|
36 |
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash", temperature=0.5)
|
37 |
|
38 |
memory = MemorySaver()
|
39 |
|
|
|
|
|
|
|
|
|
40 |
|
41 |
+
file_path_sec = "./documents/seconde.pdf"
|
42 |
+
loader_sec = PyPDFLoader(file_path_sec)
|
43 |
+
sec = loader_sec.load()
|
44 |
|
45 |
+
file_path_prem = "./documents/premiere.pdf"
|
46 |
+
loader_prem = PyPDFLoader(file_path_prem)
|
47 |
+
prem = loader_prem.load()
|
48 |
|
49 |
+
file_path_term = "./documents/term.pdf"
|
50 |
+
loader_term = PyPDFLoader(file_path_term)
|
51 |
+
term = loader_term.load()
|
52 |
|
53 |
system = """
|
54 |
+
Tu es un assistant expert en pédagogie. Ta spécialité est l'enseignement de mathématiques au lycée.
|
55 |
+
Ton domaine de compétences couvre la classe de seconde générale, la spécialité de la classe de première et la spécialité de la classe de terminale.
|
56 |
+
Ton interlocuteur est, soit un élève de seconde, soit un élève de première, soit un élève de terminale.
|
57 |
+
Ton rôle est d'aider l'élève à progresser en mathématiques :
|
58 |
+
- en répondant à ces questions
|
59 |
+
- en l'aidant à résoudre un exercice
|
60 |
+
- en lui proposant des exercices pour voir s'il a bien assimilé les conceptes vus en classe avec son professeur
|
61 |
+
**ATTENTION** : Si l'élève te demande de résoudre un exercice à sa place, tu ne dois pas le faire, tu dois l'aider à trouver les réponses aux questions, mais jamais lui donner directement la réponse
|
62 |
+
Si tu ne connais pas la réponse à une question, propose à l'élève de demander à son professeur.
|
63 |
+
Tu ne dois jamais aborder d'autre sujet que les mathématiques
|
64 |
"""
|
65 |
|
66 |
prompt = ChatPromptTemplate.from_messages(
|
67 |
[
|
68 |
("system", system),
|
69 |
("human", """
|
70 |
+
Voici les différents programme officiel qui te permettront d'aider l'élève :
|
71 |
+
Le programme de la classe de seconde :
|
72 |
+
{sec}
|
73 |
+
Le programme de la spécialité mathématiques en classe de première :
|
74 |
+
{prem}
|
75 |
+
Le programme de la spécialité mathématiques en classe de terminale :
|
76 |
+
{term}
|
77 |
+
Tu trouveras aussi l'historique conversation que tu as eu avec l'élève : \n {historical}
|
|
|
|
|
78 |
Et enfin l'intervention de l'élève : {question}"),
|
79 |
""")
|
80 |
]
|
|
|
92 |
messages: Annotated[list[AnyMessage], add_messages]
|
93 |
|
94 |
def chatbot(state : GraphState):
|
95 |
+
question = prompt.invoke({'historical': format_historical(state['messages']),'sec':sec, 'prem':prem, 'term':term, 'question' : state['messages'][-1].content[0]['text']})
|
96 |
q = question.messages[0].content + question.messages[1].content
|
97 |
if len(state['messages'][-1].content) > 1 :
|
98 |
response = llm.invoke([HumanMessage(
|