Skip to content

Commit 00287bf

Browse files
authored
feat: added cached token metrics -metrics
1 parent e795637 commit 00287bf

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

src/strands/telemetry/metrics.py

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from ..telemetry import metrics_constants as constants
1313
from ..types.content import Message
14-
from ..types.streaming import Metrics, Usage
14+
from ..types.event_loop import Metrics, Usage
1515
from ..types.tools import ToolUse
1616

1717
logger = logging.getLogger(__name__)
@@ -265,21 +265,19 @@ def update_usage(self, usage: Usage) -> None:
265265
self.accumulated_usage["totalTokens"] += usage["totalTokens"]
266266

267267
# Handle optional cached token metrics
268-
if "cacheReadInputTokens" in usage and usage["cacheReadInputTokens"] is not None:
268+
if "cacheReadInputTokens" in usage:
269269
cache_read_tokens = usage["cacheReadInputTokens"]
270-
self._metrics_client.event_loop_cache_read_tokens.record(cache_read_tokens)
271-
if "cacheReadInputTokens" not in self.accumulated_usage:
272-
self.accumulated_usage["cacheReadInputTokens"] = 0
273-
current_cache_read = self.accumulated_usage.get("cacheReadInputTokens", 0) or 0
274-
self.accumulated_usage["cacheReadInputTokens"] = current_cache_read + cache_read_tokens
270+
self._metrics_client.event_loop_cache_read_input_tokens.record(cache_read_tokens)
271+
self.accumulated_usage["cacheReadInputTokens"] = (
272+
self.accumulated_usage.get("cacheReadInputTokens", 0) + cache_read_tokens
273+
)
275274

276-
if "cacheWriteInputTokens" in usage and usage["cacheWriteInputTokens"] is not None:
275+
if "cacheWriteInputTokens" in usage:
277276
cache_write_tokens = usage["cacheWriteInputTokens"]
278-
self._metrics_client.event_loop_cache_write_tokens.record(cache_write_tokens)
279-
if "cacheWriteInputTokens" not in self.accumulated_usage:
280-
self.accumulated_usage["cacheWriteInputTokens"] = 0
281-
current_cache_write = self.accumulated_usage.get("cacheWriteInputTokens", 0) or 0
282-
self.accumulated_usage["cacheWriteInputTokens"] = current_cache_write + cache_write_tokens
277+
self._metrics_client.event_loop_cache_write_input_tokens.record(cache_write_tokens)
278+
self.accumulated_usage["cacheWriteInputTokens"] = (
279+
self.accumulated_usage.get("cacheWriteInputTokens", 0) + cache_write_tokens
280+
)
283281

284282
def update_metrics(self, metrics: Metrics) -> None:
285283
"""Update the accumulated performance metrics with new metrics data.
@@ -448,8 +446,8 @@ class MetricsClient:
448446
event_loop_latency: Histogram
449447
event_loop_input_tokens: Histogram
450448
event_loop_output_tokens: Histogram
451-
event_loop_cache_read_tokens: Histogram
452-
event_loop_cache_write_tokens: Histogram
449+
event_loop_cache_read_input_tokens: Histogram
450+
event_loop_cache_write_input_tokens: Histogram
453451

454452
tool_call_count: Counter
455453
tool_success_count: Counter
@@ -503,9 +501,9 @@ def create_instruments(self) -> None:
503501
self.event_loop_output_tokens = self.meter.create_histogram(
504502
name=constants.STRANDS_EVENT_LOOP_OUTPUT_TOKENS, unit="token"
505503
)
506-
self.event_loop_cache_read_tokens = self.meter.create_histogram(
507-
name=constants.STRANDS_EVENT_LOOP_CACHE_READ_TOKENS, unit="token"
504+
self.event_loop_cache_read_input_tokens = self.meter.create_histogram(
505+
name=constants.STRANDS_EVENT_LOOP_CACHE_READ_INPUT_TOKENS, unit="token"
508506
)
509-
self.event_loop_cache_write_tokens = self.meter.create_histogram(
510-
name=constants.STRANDS_EVENT_LOOP_CACHE_WRITE_TOKENS, unit="token"
507+
self.event_loop_cache_write_input_tokens = self.meter.create_histogram(
508+
name=constants.STRANDS_EVENT_LOOP_CACHE_WRITE_INPUT_TOKENS, unit="token"
511509
)

0 commit comments

Comments
 (0)