devolucion_AAP / app.py
gcapde's picture
Update prompts inputs
ea15ad5 verified
import os
import openai
from transformers import pipeline, Conversation
import gradio as gr
import json
from dotenv import load_dotenv
# Load environment variables from the .env file de forma local
load_dotenv()
import base64
with open("Iso_Logotipo_Ceibal.png", "rb") as image_file:
encoded_image = base64.b64encode(image_file.read()).decode()
openai.api_key = os.environ['OPENAI_API_KEY']
def clear_chat(message, chat_history):
return "", []
def add_new_message(message, consigna, rubrica, devolucion, chat_history):
new_chat = []
new_chat.append({"role": "system", "content": '{}. La r煤brica que debes seguir es la siguiente:{}. {}'.format(consigna, rubrica, devolucion)})
for turn in chat_history:
user, bot = turn
new_chat.append({"role": "user", "content": user})
new_chat.append({"role": "assistant","content":bot})
new_chat.append({"role": "user","content":message})
return new_chat
def respond(message, consigna, rubrica, devolucion, chat_history):
prompt = add_new_message(message, consigna, rubrica, devolucion, chat_history)
# stream = client.generate_stream(prompt,
# max_new_tokens=1024,
# stop_sequences=["\nUser:", "<|endoftext|>"],
# temperature=temperature)
# #stop_sequences to not generate the user answer
# acc_text = ""
response = openai.ChatCompletion.create(
model="gpt-4-1106-preview",
messages= prompt,
temperature=0.5,
max_tokens=1000,
stream=True,
)#.choices[0].message.content
#chat_history.append((message, response))
token_counter = 0
partial_words = ""
counter=0
for chunk in response:
chunk_message = chunk['choices'][0]['delta']
if(len(chat_history))<1:
# print("entr贸 aca谩")
partial_words += chunk_message.content
chat_history.append([message,chunk_message.content])
else:
# print("antes", chat_history)
if(len(chunk_message)!=0):
if(len(chunk_message)==2):
partial_words += chunk_message.content
chat_history.append([message,chunk_message.content])
else:
partial_words += chunk_message.content
chat_history[-1] =([message,partial_words])
yield "",chat_history
with gr.Blocks() as demo:
gr.Markdown("""
<center>
<h1>
Devoluci贸n de Actividades de Aprendizaje Profundo (AAP) usando IA.
</h1>
<img src='data:image/jpg;base64,{}' width=200px>
<h3>
Este espacio permite probar la generaci贸n mediante IA de devoluciones en base a cierta r煤brica que se debe indicar.
</h3>
</center>
""".format(encoded_image))
with gr.Row():
consigna = gr.Textbox(value="Sos un evaluador del sistema educativo que debe generar una devoluci贸n de un informe que recibes como entrada. El contexto es en educaci贸n primaria y el informe fue realizado por un/a docente en base a una actividad desarrollada con su grupo de clase durante el a帽o.", lines=5, label="Escribe la consigna de la tarea planteada.")
with gr.Row():
rubrica = gr.Textbox(value="Debe incluir el objetivo de la actividad. Debe indicar la cantidad de alumnos y caracter铆sticas del grupo de clase. Debe especificar los materiales utilizados. Debe comentar el desarrollo de la actividad. Debe discutir los principales hallazgos de la experiencia.", lines=5, label="Escribe la r煤brica que quieres usar para generar la devoluci贸n.")
with gr.Row():
devolucion = gr.Textbox(value="En base al informe y la r煤brica te pido que generes una devoluci贸n de m谩ximo 300 palabras. En la devoluci贸n se debe fundamentar si el informe se ajusta a lo solicitado en la r煤brica y marcando las fortalezas y debilidades en cada punto.", lines=5, label="Escribe las caracter铆sitas de la devoluci贸n que se pretende.")
with gr.Row():
with gr.Column(scale=4):
msg = gr.Textbox(value="La actividad fue con hormigas. Se estudi贸 el tema en aula y luego se hicieron salidas tanto dentro como fuera del edificio. En dichas salidas se busc贸 la presencia de hormigas y se estudi贸 su comportamiento. Se observ贸 que el trabajo en campo genera una motivaci贸n adicional en los estudiantes, logrando as铆 un mayor involucramiento que luego se traduce en los aprendizajes alcanzados.", lines=5, label="Texto de entrada para ser evaluado y generar devoluci贸n.")
with gr.Column(scale=1):
btn = gr.Button("Enviar")
with gr.Row():
with gr.Column(scale=4):
chatbot = gr.Chatbot(lines=10) #just to fit the notebook
with gr.Column(scale=1):
clear = gr.ClearButton(components=[msg, chatbot], value="Borrar chat")
btn.click(respond, inputs=[msg, consigna, rubrica, devolucion, chatbot], outputs=[msg, chatbot])
msg.submit(respond, inputs=[msg, consigna, rubrica, devolucion,chatbot], outputs=[msg, chatbot]) #Press enter to submit
clear.click(clear_chat,inputs=[msg, chatbot], outputs=[msg, chatbot])
demo.queue()
demo.launch()