From 8c1067254b4aea23b84d33eead9475299e27c7d9 Mon Sep 17 00:00:00 2001 From: Alessandro Straolzini <95499025+DinoSandro@users.noreply.github.com> Date: Wed, 29 Oct 2025 15:21:32 +0100 Subject: [PATCH] Enhance reasoning_tokens handling in response processing 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