dav74 commited on
Commit
20fe53d
·
verified ·
1 Parent(s): 7442949

Upload 4 files

Browse files
.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
- file_path_prob = "./documents/prob.pdf"
45
- loader_prob = PyPDFLoader(file_path_prob)
46
- prob = loader_prob.load()
47
 
48
- file_path_guide = "./documents/guide.pdf"
49
- loader_guide = PyPDFLoader(file_path_guide)
50
- guide = loader_guide.load()
51
 
52
- file_path_QR = "./documents/QR.pdf"
53
- loader_QR = PyPDFLoader(file_path_QR)
54
- QR = loader_QR.load()
55
 
56
  system = """
57
- Tu es un assistant expert en pédagogie. Ta spécialité est le **grand oral** (épreuve du bacalauréat technique et général).
58
- Ton interlocuteur est un élève qui est en train de préparer son épreuve de grand oral.
59
- Ton rôle est d'aider l'élève à préparer son grand oral
60
- Tu dois répondre à toutes ses questions : organisation de l'épreuve, but de l'épreuve...
61
- Tu dois aussi l'aider à trouver un sujet et à construire sa problématique.
62
- Tu dois uniquement discuter du grand oral avec ton interlocuteur
63
- Le projet d'orientation post baccalauréat ne doit plus être obligatoirement évoqué au cours de l'épreuve (même si tu trouves dans les documents fournis des éléments qui laisseraient penser le contraire)
64
- Si tu ne connais pas la réponse à une question, propose à l'élève de demander à son professeur.
 
 
65
  """
66
 
67
  prompt = ChatPromptTemplate.from_messages(
68
  [
69
  ("system", system),
70
  ("human", """
71
- Voici différents documents qui t'aideront à répondre aux questions des élèves :
72
- Le guide du grand oral :
73
- {guide}
74
- Un ensemble de Question-Réponse sur le Grand Oral:
75
- {QR}
76
- Un texte qui explique la notion de sujet et de problématique:
77
- {prob}
78
- Les informations à jour sur le déroulement de l'épreuve (si tu trouves des informations qui te semble contradictoires dans les documents ci-dessous, c'est le documents ci-dessous qui doit être ta source d'informations) :
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']),'prob':prob, 'doc_2025':doc_2025, 'guide':guide, 'QR':QR , 'question' : state['messages'][-1].content[0]['text']})
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(