Chat-Bot-Farmax / app.py
ZeroAzul's picture
Update app.py
1e59a89 verified
import gradio as gr
import os
# Arquivo para armazenar os dados de login
ARQUIVO_USUARIOS = "usuarios.txt"
# Verifica se o arquivo existe, caso contrário, cria um vazio
if not os.path.exists(ARQUIVO_USUARIOS):
with open(ARQUIVO_USUARIOS, "w") as f:
pass
# Função para registrar novo usuário
def registrar_usuario(nome, senha):
with open(ARQUIVO_USUARIOS, "a") as f:
f.write(f"{nome}:{senha}\n")
return f"Usuário '{nome}' registrado com sucesso!"
# Função para autenticar usuário
def autenticar_usuario(nome, senha):
with open(ARQUIVO_USUARIOS, "r") as f:
usuarios = f.readlines()
for usuario in usuarios:
user, password = usuario.strip().split(":")
if user == nome and password == senha:
return True
return False
# Função para lidar com login ou registro
def login(nome, senha, novo_usuario):
if novo_usuario:
return registrar_usuario(nome, senha), nome
else:
if autenticar_usuario(nome, senha):
return f"Login bem-sucedido! Bem-vindo, {nome}!", nome
else:
return "Falha no login. Verifique seu nome de usuário e senha ou registre-se.", ""
# Função principal do chatbot
def chatbot_response(message, usuario_id):
if usuario_id.strip() == "":
return "Por favor, faça login para acessar o chatbot."
return f"Chatbot funcionando para o usuário: {usuario_id}\nSua mensagem foi: {message}"
# Função para reiniciar o fluxo
def reiniciar_fluxo():
return "Fluxo reiniciado! Faça login para começar novamente.", ""
# Interface Gradio
with gr.Blocks() as demo:
with gr.Row():
gr.Markdown("## Login ou Registro")
with gr.Row():
login_nome = gr.Textbox(label="Nome de Usuário", placeholder="Digite seu nome", interactive=True)
with gr.Row():
login_senha = gr.Textbox(label="Senha", placeholder="Digite sua senha", type="password", interactive=True)
with gr.Row():
login_button = gr.Button("Login")
registro_button = gr.Button("Registrar")
login_output = gr.Textbox(label="Resultado")
usuario_logado = gr.Textbox(label="Usuário Logado", interactive=False)
with gr.Row():
gr.Markdown("## Chatbot")
input_message = gr.Textbox(label="Digite sua mensagem:", placeholder="Digite sua pergunta", lines=1, interactive=True)
chatbot_output = gr.Textbox(label="Resposta do Chatbot", interactive=False)
with gr.Row():
send_button = gr.Button("Enviar")
reset_button = gr.Button("Reiniciar Fluxo")
# Botões de login e registro
login_button.click(
login, inputs=[login_nome, login_senha, gr.State(False)], outputs=[login_output, usuario_logado]
)
registro_button.click(
login, inputs=[login_nome, login_senha, gr.State(True)], outputs=[login_output, usuario_logado]
)
send_button.click(
chatbot_response, inputs=[input_message, usuario_logado], outputs=chatbot_output
)
reset_button.click(
reiniciar_fluxo, inputs=None, outputs=[chatbot_output, usuario_logado]
)
# Executar
demo.launch()