Background Execution Metrics
Track metrics for background (async) agent runs with full token and model details.
1"""Metrics for background (async) agent runs."""23import asyncio45from kern.agent import Agent6from kern.db.postgres import PostgresDb7from kern.models.openai import OpenAIChat8from kern.run.base import RunStatus9from kern.tools.yfinance import YFinanceTools10from rich.pretty import pprint1112db = PostgresDb(13 db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",14 session_table="bg_metrics_sessions",15)1617agent = Agent(18 name="BackgroundMetricsAgent",19 model=OpenAIChat(id="gpt-4o-mini"),20 tools=[YFinanceTools(enable_stock_price=True)],21 db=db,22)232425async def main():26 # Start a background run27 run_output = await agent.arun(28 "What is the stock price of AAPL?",29 background=True,30 )3132 print(f"Run ID: {run_output.run_id}")33 print(f"Status: {run_output.status}")3435 # Poll for completion36 result = None37 for i in range(30):38 await asyncio.sleep(1)39 result = await agent.aget_run_output(40 run_id=run_output.run_id,41 session_id=run_output.session_id,42 )43 if result and result.status in (RunStatus.completed, RunStatus.error):44 print(f"Completed after {i + 1}s")45 break4647 if result is None or result.status != RunStatus.completed:48 print("Run did not complete in time")49 return5051 print("\n" + "=" * 50)52 print("RUN METRICS")53 print("=" * 50)54 pprint(result.metrics)5556 print("\n" + "=" * 50)57 print("MODEL DETAILS")58 print("=" * 50)59 if result.metrics and result.metrics.details:60 for model_type, model_metrics_list in result.metrics.details.items():61 print(f"\n{model_type}:")62 for model_metric in model_metrics_list:63 pprint(model_metric)6465 print("\n" + "=" * 50)66 print("SESSION METRICS")67 print("=" * 50)68 session_metrics = agent.get_session_metrics()69 if session_metrics:70 pprint(session_metrics)717273if __name__ == "__main__":74 asyncio.run(main())Run the Example
1# Clone and setup repo2git clone https://github.com/kern-ai/kern.git3cd kern/cookbook/02_agents/14_advanced45# Create and activate virtual environment6./scripts/demo_setup.sh7source .venvs/demo/bin/activate89python background_execution_metrics.py