import gradio as gr import requests import os API_URL = "https://api-inference.huggingface.co/models/nlpaueb/legal-bert-base-uncased" API_KEY = os.getenv("Contract_Risk") def analyze_contract(contract_text): headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = {"inputs": contract_text} try: # Send the contract text to Hugging Face for analysis response = requests.post(API_URL, headers=headers, json=payload, timeout=30) response.raise_for_status() result = response.json() overall_risk_score = result.get('overall_score', 'No score available') high_risk_clauses = result.get('high_risk_clauses', 'No high-risk clauses detected') risk_map_url = result.get('risk_map_url', 'No risk map available') return overall_risk_score, high_risk_clauses, risk_map_url except requests.exceptions.ConnectionError as e: print(f"Network Error: {e}") return "Network Error: Unable to connect to Hugging Face API", "", "" except requests.exceptions.RequestException as e: print(f"Request Error: {e}") return f"Request Error: {e}", "", "" except Exception as e: print(f"Unexpected error: {e}") return f"Unexpected error: {e}", "", "" def create_ui(): with gr.Blocks() as demo: gr.Markdown("### Contract Risk Analyzer") with gr.Row(): contract_input = gr.Textbox(label="Contract Text", placeholder="Paste contract text here", lines=10) with gr.Row(): analyze_button = gr.Button("Analyze Contract") with gr.Row(): risk_score_output = gr.Textbox(label="Overall Risk Score", interactive=False) high_risk_clauses_output = gr.Textbox(label="High Risk Clauses", interactive=False) risk_map_url_output = gr.Textbox(label="Risk Map URL", interactive=False) analyze_button.click(fn=analyze_contract, inputs=contract_input, outputs=[risk_score_output, high_risk_clauses_output, risk_map_url_output]) demo.launch() if __name__ == "__main__": create_ui()