File size: 2,008 Bytes
6a4a949
 
 
 
 
 
 
 
dbf1e5c
 
6a4a949
 
dbf1e5c
6a4a949
dbf1e5c
6a4a949
 
dbf1e5c
 
 
 
6a4a949
 
 
 
dbf1e5c
6a4a949
 
dbf1e5c
 
 
 
 
6a4a949
dbf1e5c
 
 
6a4a949
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import streamlit as st
from transformers import AutoTokenizer
from peft import AutoPeftModelForCausalLM
import torch

# Configuración del modelo y tokenizer
model_id = "TheBloke/Mistral-7B-Instruct-v0.2-GPTQ"
adapter = "nmarafo/Mistral-7B-Instruct-v0.2-TrueFalse-Feedback-GPTQ"

# Carga el modelo y el tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True, return_token_type_ids=False)
tokenizer.pad_token = tokenizer.eos_token
model = AutoPeftModelForCausalLM.from_pretrained(adapter, low_cpu_mem_usage=True, return_dict=True, torch_dtype=torch.float16, device_map="cuda")

def generate_prompt(question, best_answer, student_answer):
    system_message = "Analyze the question, the expected answer, and the student's response. Determine if the student's answer is conceptually correct in relation to the expected answer, regardless of the exact wording. Return True if the student's answer is correct or False otherwise. Add a brief comment explaining the rationale behind the answer being correct or incorrect."
    prompt = f"{system_message}\n\nQuestion: {question}\nExpected Answer: {best_answer}\nStudent Answer: {student_answer}"
    return prompt

def generate_response(prompt):
    input_ids = tokenizer(prompt, return_tensors='pt').input_ids.cuda()
    output = model.generate(input_ids, temperature=0.7, do_sample=True, top_p=0.95, top_k=40, max_new_tokens=512)
    response = tokenizer.decode(output[0], skip_special_tokens=True)
    return response

# Crear la interfaz de usuario con Streamlit
st.title("Evaluador de Respuestas con GPTQ")

with st.form(key='eval_form'):
    question = st.text_input("Pregunta")
    best_answer = st.text_input("Mejor Respuesta")
    student_answer = st.text_input("Respuesta del Estudiante")
    submit_button = st.form_submit_button(label='Evaluar')

if submit_button:
    prompt = generate_prompt(question, best_answer, student_answer)
    response = generate_response(prompt)
    st.write("Respuesta del Modelo:", response)