mirror of
https://github.com/MervinPraison/PraisonAI.git
synced 2026-11-09 11:51:37 -10:00
238 lines
7.6 KiB
Markdown
238 lines
7.6 KiB
Markdown
# PraisonAI Performance Monitoring Examples
|
|
|
|
This directory contains 10 comprehensive examples demonstrating how to integrate performance monitoring with PraisonAI agents. Each example builds upon the basic pattern while showcasing different aspects of the monitoring system.
|
|
|
|
## 🚀 Quick Start
|
|
|
|
All examples follow this basic pattern:
|
|
|
|
```python
|
|
from praisonaiagents import Agent
|
|
from praisonaiagents.telemetry import monitor_function, track_api_call
|
|
|
|
@monitor_function("my_function")
|
|
def my_function():
|
|
# Your function code here
|
|
pass
|
|
|
|
agent = Agent(
|
|
instructions="You are a helpful assistant",
|
|
llm="gpt-4o-mini"
|
|
)
|
|
|
|
with track_api_call("agent_request"):
|
|
result = agent.start("Your question here")
|
|
```
|
|
|
|
## 📊 Examples Overview
|
|
|
|
### 1. Basic Agent with Monitoring (`01_basic_agent_with_monitoring.py`)
|
|
**Purpose:** Introduction to performance monitoring fundamentals
|
|
- Function execution timing with `@monitor_function` decorator
|
|
- API call tracking with `track_api_call` context manager
|
|
- Basic performance statistics retrieval
|
|
|
|
### 2. Multi-Agent Workflow Monitoring (`02_multi_agent_workflow_monitoring.py`)
|
|
**Purpose:** Monitor complex multi-agent systems
|
|
- Multiple agents with different roles
|
|
- Inter-agent communication tracking
|
|
- Workflow performance analysis
|
|
- Task delegation timing
|
|
|
|
### 3. Agent with Tools Monitoring (`03_agent_with_tools_monitoring.py`)
|
|
**Purpose:** Monitor performance when using external tools
|
|
- Tool execution timing
|
|
- Search operation performance
|
|
- Tool call success/failure tracking
|
|
- Tool usage analysis
|
|
|
|
### 4. Async Agent Monitoring (`04_async_agent_monitoring.py`)
|
|
**Purpose:** Performance monitoring in asynchronous workflows
|
|
- Async function execution timing
|
|
- Concurrent task performance
|
|
- Async API call tracking
|
|
- Parallel operation analysis
|
|
|
|
### 5. Error Handling Monitoring (`05_error_handling_monitoring.py`)
|
|
**Purpose:** Monitor performance during error scenarios
|
|
- Error rate tracking
|
|
- Failed operation timing
|
|
- Recovery mechanism performance
|
|
- Exception handling with monitoring
|
|
|
|
### 6. Memory Agent Monitoring (`06_memory_agent_monitoring.py`)
|
|
**Purpose:** Monitor stateful agents with memory
|
|
- Memory storage and retrieval timing
|
|
- Knowledge base operations
|
|
- Session persistence performance
|
|
- Memory search optimization
|
|
|
|
### 7. Hierarchical Agents Monitoring (`07_hierarchical_agents_monitoring.py`)
|
|
**Purpose:** Monitor complex organizational agent structures
|
|
- Manager-worker agent relationships
|
|
- Task delegation timing
|
|
- Hierarchical decision making performance
|
|
- Cross-level communication monitoring
|
|
|
|
### 8. Custom Tools Monitoring (`08_custom_tools_monitoring.py`)
|
|
**Purpose:** Monitor performance with custom-built tools
|
|
- Custom tool execution timing
|
|
- Tool creation and registration performance
|
|
- Tool usage pattern analysis
|
|
- Tool efficiency optimization
|
|
|
|
### 9. Streaming Monitoring (`09_streaming_monitoring.py`)
|
|
**Purpose:** Monitor real-time and streaming operations
|
|
- Real-time performance tracking
|
|
- Streaming response monitoring
|
|
- Live performance metrics
|
|
- Continuous performance analysis
|
|
|
|
### 10. Comprehensive Dashboard (`10_comprehensive_dashboard.py`)
|
|
**Purpose:** Complete performance monitoring solution
|
|
- Advanced analytics and reporting
|
|
- Performance trends and insights
|
|
- System-wide monitoring overview
|
|
- Executive dashboard with health scores
|
|
|
|
## 🎯 Key Monitoring Features Demonstrated
|
|
|
|
### Core Monitoring Tools
|
|
- **`@monitor_function(name)`** - Decorates functions for timing and statistics
|
|
- **`track_api_call(name)`** - Context manager for API call monitoring
|
|
- **`get_performance_report()`** - Generate comprehensive performance reports
|
|
- **`get_function_stats()`** - Retrieve detailed function performance data
|
|
- **`get_api_stats()`** - Get API call performance metrics
|
|
|
|
### Advanced Analytics
|
|
- **`analyze_function_flow()`** - Analyze execution flow and bottlenecks
|
|
- **`visualize_execution_flow()`** - Generate flow visualization
|
|
- **`analyze_performance_trends()`** - Identify performance trends
|
|
- **`generate_comprehensive_report()`** - Complete analysis with recommendations
|
|
|
|
### Performance Metrics Tracked
|
|
- **Execution Time:** Min, max, average, and total execution times
|
|
- **Call Counts:** Number of function calls and API requests
|
|
- **Error Rates:** Success/failure ratios and error tracking
|
|
- **Throughput:** Operations per second and message processing rates
|
|
- **Flow Analysis:** Function call chains and execution patterns
|
|
|
|
## 📈 Usage Patterns
|
|
|
|
### Basic Monitoring Pattern
|
|
```python
|
|
@monitor_function("function_name")
|
|
def your_function():
|
|
# Function implementation
|
|
pass
|
|
|
|
with track_api_call("api_operation"):
|
|
result = some_api_call()
|
|
```
|
|
|
|
### Performance Analysis Pattern
|
|
```python
|
|
# After running monitored operations
|
|
stats = get_function_stats()
|
|
report = get_performance_report()
|
|
trends = analyze_performance_trends()
|
|
```
|
|
|
|
### Real-time Monitoring Pattern
|
|
```python
|
|
# For streaming or real-time operations
|
|
while streaming_active:
|
|
with track_api_call("stream_message"):
|
|
process_message()
|
|
|
|
# Check performance in real-time
|
|
current_stats = performance_monitor.get_function_performance()
|
|
```
|
|
|
|
## 🔍 Performance Insights
|
|
|
|
Each example provides insights into different aspects:
|
|
|
|
- **Response Times:** How fast your agents respond
|
|
- **Bottlenecks:** Where delays occur in your workflow
|
|
- **Error Patterns:** What fails and how often
|
|
- **Resource Usage:** Efficiency of different operations
|
|
- **Scaling Behavior:** How performance changes with load
|
|
|
|
## 🚀 Running the Examples
|
|
|
|
1. **Install PraisonAI with performance monitoring support:**
|
|
```bash
|
|
pip install praisonaiagents
|
|
```
|
|
|
|
2. **Set up your environment:**
|
|
```bash
|
|
export OPENAI_API_KEY="your-api-key-here"
|
|
# or
|
|
export ANTHROPIC_API_KEY="your-anthropic-key-here"
|
|
```
|
|
|
|
3. **Run any example:**
|
|
```bash
|
|
python 01_basic_agent_with_monitoring.py
|
|
python 10_comprehensive_dashboard.py
|
|
```
|
|
|
|
## 📊 Sample Output
|
|
|
|
Each example provides detailed performance output like:
|
|
|
|
```
|
|
📊 PERFORMANCE MONITORING RESULTS
|
|
==================================================
|
|
📈 Function Performance Statistics:
|
|
question_processing:
|
|
Calls: 1
|
|
Avg Time: 0.100s
|
|
Total Time: 0.100s
|
|
agent_execution:
|
|
Calls: 1
|
|
Avg Time: 1.250s
|
|
Total Time: 1.250s
|
|
|
|
🌐 API Call Performance:
|
|
sky_explanation_request:
|
|
Success Rate: 100.0%
|
|
Average Response Time: 1.200s
|
|
Total Calls: 1
|
|
```
|
|
|
|
## 💡 Best Practices
|
|
|
|
1. **Strategic Monitoring:** Don't monitor everything - focus on critical paths
|
|
2. **Performance Baselines:** Establish baseline metrics for comparison
|
|
3. **Error Handling:** Always monitor error rates alongside performance
|
|
4. **Real-time Analysis:** Use streaming monitoring for production systems
|
|
5. **Regular Reviews:** Analyze trends and patterns regularly
|
|
|
|
## 🔧 Customization
|
|
|
|
You can customize monitoring by:
|
|
|
|
- **Custom Metrics:** Add your own performance counters
|
|
- **Alert Thresholds:** Set up alerts for performance degradation
|
|
- **Export Data:** Export performance data to external monitoring systems
|
|
- **Dashboard Integration:** Build custom dashboards using the monitoring APIs
|
|
|
|
## 📚 Further Reading
|
|
|
|
- [PraisonAI Documentation](https://docs.praisonai.com)
|
|
- [Performance Monitoring Guide](../../../src/praisonai-agents/praisonaiagents/telemetry/README.md)
|
|
- [API Reference](../../../src/praisonai-agents/praisonaiagents/telemetry/__init__.py)
|
|
|
|
## 🤝 Contributing
|
|
|
|
These examples are designed to be educational and extensible. Feel free to:
|
|
- Add new monitoring scenarios
|
|
- Improve existing examples
|
|
- Share your performance optimization discoveries
|
|
|
|
---
|
|
|
|
**Note:** Performance monitoring is optional and can be disabled by setting `PRAISONAI_TELEMETRY_DISABLED=true` if needed. |