File size: 2,701 Bytes
37ff7dd
3cd3230
5952adf
300162c
6159aa1
5952adf
 
 
 
300162c
5952adf
 
37ff7dd
3cd3230
 
 
 
 
 
6159aa1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3cd3230
 
6159aa1
 
 
 
 
 
 
 
 
 
 
 
3cd3230
39e9071
7eed016
5952adf
3cd3230
 
 
7eed016
5952adf
 
 
 
 
 
3cd3230
5952adf
 
6159aa1
300162c
 
5952adf
 
300162c
5952adf
 
 
7eed016
5952adf
7eed016
 
 
5952adf
7eed016
5952adf
7eed016
5952adf
 
 
300162c
5952adf
 
300162c
 
4518be2
37ff7dd
5952adf
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# app.py
from smolagents import CodeAgent, HfApiModel, Tool
import logging
from Gradio_UI import GradioUI
from typing import Dict, Any

# Configure logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)

class AnalysisTool(Tool):
    """Tool for analyzing web content."""
    
    name = "web_analyzer"
    description = "Analyzes web content for summaries, sentiment, and topics"
    
    # Define the required inputs
    inputs: Dict[str, Any] = {
        "text": {
            "type": "string",
            "description": "The text content to analyze"
        },
        "analysis_type": {
            "type": "string",
            "description": "Type of analysis to perform (summarize, sentiment, or topics)"
        }
    }
    
    # Define the output type
    output_type = "string"
    
    def forward(self, text: str, analysis_type: str) -> str:
        """Process the text based on analysis type."""
        try:
            if analysis_type == "summarize":
                return f"Summary of the text: {text[:500]}..."
            elif analysis_type == "sentiment":
                return f"Sentiment analysis of: {text[:500]}..."
            elif analysis_type == "topics":
                return f"Topics identified in: {text[:500]}..."
            else:
                return f"Unknown analysis type: {analysis_type}"
        except Exception as e:
            logger.error(f"Error in analysis: {e}")
            return f"Error during analysis: {str(e)}"

def create_agent():
    """Create and configure the agent."""
    try:
        # Initialize tools
        analyzer = AnalysisTool()
        
        # Initialize model
        model = HfApiModel(
            model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
            max_tokens=2096,
            temperature=0.5
        )
        
        # Create agent with tools
        return CodeAgent(
            model=model,
            tools=[analyzer],
            max_steps=3,
            verbosity_level=1
        )
    except Exception as e:
        logger.error(f"Failed to create agent: {e}")
        raise

def main():
    """Main application entry point."""
    try:
        logger.info("Starting Smart Web Analyzer Plus...")
        
        # Create agent
        agent = create_agent()
        logger.info("Agent created successfully")
        
        # Create and launch UI
        ui = GradioUI(agent)
        ui.launch(
            server_name="0.0.0.0",
            server_port=7860
        )
    except Exception as e:
        logger.error(f"Application failed to start: {e}")
        raise

if __name__ == "__main__":
    main()