Spaces:
Runtime error
Runtime error
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, questions_guide, chat_history): | |
new_chat = [] | |
new_chat.append({"role": "system", "content": '{}'.format(questions_guide)}) | |
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, questions_guide, chat_history): | |
prompt = add_new_message(message, questions_guide, 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-0125-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> | |
<img src='data:image/jpg;base64,{}' width=200px> | |
<h3> | |
Este espacio permite generar preguntas sobre el texto de referencia. | |
</h3> | |
</center> | |
""".format(encoded_image)) | |
with gr.Row(): | |
questions_guide = gr.Textbox(label="Indicar aquí la guía para generar las preguntas:", value="En base al texto o novela que recibas como entrada, deberás generar preguntas orientadas para estudiantes escolares entre 8 y 12 años. La idea es que las preguntas sirvan para evaluar la comprensión lectora de los estudiantes. Debes generar 10 preguntas múltiple opción, en orden creciente de dificultad, donde cada una de ellas tiene tres opciones y la opción correcta debe estar indicada con una X al comienzo.") | |
with gr.Row(): | |
msg = gr.Textbox(label="Pegar aquí el texto de referencia:") | |
with gr.Row(): | |
with gr.Column(scale=4): | |
chatbot = gr.Chatbot(label="Resultado:",height=150, show_copy_button=True) #just to fit the notebook | |
with gr.Column(scale=1): | |
btn = gr.Button("Enviar") | |
clear = gr.ClearButton(components=[msg, chatbot], value="Borrar resultado.") | |
btn.click(respond, inputs=[msg, questions_guide, chatbot], outputs=[msg, chatbot]) | |
msg.submit(respond, inputs=[msg, questions_guide, chatbot], outputs=[msg, chatbot]) #Press enter to submit | |
clear.click(clear_chat,inputs=[msg, chatbot], outputs=[msg, chatbot]) | |
demo.queue() | |
demo.launch() |