Session Metrics

Accumulate metrics across multiple runs within a session using SessionMetrics.

1"""Session-level metrics that accumulate across multiple runs."""
2
3from kern.agent import Agent
4from kern.db.postgres import PostgresDb
5from kern.models.openai import OpenAIChat
6from rich.pretty import pprint
7
8db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
9db = PostgresDb(db_url=db_url, session_table="agent_metrics_sessions")
10
11agent = Agent(
12 model=OpenAIChat(id="gpt-4o-mini"),
13 db=db,
14 session_id="session_metrics_demo",
15 add_history_to_context=True,
16)
17
18if __name__ == "__main__":
19 # First run
20 run_output_1 = agent.run("What is the capital of France?")
21 print("=" * 50)
22 print("RUN 1 METRICS")
23 print("=" * 50)
24 pprint(run_output_1.metrics)
25
26 # Second run on the same session
27 run_output_2 = agent.run("What about Germany?")
28 print("=" * 50)
29 print("RUN 2 METRICS")
30 print("=" * 50)
31 pprint(run_output_2.metrics)
32
33 # Session metrics aggregate both runs
34 print("=" * 50)
35 print("SESSION METRICS (accumulated)")
36 print("=" * 50)
37 session_metrics = agent.get_session_metrics()
38 pprint(session_metrics)

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 session_metrics.py