Repository navigation
fix(ext): normalize Semantic Kernel token usage - #8327
Open
Thota Shashank (thotashashank302) wants to merge 1 commit into
Open
Thota Shashank (thotashashank302) wants to merge 1 commit into
Thota Shashank (thotashashank302) wants to merge 1 commit into
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why are these changes needed?
SKChatCompletionAdapterreports zero token usage for Anthropic responses because it only reads OpenAI'sprompt_tokensandcompletion_tokensattributes. For example, Claude usage withinput_tokens=147andoutput_tokens=1024becomesRequestUsage(0, 0), affecting the returned usage, cumulative counters, and logged usage.Normalize usage in both
create()andcreate_stream(). Accept SDK usage objects and mappings: Semantic Kernel's Anthropic connector returns an object for ordinary responses and a dictionary for streaming responses. Prefer OpenAI field names when present, including explicit zero values, and fall back to Anthropic names. Missing usage retains the existing zero-count behavior.Add 16 offline regression cases covering both request paths, Anthropic and OpenAI usage objects/dictionaries, field precedence, missing/null usage, accumulated totals across two calls, and usage events.
Validation on macOS with Python 3.12.14, using
uv, lockfile-pinned Semantic Kernel/Anthropic dependencies and check tools:autogen-extwheel build andgit diff --check: passed.The full workspace/optional-provider test matrix and documentation build were not run locally. Tests use mocked responses; no live model APIs were called. Implementation and local validation were assisted by OpenAI Codex.
Related issue number
Fixes #5464
Checks