Background Execution Metrics

Track metrics for background (async) agent runs with full token and model details.

1"""Metrics for background (async) agent runs."""
2
3import asyncio
4
5from kern.agent import Agent
6from kern.db.postgres import PostgresDb
7from kern.models.openai import OpenAIChat
8from kern.run.base import RunStatus
9from kern.tools.yfinance import YFinanceTools
10from rich.pretty import pprint
11
12db = PostgresDb(
13 db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
14 session_table="bg_metrics_sessions",
15)
16
17agent = Agent(
18 name="BackgroundMetricsAgent",
19 model=OpenAIChat(id="gpt-4o-mini"),
20 tools=[YFinanceTools(enable_stock_price=True)],
21 db=db,
22)
23
24
25async def main():
26 # Start a background run
27 run_output = await agent.arun(
28 "What is the stock price of AAPL?",
29 background=True,
30 )
31
32 print(f"Run ID: {run_output.run_id}")
33 print(f"Status: {run_output.status}")
34
35 # Poll for completion
36 result = None
37 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 break
46
47 if result is None or result.status != RunStatus.completed:
48 print("Run did not complete in time")
49 return
50
51 print("\n" + "=" * 50)
52 print("RUN METRICS")
53 print("=" * 50)
54 pprint(result.metrics)
55
56 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)
64
65 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)
71
72
73if __name__ == "__main__":
74 asyncio.run(main())

Run the Example

1# Clone and setup repo
2git clone https://github.com/kern-ai/kern.git
3cd kern/cookbook/02_agents/14_advanced
4
5# Create and activate virtual environment
6./scripts/demo_setup.sh
7source .venvs/demo/bin/activate
8
9python background_execution_metrics.py