Spaces:
Running
Running
File size: 2,971 Bytes
01eab7c 2f5fee7 01eab7c a510ac2 2f5fee7 a510ac2 01eab7c a510ac2 01eab7c a510ac2 01eab7c a510ac2 01eab7c a510ac2 01eab7c a510ac2 8aa4a08 2f5fee7 8aa4a08 01eab7c a3b248d |
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 |
# app.py
import gradio as gr
import os
from utils.parser import parse_file
from utils.summarizer import summarize_text
from utils.metadata import extract_metadata
from utils.risk_detector import detect_risks
from utils.fallback_suggester import suggest_fallback
from utils.translator import translate_text
def handle_input(file, raw_text):
if file is not None:
content = parse_file(file.name)
elif raw_text.strip() != "":
content = raw_text
else:
return "Please upload a contract or paste text.", "", {}, [], "", ""
return content, "", {}, [], "", ""
with gr.Blocks(title="SYNCLM β AI Contract Intelligence Demo") as demo:
gr.Markdown(
"""
<div style="font-size: 28px; font-weight: bold; margin-bottom: 10px;">
π Innovation Meets Intelligence
</div>
<div style="font-size: 18px; line-height: 1.5;">
Upload a contract or paste the text. SYNCLM will analyze, summarize, extract metadata, detect risks, suggest fallback clauses, and even translate key sections.
</div>
"""
)
with gr.Row():
file_input = gr.File(label="π Upload Contract (.pdf, .docx, .txt)", file_types=[".pdf", ".docx", ".txt"])
text_input = gr.Textbox(label="βοΈ Or Paste Contract Text", lines=10, placeholder="Paste contract text here...")
parse_btn = gr.Button("π Parse Contract")
contract_display = gr.Textbox(label="π Parsed Contract", lines=20)
with gr.Row():
summarize_btn = gr.Button("π Summarize")
metadata_btn = gr.Button("π
Extract Metadata")
risk_btn = gr.Button("β οΈ Detect Risks")
fallback_btn = gr.Button("π‘οΈ Suggest Fallback")
translate_btn = gr.Button("π Translate to Portuguese")
summary_output = gr.Textbox(label="π Executive Summary", lines=6)
metadata_output = gr.JSON(label="π Extracted Metadata")
risk_output = gr.Dataframe(label="π© Risky Clauses", headers=["Clause Type", "Confidence"], datatype=["str", "number"])
fallback_output = gr.Textbox(label="π‘ Suggested Fallback Clause", lines=4)
translation_output = gr.Textbox(label="π Portuguese Translation", lines=10)
# Action Buttons
parse_btn.click(
fn=handle_input,
inputs=[file_input, text_input],
outputs=[contract_display, summary_output, metadata_output, risk_output, fallback_output, translation_output]
)
summarize_btn.click(fn=summarize_text, inputs=[contract_display], outputs=[summary_output])
metadata_btn.click(fn=extract_metadata, inputs=[contract_display], outputs=[metadata_output])
risk_btn.click(fn=detect_risks, inputs=[contract_display], outputs=[risk_output])
fallback_btn.click(fn=suggest_fallback, inputs=[contract_display], outputs=[fallback_output])
translate_btn.click(fn=translate_text, inputs=[contract_display], outputs=[translation_output])
if __name__ == "__main__":
demo.launch()
|