ps / app.py
GAS17's picture
Update app.py
a00e752 verified
raw
history blame
3.78 kB
import streamlit as st
from huggingface_hub import InferenceApi
from typing import List, Tuple
# Cargar la API Key desde los secretos
api_key = st.secrets["api_key"]
# Inicializar el cliente de la API de Hugging Face
inference = InferenceApi(repo_id="gpt-3.5-turbo", token=api_key)
contexto = """
- Eres Citrino especializado en Dron, un asistente de voz amigable y servicial que hablas español, del Rio de la Plata. Hablar de manera informal -
Responde brevemente a la solicitud del usuario y no proporciones información innecesaria. -
Si no entiendes la solicitud del usuario, pide aclaración. Usar espacios entre oraciones, emplear listas, no usar emojis ni otro formato en tus respuestas.
Responde de manera que sea fácil de leer por software de texto a voz.
Unicamente responde a lo relacionado al dron, a la información de la ventana de contexto. Prohibido hablar de algun otro tema.
Sugerir siempre algo mas relacionado al tema, la continuacion del tema especifico. Entender el contexto para incentivar el intercambio.
En la primera interacción tienes que saludar a Gastón.
CONCEPTOS BÁSICOS UAS, RPAS, drone o aeromodelo Se usan diferentes términos para referirnos a las aeronaves no tripuladas, pero ¿qué diferencias hay entre ellos? • Aeronave no tripulada o RPA (Remotely Piloted Aircraft) Cualquier aeronave que opere o esté diseñada para operar de forma autónoma o para ser pilotada a distancia sin un piloto a bordo. este RPA, es también llamado DAOD por DINACIA (Dispositivo aéreo operado a distancia)) • Dron (drone en inglés) Palabra coloquialmente usada para referirse en general a todas las aeronaves no tripuladas, debido a su similitud con un zumbido de Abejorro es otra forma de nombrar a los RPA • Aeromodelo Aeronave de tamaño reducido pilotado a distancia usada principalmente para vuelos deportivos o experimentales. también puede ser un RPA • RPAS «sistema de aeronave pilotada por control remoto» Aeronave pilotada a distancia, su sistema de vuelo, su estación, los enlaces requeridos de mando y control y cualquier otro componente según lo indicado en el diseño de la aeronave. • UAV « aeronave no tripulada» Aeronave no tripulada
"""
def generate_questions(api_key: str) -> List[str]:
prompt = f"Genera 38 preguntas de opción múltiple con 3 opciones cada una y la respuesta correcta, basadas en el siguiente contexto:\n\n{contexto}"
response = inference(inputs=prompt, parameters={"max_new_tokens": 1024, "return_full_text": False})
questions = response["generated_text"].strip().split("\n\n")
return questions
def evaluate_answers(questions: List[str], user_answers: List[str]) -> Tuple[List[bool], List[str]]:
correct_answers = [q.split('\n')[-1].split(': ')[-1] for q in questions]
results = [user_answers[i] == correct_answers[i] for i in range(len(correct_answers))]
return results, correct_answers
if "questions" not in st.session_state:
st.session_state.questions = generate_questions(api_key)
st.title("Evaluación de Drones")
form = st.form(key="quiz_form")
user_answers = []
for i, q in enumerate(st.session_state.questions):
question, *options = q.split('\n')
form.write(question)
user_answers.append(form.radio(f"Pregunta {i+1}", options))
submit_button = form.form_submit_button(label="Enviar respuestas")
if submit_button:
results, correct_answers = evaluate_answers(st.session_state.questions, user_answers)
st.write("Resultados:")
for i, result in enumerate(results):
st.write(f"Pregunta {i+1}: {'Correcta' if result else 'Incorrecta'} (Respuesta correcta: {correct_answers[i]})")
if st.button("Generar nuevas preguntas"):
st.session_state.questions = generate_questions(api_key)
st.experimental_rerun()