anthropics / anthropics/claude-agent-sdk-python

get_context_usage() makes uncached API calls that are invisible to the message stream

未關閉
#1,159 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Python
星號
8.1k
分支
1.3k
PR 合併指標
PR 指標待擷取

描述

ClaudeSDKClient.get_context_usage() appears to count tokens by asking the model rather than locally. Each invocation fires a non-streaming request (InvokeModel) per registered item, with max_tokens: 1 and a filler user message:

json
{
"max_tokens": 1,
"messages": [{"role": "user", "content": "count"}],
"tools": [{ "name": "...", "description": "...", "input_schema": {...} }]
}

Two issues:

No caching. The requests carry no cache_control by default, so the same static content is billed as fresh input on every invocation. The measured items don't change over a session's lifetime, so caching the per-item counts would avoid re-measuring entirely.

Invisible to usage tracking. These calls don't appear on the SDK message stream and carry no usage block, so anything tracking spend from the stream misses them completely. We only found them via provider-side invocation logs. The method reads like cheap local introspection, and there's nothing in the return value or the docs indicating it costs API calls.

Environment: claude-agent-sdk 0.2.101, Bedrock

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。