Skip to content

fix: Token 计量全面加固 — OpenAI 格式兼容 + 模型感知编码 + tiktoken fallback#80

Merged
bigmanBass666 merged 5 commits into
mainfrom
fix/token-output-fallback
Jul 17, 2026
Merged

fix: Token 计量全面加固 — OpenAI 格式兼容 + 模型感知编码 + tiktoken fallback#80
bigmanBass666 merged 5 commits into
mainfrom
fix/token-output-fallback

Conversation

@bigmanBass666

Copy link
Copy Markdown
Contributor

改动内容

修复了 sensenova 等 provider 的 token 计量问题,同时对 token 估算体系做了全面加固。

提交历史 (4 commits)

  1. estimateInputTokens 支持 OpenAI/Anthropic 两种 content 格式 — 修复 Anthropic 数组格式 content 的解析崩溃
  2. outputTokens fallback — API 未返回 output_tokens 时回退到 tiktoken 估算值,解决日志中 tok=87816+0 的问题
  3. extractTokenUsage 支持 OpenAI 格式 — 新增 prompt_tokens/completion_tokens 的解析,兼容 OpenAI 和 OpenRouter 等 provider
  4. 模型感知的 tiktoken 编码 — gpt-4o/o1/o3 系列使用 o200k_base,其他模型保持 cl100k_base

调研背景

已完成行业调研 (docs/research/token-metering-best-practices.md),对比了 Helicone、OpenRouter、Portkey、Kong、Langfuse、LiteLLM 等项目的做法。AK-Switch 当前的做法(实际值优先 → tiktoken+校准 → 纯 tiktoken)与业界最佳实践一致。

验证

  • go build ./... 通过
  • go test -tags=unit -count=1 ./internal/server/ ./internal/cmd/ 通过 (16 个 token 相关测试全部 PASS)

Resolves: #28

@bigmanBass666
bigmanBass666 marked this pull request as ready for review July 17, 2026 22:31
@bigmanBass666
bigmanBass666 merged commit a1a119c into main Jul 17, 2026
4 checks passed
@bigmanBass666
bigmanBass666 deleted the fix/token-output-fallback branch July 17, 2026 22:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Token 计量 — 流式响应 tiktoken 估算

1 participant