agent-laba / app.py
Liliana7's picture
deploy the project
32418f7
import os
import gradio as gr
from dotenv import load_dotenv
from demo.ui_components import create_landing_page, create_chat_interface
from demo.logic import init_chat, run_agent_step, validate_api_key
from demo.html_templates import get_status_html
load_dotenv()
def start_chat():
return (
gr.update(visible=False),
gr.update(visible=True),
)
def handle_api_validation(api_key):
is_valid, message = validate_api_key(api_key)
status_html = get_status_html(is_valid, message)
return (
gr.update(value=status_html, visible=True),
gr.update(interactive=is_valid)
)
def _gradio_respond(message, history, chat_state):
if chat_state is None or len(chat_state) == 0:
chat_state = init_chat()
reply, new_chat_state = run_agent_step(message, chat_state)
return reply, new_chat_state
with gr.Blocks() as demo:
# Створюємо лендінг
landing_page, start_btn = create_landing_page()
# Створюємо інтерфейс чату
chat_interface, chat_state, chat_component, api_status, validate_btn, api_key_input = create_chat_interface(
respond_fn=_gradio_respond,
init_chat_fn=init_chat
)
# Перехід від лендінгу до чату
start_btn.click(
fn=start_chat,
outputs=[landing_page, chat_interface]
)
# Валідація API ключа
validate_btn.click(
fn=handle_api_validation,
inputs=[api_key_input],
outputs=[api_status, chat_component.textbox]
)
if __name__ == "__main__":
demo.launch()