Spaces:
Runtime error
Runtime error
| 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() | |