File size: 2,378 Bytes
6a0ec6a
dbbcf50
91561ce
dbbcf50
6d4e0a3
e1e2089
6d4e0a3
 
 
bb29d2e
 
e3ecb0f
a808dce
db33f59
 
bb29d2e
db33f59
e3ecb0f
a6f506b
 
bb29d2e
e3ecb0f
a6f506b
bb29d2e
db33f59
 
a6f506b
 
 
bb29d2e
a808dce
bb29d2e
 
 
 
 
a6f506b
bb29d2e
a6f506b
 
db33f59
a6f506b
f3a5662
6d4e0a3
bb29d2e
a808dce
 
bb29d2e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
db33f59
237bccb
db33f59
 
3df9eeb
db33f59
 
811c7ec
6a0ec6a
 
dbbcf50
 
 
db33f59
 
dbbcf50
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
68
69
70
71
72
73
74
75
76
77
78
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
    )