Spaces:
Sleeping
Sleeping
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 | |
) |