anyonehomep1mane
Final Changes
e33d320
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
import gradio as gr
from gradio.themes import Soft
from gradio.themes.utils import colors, fonts, sizes
from services.summarizer import summarize_document
colors.orange_red = colors.Color(
name="orange_red",
c50="#FFF0E5", c100="#FFE0CC", c200="#FFC299", c300="#FFA366",
c400="#FF8533", c500="#FF4500", c600="#E63E00", c700="#CC3700",
c800="#B33000", c900="#992900", c950="#802200",
)
class OrangeRedTheme(Soft):
def __init__(self):
super().__init__(
primary_hue=colors.orange_red,
secondary_hue=colors.orange_red,
neutral_hue=colors.slate,
text_size=sizes.text_lg,
font=(fonts.GoogleFont("Outfit"), "Arial", "sans-serif"),
font_mono=(fonts.GoogleFont("IBM Plex Mono"), "monospace"),
)
super().set(
body_background_fill="linear-gradient(135deg, *primary_200, *primary_100)",
button_primary_background_fill="linear-gradient(90deg, *secondary_500, *secondary_600)",
button_primary_background_fill_hover="linear-gradient(90deg, *secondary_600, *secondary_700)",
button_primary_text_color="white",
block_border_width="3px",
block_shadow="*shadow_drop_lg",
)
orange_red_theme = OrangeRedTheme()
css_style = """
#container {
max-width: 1280px; /* wider layout */
margin: auto;
}
@media (min-width: 1600px) {
#container {
max-width: 1440px;
}
}
#title h1 {
font-size: 2.4em !important;
}
"""
with gr.Blocks(title="AI Document Summarizer") as demo:
with gr.Column(elem_id="container"):
gr.Markdown("# **AI Document Summarizer**", elem_id="title")
gr.Markdown(
"Summarize **PDF, DOCX, TXT** documents using **Qwen2.5-7B-Instruct** via Hugging Face."
)
with gr.Row(equal_height=True):
# LEFT
with gr.Column():
file_input = gr.File(
label="Upload Document",
file_types=[".pdf", ".docx", ".txt"],
type="filepath",
)
summarize_btn = gr.Button("Generate Summary", variant="primary")
# RIGHT
with gr.Column():
output = gr.Textbox(
label="Summary",
lines=18,
placeholder="Summary will appear here...",
)
gr.Markdown(
"*Powered by Hugging Face Inference API · Free tier rate limits apply*"
)
summarize_btn.click(
fn=summarize_document,
inputs=file_input,
outputs=output,
)
if __name__ == "__main__":
demo.queue().launch(
theme=orange_red_theme,
css=css_style,
show_error=True,
server_name="0.0.0.0",
server_port=7860,
debug=True
)