Spaces:
Running
Running
File size: 3,448 Bytes
61fbe43 5e433de e4ee978 5891550 e4ee978 5e433de e4ee978 b790cbd e4ee978 5e433de e4ee978 5e433de e4ee978 5e433de e4ee978 5e433de 5891550 5e433de 96b399f e4ee978 d29db85 e4ee978 d29db85 5891550 5e433de 5891550 5e433de e4ee978 5e433de e4ee978 5e433de e4ee978 5e433de e4ee978 5e433de e4ee978 5e433de e4ee978 9a7002a b13b4d8 |
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
import os
import gradio as gr
from src.auth.auth import handle_login
from src.auth.db import initialize_db
from dotenv import load_dotenv
from src.interface import Interface
# Load environment variables
initialize_db()
load_dotenv()
bot = None # Initially, no bot is created until the user logs in or registers
def start_bot(userid, password, api_key_input):
global bot
login_status = handle_login(userid, password, api_key_input)
if "β
" in login_status: # Check for successful login
bot = Interface() # Initialize after login success
return (
login_status,
gr.update(visible=False), # Hide login/registration section
gr.update(visible=True) # Show chat section
)
else:
return (
login_status,
gr.update(visible=True), # Keep login/registration section visible
gr.update(visible=False) # Keep chat section hidden
)
def answer(message, history):
if bot is None:
return "β Please log in first to use the bot."
answer_md, tables_display, images_display, retrieved_display = bot.get_answer(message)
combined_response = f"{answer_md}\n\n{tables_display}"
if images_display:
combined_response += "\n\n" + "\n\n".join(images_display)
return combined_response
with gr.Blocks(fill_height=True, fill_width=True) as app:
with gr.Column(visible=True) as login_register_section:
gr.Markdown("# π MediBot Login & Registration")
with gr.Tabs():
with gr.TabItem("Login"):
userid_login = gr.Textbox(label="UserID")
password_login = gr.Textbox(label="Password", type="password")
login_btn = gr.Button("Login")
login_output = gr.Textbox(label="Login Status", interactive=False)
with gr.TabItem("Register"):
gr.Markdown("## π Enter Your Groq Cloud API Key")
gr.Markdown("You can create an API key at [Groq Cloud Console]"
"(https://console.groq.com/keys)")
userid_register = gr.Textbox(label="UserID")
password_register = gr.Textbox(label="Password", type="password")
api_key_register = gr.Textbox(
label="Groq API Key",
type="password",
placeholder="sk-... (required)"
)
register_btn = gr.Button("Register")
register_output = gr.Textbox(label="Registration Status",
interactive=False)
# Chat Section (Initially hidden)
with gr.Column(visible=False) as chat_section:
gr.ChatInterface(
answer,
title="π©Ί Medico-Bot",
examples=["briefly explain me about cancer", "types of skin diseases?"],
flagging_options = ['Like', 'Dislike']
)
# Function connections
login_btn.click(
start_bot,
inputs=[userid_login, password_login],
outputs=[login_output, login_register_section, chat_section]
)
register_btn.click(
start_bot,
inputs=[userid_register, password_register, api_key_register],
outputs=[register_output, login_register_section, chat_section]
)
app.queue()
app.launch(server_name="0.0.0.0", server_port=7860, ssr_mode=False)
|