Emmanuel Frimpong Asante
update space
b547d0c
# File: /services/chatbot.py
import gradio as gr
import logging
from services.utils import chatbot_response # Import chatbot response function from utils
logger = logging.getLogger(__name__)
def build_chatbot_interface(user):
"""
Build the Gradio interface for the chatbot.
Args:
user (dict): Authenticated user information.
Returns:
gr.Blocks: Gradio Blocks object representing the chatbot interface.
"""
try:
logger.info("Building Gradio chatbot interface.")
with gr.Blocks(theme=gr.themes.Soft(primary_hue="green", neutral_hue="blue")) as chatbot_interface:
gr.Markdown(f"# πŸ” Poultry Management Chatbot - Welcome, {user['username']}!")
gr.Markdown("Welcome! This chatbot helps you manage your poultry with ease. You can upload an image for disease diagnosis or ask any questions about poultry management.")
chat_history = gr.Chatbot()
with gr.Row():
with gr.Column(scale=1):
fecal_image = gr.Image(
label="Upload Image of Poultry Feces (Optional)",
type="numpy",
elem_id="image-upload",
show_label=True,
)
with gr.Column(scale=2):
user_input = gr.Textbox(
label="Ask a question",
placeholder="Ask about poultry management...",
lines=3,
elem_id="user-input",
)
output_box = gr.Textbox(
label="Response",
placeholder="Response will appear here...",
interactive=False,
lines=10,
elem_id="output-box",
)
submit_button = gr.Button(
"Submit",
variant="primary",
elem_id="submit-button"
)
# Connect the submit button to the chatbot response function
def handle_chatbot_response(image, text):
return chatbot_response(image, text, user['username'], None)
submit_button.click(
fn=handle_chatbot_response,
inputs=[fecal_image, user_input],
outputs=[output_box]
)
logger.info("Chatbot interface built successfully.")
return chatbot_interface
except Exception as e:
logger.error(f"Error building chatbot interface for user {user['username']}: {e}")
raise RuntimeError("Could not build the chatbot interface. Please check the configuration.")