Spaces:
Runtime error
Runtime error
File size: 3,252 Bytes
723fe48 1ec6af9 82871f4 1ec6af9 723fe48 be2fac2 723fe48 82a021e 1ec6af9 95dfd79 82a021e a200765 5e4ebb0 d8f1368 5e4ebb0 a200765 1ec6af9 45cb5c0 1ec6af9 48eef38 723fe48 be2fac2 1ec6af9 be2fac2 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 70 71 72 73 74 |
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')
df = pd.read_csv('anomalies.csv')
df['Feedback'] = None
# Preprocessing steps
df['ds'] = pd.to_datetime(df['ds']).dt.strftime('%Y-%m-%d') # Format the datetime values
df['real'] = df['real'].apply(lambda x: f"{x:.2f}") # Format the float values to two decimal places
# Convert each row into a structured natural language sentence
def tokenize_row(row):
return f"On {row['ds']}, the expense in the group '{row['Group']}' was ${row['real']}."
# Apply the tokenization function to each row
df['tokenized'] = df.apply(tokenize_row, axis=1)
# 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 as seguintes sentenças: {df['tokenized'].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 grupo in df['Group'].values:
df.loc[df['Group'] == grupo, 'Feedback'] = feedback
return "Feedback adicionado com sucesso."
else:
return "Dado 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() |