Frontend/st_pages/corrigir.py (63 lines of code) (raw):
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from promptweaver.core.prompt_template import PromptConfig
import streamlit as st
import pandas as pd
import numpy as np
import json
import os
from utils.notas import *
from corretor_gemini.gemini_corretor import Corretor
PROVA = 'enem'
corretor = Corretor(f"Prompts//template-correcao-{PROVA}.yml.j2", f"Prompts//template-sumarizacao-{PROVA}.yml.j2",project=os.environ.get('PROJECT_ID'))
competencias = PromptConfig.from_file_with_sample_values(corretor.config_prompweaver_corretor) \
.generation_config['response_schema']['required']
def on_submit_redacao():
with st.spinner(f'Wating for the model...'):
x = {
"tema_redacao": tema_redacao,
"textos_motivadores": textos_motivadores,
"redacao_estudante": redacao_aluno,
"enunciado_redacao": "",
}
correcao = corretor.get_correcao_from_redacao(x)
st.markdown(f"# Theme: {tema_redacao}")
st.expander("Support texts:", expanded=False).markdown(textos_motivadores)
st.expander("Student Essay", expanded=False).markdown(redacao_aluno)
if type(notasProfessores) != type(None):
st.expander("Assessment by Competency Teachers", expanded=False).write(notasProfessores)
st.markdown("### Assessment by Competency Teachers")
notas = correcao.get_nota_comptencias().T
notas.columns = competencias
st.write(notas)
st.markdown(correcao.get_comentarios(), unsafe_allow_html=True)
st.expander("JSON Model Response", expanded=False).write(correcao.get_resposta_completa())
st.set_page_config(page_title=f"Writing Evaluator {PROVA.upper()} with Gemini", page_icon="📝", layout="wide")
st.markdown(
'''
<style>
[data-testid="stSidebar"][aria-expanded="true"]{
min-width: 30%;
max-width: 900px;
}
</style>
''',
unsafe_allow_html=True
)
default_tema = ""
default_textos_motivadores = ""
default_redacao_aluno = ""
with st.sidebar:
st.write(f"Writing Evaluator {PROVA.upper()} with Gemini")
# Selcionando um dos exemplos
st.write("### Examples")
exemplos = [json.load(open(f'data/{file}', 'r', encoding='utf-8')) for file in os.listdir('data')]
exemplo = st.selectbox("Choose an Example", [f"{exemplo['tema']}" for exemplo in exemplos])
notasProfessores = None
if st.button("Load sample"):
ex = exemplos[[f"{exemplo['tema']}" for exemplo in exemplos].index(exemplo)]
default_tema = ex['tema']
default_textos_motivadores = ex['textosMotivadores']
default_redacao_aluno = ex['texto']
st.write(notasProfessores)
tema_redacao = st.text_input("Essay Theme", default_tema)
textos_motivadores = st.text_area("Support texts:", default_textos_motivadores, height=200)
redacao_aluno = st.text_area("Student Essay", default_redacao_aluno, height=350)
st.button("Submit", on_click=on_submit_redacao)