Fix cached_tokens handling in _extract_usage method (#6719)

* Fix cached_tokens handling in _extract_usage method

Ensure cached_tokens is an integer and handle None safely.

* ruuf format
This commit is contained in:
LIghtJUNction
2026-03-31 17:14:52 +08:00
committed by GitHub
parent 65a91322e9
commit 328748bd63
3 changed files with 4 additions and 3 deletions
-1
View File
@@ -15,7 +15,6 @@ class HandoffTool(FunctionTool, Generic[TContext]):
tool_description: str | None = None,
**kwargs,
) -> None:
# Avoid passing duplicate `description` to the FunctionTool dataclass.
# Some call sites (e.g. SubAgentOrchestrator) pass `description` via kwargs
# to override what the main agent sees, while we also compute a default
@@ -589,7 +589,10 @@ class ProviderOpenAIOfficial(Provider):
def _extract_usage(self, usage: CompletionUsage | dict) -> TokenUsage:
ptd = getattr(usage, "prompt_tokens_details", None)
cached = getattr(ptd, "cached_tokens", 0) if ptd else 0
prompt_tokens = getattr(usage, "prompt_tokens", 0) or 0
cached = (
cached if isinstance(cached, int) else 0
) # ptd.cached_tokens 可能为None
prompt_tokens = getattr(usage, "prompt_tokens", 0) or 0 # 安全
completion_tokens = getattr(usage, "completion_tokens", 0) or 0
cached = cached or 0
prompt_tokens = prompt_tokens or 0
-1
View File
@@ -394,7 +394,6 @@ def find_missing_requirements(requirements_path: str) -> set[str] | None:
def find_missing_requirements_from_lines(
requirement_lines: Sequence[str],
) -> set[str] | None:
required = list(iter_requirements(lines=requirement_lines))
if not required:
return set()