import pandas as pd import gradio as gr from transformers import AutoTokenizer, AutoModel #import torch tokenizer = AutoTokenizer.from_pretrained('juridics/bertimbaulaw-base-portuguese-sts-scale') model = AutoModel.from_pretrained('juridics/bertimbaulaw-base-portuguese-sts-scale') # 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 adicionar feedback def add_feedback(nome, feedback): global df df.loc[df['Nome'] == nome, 'Feedback'] = feedback return df # Função para obter uma resposta do GPT (substituição para chamada real ao GPT) def get_gpt_response(query): # Converte o DataFrame para string CSV csv_data = df.to_csv(index=False) # Cria contexto com feedback context = f""" Aqui estão os dados das pessoas incluindo seus nomes, idades, cidades onde moram e feedback: {csv_data} """ input_ids = tokenizer.encode(query, return_tensors='pt') max_length = input_ids.shape[1] + 100 generated_ids = model.generate(input_ids, max_length=max_length) generated_text = tokenizer.decode(generated_ids[0], skip_special_tokens=True) return generated_text def ask_question(pergunta): resposta = get_gpt_response(pergunta) return resposta def submit_feedback(nome, feedback): updated_df = add_feedback(nome, feedback) return updated_df 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") response_output = gr.Textbox(label="Resposta do GPT", interactive=False) ask_button = gr.Button("Perguntar") with gr.Column(): name_input = gr.Textbox(label="Nome para Feedback") feedback_input = gr.Textbox(label="Feedback") submit_button = gr.Button("Enviar Feedback") feedback_df = gr.Dataframe(label="DataFrame Atualizado", interactive=False) ask_button.click(fn=ask_question, inputs=question_input, outputs=response_output) submit_button.click(fn=submit_feedback, inputs=[name_input, feedback_input], outputs=feedback_df) demo.launch()