dav74 commited on
Commit
bfcc18f
·
verified ·
1 Parent(s): 38e73e6

Upload main.py

Browse files
Files changed (1) hide show
  1. main.py +11 -3
main.py CHANGED
@@ -19,7 +19,7 @@ create_table()
19
 
20
  GOOGLE_API_KEY = ''
21
 
22
- llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash", temperature=0.7)
23
 
24
 
25
  prompt_aide = PromptTemplate.from_template(
@@ -32,6 +32,7 @@ Il existe 2 types d'activités :
32
  - les activités qui demandent à l'élève de compléter un programme Python à trous (les trous sont indiqués par 3 points : ...)
33
  Si l'activité est de type "à trous" et que l'élève à laissé des trous, tu dois lui proposer de compléter les trous.
34
  Tu ne dois jamais donner la solution de l'activité (même partiellement) à l'élève, juste lui donner des inddications lui permettant de résoudre lui même l'activité
 
35
  Tu dois t'adresser directement à l'élève.
36
  L'élève ne peut pas te poser des questions, il peut juste te proposer son code.
37
  Tu ne dois pas proposer à l'élève de te poser des questions
@@ -40,6 +41,7 @@ Tu ne dois pas proposer aux élèves des modifications du programme qui sorte du
40
  Tu dois t'exprimer en français
41
  Voici l'énoncé de l'activité :
42
  {enonce}
 
43
  Voici le programme proposé par l'élève pour résoudre l'activité :
44
  {code}
45
  Pour améliorer ta réponse, tu as aussi à ta disposition l'historique des différents programme proposés par l'élève et les différents conseils que tu lui a déjà donné :
@@ -71,15 +73,21 @@ class Request(BaseModel):
71
  enonce : str
72
  code : str
73
  res_test : str
 
74
 
75
  class AgentState(TypedDict):
76
  enonce : str
77
  messages: Annotated[list[AnyMessage], add_messages]
78
  res_test : str
 
79
 
80
  def aide(state : AgentState):
81
  llm_aide = prompt_aide | llm | StrOutputParser()
82
- response = llm_aide.invoke({'enonce': state['enonce'], 'code' : state['messages'][-1].content, 'historique' : history(state['messages'])})
 
 
 
 
83
  return {"messages": [AIMessage(content=response)]}
84
 
85
  workflow = StateGraph(AgentState)
@@ -94,7 +102,7 @@ graph = workflow.compile(checkpointer=memory)
94
  @app.post('/request')
95
  def request(req: Request):
96
  config = {"configurable": {"thread_id": req.id}}
97
- rep = graph.invoke({"enonce" : req.enonce,"messages": req.code, "res_test" : req.res_test},config , stream_mode="values")
98
  return {"response":rep['messages'][-1].content}
99
 
100
 
 
19
 
20
  GOOGLE_API_KEY = ''
21
 
22
+ llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash", temperature=0.7, api_key=GOOGLE_API_KEY)
23
 
24
 
25
  prompt_aide = PromptTemplate.from_template(
 
32
  - les activités qui demandent à l'élève de compléter un programme Python à trous (les trous sont indiqués par 3 points : ...)
33
  Si l'activité est de type "à trous" et que l'élève à laissé des trous, tu dois lui proposer de compléter les trous.
34
  Tu ne dois jamais donner la solution de l'activité (même partiellement) à l'élève, juste lui donner des inddications lui permettant de résoudre lui même l'activité
35
+ L'élève est un débutant en programmation, tu dois lui rappeler les fondamentaux si nécessaire.
36
  Tu dois t'adresser directement à l'élève.
37
  L'élève ne peut pas te poser des questions, il peut juste te proposer son code.
38
  Tu ne dois pas proposer à l'élève de te poser des questions
 
41
  Tu dois t'exprimer en français
42
  Voici l'énoncé de l'activité :
43
  {enonce}
44
+ {code_trous}
45
  Voici le programme proposé par l'élève pour résoudre l'activité :
46
  {code}
47
  Pour améliorer ta réponse, tu as aussi à ta disposition l'historique des différents programme proposés par l'élève et les différents conseils que tu lui a déjà donné :
 
73
  enonce : str
74
  code : str
75
  res_test : str
76
+ code_trous : str
77
 
78
  class AgentState(TypedDict):
79
  enonce : str
80
  messages: Annotated[list[AnyMessage], add_messages]
81
  res_test : str
82
+ code_trous : str
83
 
84
  def aide(state : AgentState):
85
  llm_aide = prompt_aide | llm | StrOutputParser()
86
+ if state['code_trous'] == "":
87
+ c_trous = ""
88
+ else :
89
+ c_trous = "Voici le code à trous de l'activité : \n"+state['code_trous']
90
+ response = llm_aide.invoke({'enonce': state['enonce'], "code_trous" : c_trous, 'code' : state['messages'][-1].content, 'historique' : history(state['messages'])})
91
  return {"messages": [AIMessage(content=response)]}
92
 
93
  workflow = StateGraph(AgentState)
 
102
  @app.post('/request')
103
  def request(req: Request):
104
  config = {"configurable": {"thread_id": req.id}}
105
+ rep = graph.invoke({"enonce" : req.enonce,"code_trous" : req.code_trous,"messages": req.code, "res_test" : req.res_test},config , stream_mode="values")
106
  return {"response":rep['messages'][-1].content}
107
 
108