import gradio as gr from smolagents import CodeAgent, HfApiModel # Initialize the AI agent agent = CodeAgent( tools=[], model=HfApiModel(model_id="Qwen/Qwen2.5-Coder-32B-Instruct"), ) def analyze_content(file_paths, progress=gr.Progress()): """Process files and generate comprehensive report with progress tracking""" full_content = [] # Track file reading progress progress(0, desc="Starting analysis...") for i, path in enumerate(file_paths): progress(i/len(file_paths), desc=f"Reading {path.split('/')[-1]}...") try: with open(path, 'r', encoding='utf-8') as f: content = f.read() full_content.append(f"## {path.split('/')[-1]}\n{content}\n") except Exception as e: return f"Error processing {path}: {str(e)}" # Track analysis progress progress(0.8, desc="Analyzing content with AI...") report = agent.run(f""" Analyze these documents and create a detailed report: {"".join(full_content)[:10000]} Report structure: 1. Executive Summary 2. Key Findings 3. Important Patterns 4. Recommendations Use professional markdown formatting with headings and bullet points. """) progress(1.0, desc="Analysis complete!") return report with gr.Blocks() as demo: gr.Markdown("# Professional Document Analyzer") with gr.Row(): with gr.Column(scale=1): file_input = gr.File( file_count="multiple", file_types=[".txt"], label="Upload Documents" ) process_btn = gr.Button("Generate Report", variant="primary") with gr.Column(scale=2, variant="panel"): gr.Markdown("## Analysis Report") report_output = gr.Markdown( elem_classes="report-box", label="", show_label=False ) status = gr.Textbox(label="Processing Status", visible=False) process_btn.click( fn=analyze_content, inputs=file_input, outputs=[report_output, status], show_progress="minimal" ) if __name__ == "__main__": demo.launch( server_name="0.0.0.0", server_port=7860, share=True, ssr=False # Disable experimental server-side rendering )