File size: 1,952 Bytes
6a0ec6a
dbbcf50
91561ce
dbbcf50
6d4e0a3
e1e2089
6d4e0a3
 
 
bb29d2e
97d5125
e3ecb0f
a808dce
db33f59
bb29d2e
db33f59
e3ecb0f
a6f506b
 
bb29d2e
e3ecb0f
97d5125
bb29d2e
97d5125
a6f506b
97d5125
bb29d2e
a808dce
97d5125
 
 
 
 
a6f506b
97d5125
a6f506b
 
db33f59
97d5125
f3a5662
6d4e0a3
97d5125
a808dce
 
97d5125
 
 
 
 
 
 
 
 
237bccb
db33f59
 
3df9eeb
db33f59
97d5125
811c7ec
6a0ec6a
 
dbbcf50
 
 
97d5125
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
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 report with progress tracking"""
    full_content = []
    
    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)}", ""

    progress(0.8, desc="Analyzing content...")
    report = agent.run(f"""
    Analyze these documents:
    {"".join(full_content)[:10000]}
    
    Create report with:
    1. Key insights
    2. Important patterns
    3. Actionable recommendations
    4. Supporting evidence
    
    Use markdown formatting with headers.
    """)
    
    progress(1.0, desc="Analysis complete!")
    return report, "Process completed successfully"

with gr.Blocks() as demo:
    gr.Markdown("# Document Analysis System")
    
    with gr.Row():
        file_input = gr.File(
            file_count="multiple",
            file_types=[".txt"],
            label="Upload Documents"
        )
        process_btn = gr.Button("Generate Report", variant="primary")
    
    report_output = gr.Markdown(label="Analysis Report")
    status = gr.Textbox(label="Status", visible=False)

    process_btn.click(
        fn=analyze_content,
        inputs=file_input,
        outputs=[report_output, status],
        show_progress="full"
    )

if __name__ == "__main__":
    demo.launch(
        server_name="0.0.0.0",
        server_port=7860,
        share=True  # Public link enabled
    )