Spaces:
Runtime error
Runtime error
File size: 2,192 Bytes
9d27398 a56b79b 25c6893 a56b79b 25c6893 a56b79b ef10c15 794683e a56b79b ef10c15 a56b79b ef10c15 cfaa659 31c8681 cfaa659 ef10c15 25c6893 c10739f a56b79b 25c6893 794683e 25c6893 9d27398 25c6893 |
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
# Modelos
base_model = "microsoft/phi-2"
model_peft = "vsvasconcelos/Phi-2_PT_QA_2_v3"
# Carrega o tokenizer
tokenizer = AutoTokenizer.from_pretrained(base_model)
# Carrega o modelo base e o modelo treinado com PEFT
model = AutoModelForCausalLM.from_pretrained(base_model)
model = PeftModel.from_pretrained(model, model_peft)
#Uma maquiagem pra deixar a resposta com a primeira letra em maiusculo
def capitalize(text):
if text:
return text[0].upper() + text[1:]
return text
# Define a função para gerar respostas
def generate_response(model, tokenizer, prompt, max_length=512, num_return_sequences=1):
# Tokenizando o prompt de entrada
inputs = tokenizer(prompt, return_tensors='pt')
model.eval()
# Gerando a resposta usando o modelo
with torch.no_grad():
outputs = model.generate(
inputs['input_ids'],
max_length=max_length,
num_return_sequences=num_return_sequences,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id,
early_stopping=True
)
# Tokenizar a resposta gerada
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Extrair a parte relevante da resposta
if "### Resposta:" in response:
response = response.split("### Resposta:")[-1].strip()
# Capitalizar a primeira letra da resposta
response = capitalize(response)
return response
# Define a função para responder às perguntas
def answer_question(context, question):
prompt = f"""Com base no contexto fornecido, responda a questão de forma sucinta.
Contexto:
{context}
Questão:
{question}
### Resposta:
"""
#else:
#prompt = f"Questão:\n{question}\n### Resposta:"
return generate_response(model, tokenizer, prompt)
# Cria a interface Gradio
iface = gr.Interface(
fn=answer_question,
inputs=["text", "text"],
outputs="text",
title="QA Model",
description="Pergunte algo e obtenha uma resposta!"
)
iface.launch()
|