Spaces:
Sleeping
Sleeping
Upload main.py
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
|