from __future__ import annotations import gradio as gr from pipelines import ask, build_kb, summarize from policy import DEFAULT_POLICY def create_interface() -> gr.Blocks: with gr.Blocks(title="CreditCopilot — RAG for Loan Docs") as demo: gr.Markdown( "# 🧠 CreditCopilot\nRetrieval-augmented assistant that summarizes loan documents, checks policy rules, and suggests next actions." ) with gr.Row(): with gr.Column(scale=1): files = gr.Files(label="Upload loan PDFs", file_count="multiple", file_types=[".pdf"]) policy = gr.Code(value=DEFAULT_POLICY, language="yaml", label="Policy rules (YAML)") build_btn = gr.Button("Build knowledge base", variant="primary") build_status = gr.Markdown() sum_btn = gr.Button("Quick summarize") sum_out = gr.Textbox(label="Portfolio-ready summary", lines=8) with gr.Column(scale=2): question = gr.Textbox( label="Ask a question (e.g., What are the key risks and missing docs?)", lines=2 ) ask_btn = gr.Button("Ask") answer = gr.Markdown(label="Answer") policy_report = gr.Code(label="Policy check report (JSON)") actions = gr.Markdown(label="Suggested next actions") build_btn.click(build_kb, [files, policy], [build_status, policy]) ask_btn.click(ask, [question, policy], [answer, policy_report, actions]) sum_btn.click(summarize, None, sum_out) return demo