Spaces:
Runtime error
Runtime error
File size: 2,885 Bytes
723fe48 1ec6af9 82871f4 1ec6af9 723fe48 48eef38 723fe48 48eef38 723fe48 1ec6af9 95dfd79 1ec6af9 a200765 5e4ebb0 d8f1368 5e4ebb0 a200765 1ec6af9 45cb5c0 1ec6af9 48eef38 723fe48 1ec6af9 723fe48 48eef38 723fe48 48eef38 1ec6af9 48eef38 723fe48 48eef38 723fe48 1ec6af9 48eef38 1ec6af9 723fe48 95dfd79 |
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 |
import pandas as pd
import gradio as gr
from transformers import GPT2Tokenizer, GPT2LMHeadModel
# Carregando o modelo e o tokenizador do GPT-2
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')
# Dados iniciais
data = {
'Nome': ['Alice', 'Bob', 'Charlie'],
'Idade': [25, 30, 35],
'Cidade': ['Nova York', 'Los Angeles', 'Chicago'],
'Feedback': [None, None, None]
}
df = pd.DataFrame(data)
# Função para responder perguntas com GPT-2
def answer_question_with_gpt(question):
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
prompt = f"Considerando os dados: {df.to_string(index=False)}. Pergunta: {question} Resposta:"
inputs = tokenizer(prompt, return_tensors='pt', padding='max_length', truncation=True, max_length=512)
attention_mask = inputs['attention_mask']
input_ids = inputs['input_ids']
generated_ids = model.generate(
input_ids,
attention_mask=attention_mask,
max_length=len(input_ids[0]) + 100, # Aumentar o limite de geração
temperature=0.5, # Ajustar a criatividade
top_p=0.9, # Usar nucleus sampling
no_repeat_ngram_size=2 # Evitar repetições desnecessárias
)
generated_text = tokenizer.decode(generated_ids[0], skip_special_tokens=True)
# Processando para extrair apenas a resposta após "Resposta:"
response_part = generated_text.split("Resposta:")[1] if "Resposta:" in generated_text else "Resposta não encontrada."
# Limpeza adicional para remover qualquer texto indesejado após a resposta
final_response = response_part.split(".")[0] + "." # Isso assume que a resposta termina na primeira sentença.
return final_response
# Função para adicionar feedback
def add_feedback(nome, feedback):
global df
if nome in df['Nome'].values:
df.loc[df['Nome'] == nome, 'Feedback'] = feedback
return "Feedback adicionado com sucesso."
else:
return "Nome não encontrado no DataFrame."
with gr.Blocks() as demo:
gr.Markdown("# Sistema de Consulta e Feedback de Dados")
with gr.Row():
with gr.Column():
question_input = gr.Textbox(label="Faça uma Pergunta")
answer_output = gr.Textbox(label="Resposta", interactive=False)
ask_button = gr.Button("Perguntar")
with gr.Column():
name_input = gr.Textbox(label="Nome para Feedback")
feedback_input = gr.Textbox(label="Feedback")
feedback_result = gr.Textbox(label="Resultado do Feedback", interactive=False)
submit_button = gr.Button("Enviar Feedback")
ask_button.click(fn=answer_question_with_gpt, inputs=question_input, outputs=answer_output)
submit_button.click(fn=add_feedback, inputs=[name_input, feedback_input], outputs=feedback_result)
demo.launch() |