From 090f990c1525d2d9582c6c40986653a6cd989432 Mon Sep 17 00:00:00 2001 From: Alessandro Straolzini <95499025+DinoSandro@users.noreply.github.com> Date: Thu, 6 Nov 2025 06:00:58 +0100 Subject: [PATCH] Enhance reasoning_tokens handling in response processing (#318) Add error handling and type coercion for reasoning_tokens. --- src/cai/sdk/agents/models/openai_chatcompletions.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/cai/sdk/agents/models/openai_chatcompletions.py b/src/cai/sdk/agents/models/openai_chatcompletions.py index f09ea929..b7d1571d 100644 --- a/src/cai/sdk/agents/models/openai_chatcompletions.py +++ b/src/cai/sdk/agents/models/openai_chatcompletions.py @@ -760,7 +760,17 @@ class OpenAIChatCompletionsModel(Model): and response.usage.completion_tokens_details and hasattr(response.usage.completion_tokens_details, "reasoning_tokens") ): - reasoning_tokens = response.usage.completion_tokens_details.reasoning_tokens + # Guard against None or unexpected types for reasoning_tokens + try: + reasoning_tokens = response.usage.completion_tokens_details.reasoning_tokens + if reasoning_tokens is None: + reasoning_tokens = 0 + else: + # coerce numeric-like values to int + reasoning_tokens = int(reasoning_tokens) + except Exception: + reasoning_tokens = 0 + self.total_reasoning_tokens += reasoning_tokens # Process costs for non-streaming mode