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