AgentScope 令牌计数:覆写 1 个方法,看懂账单
AgentScope 令牌计数覆写 1 个方法看懂账单【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscopeAgentScope 的模型计费不靠猜。它的令牌计数器只有一个入口ChatModelBase.count_tokens。本文讲清这个方法的契约、默认估算算法以及自定义 token 计数的写法让你控制上下文压缩的触发时机管住账单。复现场景压缩晚触发一步整次请求作废你跑一个长任务 agent上下文越滚越大压缩本应提前介入。但估算值偏低压缩没触发下一次请求撞上服务商的上下文硬限整轮推理和工具结果全部作废。反过来估算偏高会过早压缩有用历史被换成摘要你还为摘要多付一次调用费。⚠️ 两个问题都归到一个返回值await self.model.count_tokens(...)。打开 _base.pycount_tokens 的契约与默认算法打开 src/agentscope/model/_base.py第 369 行附近的签名长这样async def count_tokens( self, messages: list[Msg], tools: list[dict] | None, ) - int: ...默认实现做的事很直白遍历每条消息的内容块把TextBlock、思考块、工具调用的 input、工具结果文本全部拼进一个字符串文本 token 数 UTF-8 字节数除以 4四舍五入每个DataBlock图片、文件按固定 2000 计常量叫_MULTIMODAL_DATA_BLOCK_TOKEN_ESTIMATEtools参数先json.dumps并入文本一起算。中文一个字符占 3 字节除以 4 后约等于 1 字符 1 token默认值日常够用。但它和各家真实分词器有偏差要精确的模型计费就覆写它。盘点 src/agentscope/model/9 个子类都能挂计数器打开src/agentscope/model/目录__init__.py里导出 9 个具体类AnthropicChatModel、DashScopeChatModel、DeepSeekChatModel、GeminiChatModel、MoonshotChatModel、OllamaChatModel、OpenAIChatModel、OpenAIResponseModel、XAIChatModel。每个类都在同名子包的_model.py里继承ChatModelBase。扩展点就在基类 docstring 里写明的一句话子类可覆写count_tokens换上针对自家分词器的实现。你的模型落在 9 家之一继承对应类即可格式化、重试逻辑原样保留全新服务商则直接继承ChatModelBase。在你的项目里覆写 count_tokens在你自己的项目里新建一个模型类仓库本身是只读的。以 OpenAI 系为例核心就这几行import json import tiktoken from agentscope.model import OpenAIChatModel enc tiktoken.encoding_for_model(gpt-4o) class MyOpenAIModel(OpenAIChatModel): async def count_tokens(self, messages, toolsNone) - int: texts [] for msg in messages: for block in msg.get_content_blocks(): texts.append(getattr(block, text, ) or str(block)) if tools: texts.append(json.dumps(tools, ensure_asciiFalse)) return len(enc.encode(.join(texts)))注意两点get_content_blocks()是基类遍历消息用的同一个入口块结构别自己另起炉灶tools的计法保持和基类一致这样压缩前后的数字可比。多模态消息里DataBlock你可以沿用每块 2000 的扁平估算也可以按服务商的图片计价公式细化。这个数字的去向context_size 与工具结果切分谁在消费这个数字打开src/agentscope/agent/_agent.py调用点有十几处关键的两处压缩判定estimated_tokens trigger_ratio * context_size就跳过。ContextConfig里trigger_ratio默认 0.8、上限 0.9context_size默认 32768所以默认触发线约 26214工具结果切分_split_tool_result_for_compression用一个单块反复调用count_tokens找到不超过tool_result_limit的切分点。单条巨型工具结果会触发多次计数精确但慢的分词器在这里成本会放大超大型工具输出可以考虑缓存。估算准不准直接决定压缩在 26214 这条线附近是「刚刚好」还是「差一截」。写断言照抄 model_count_tokens_test.py 的写法tests/model_count_tokens_test.py 给了现成范式40 万字符的 base64 图片加上 hi断言总数等于 2001再断言 base64 与 URL 两种来源的DataBlock估算一致都是 2000。测试用的MockModel在tests/utils.py。照这个风格给你的计数器写一条class MyCounterTest(IsolatedAsyncioTestCase): async def test_count_matches_tokenizer(self): model MyOpenAIModel() # 构造参数按你的凭据填 msg UserMsg(nameu, contentTextBlock(texthello)) n await model.count_tokens([msg], None) self.assertEqual(n, 1)再补一条 DataBlock 断言确认图片不会被当成 base64 文本按字节计费验证就齐了。计数只是估算分词器才是账单——把count_tokens覆写成官方分词器压缩时机、工具切分、模型计费这三件事就对齐了。【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

超声波录音屏蔽系统设计:从DDS信号合成到声学对抗实战

超声波录音屏蔽系统设计:从DDS信号合成到声学对抗实战

简介:本资源是针对2024年全国大学生电子设计竞赛G题‘简易超声波录音屏蔽系统’的完整参赛实现方案,面向电子信息、自动化、通信工程及人工智能等专业的在校学生、教师与初学者,提供从原理理解、硬件适配到软件调试的一站式学习参考。压缩包共…

2026/9/3 13:56:34 阅读更多 →
Hallmark study 构建流程:从 DNA 诊断到锁定构建的完整指南

Hallmark study 构建流程:从 DNA 诊断到锁定构建的完整指南

Hallmark study 构建流程:从 DNA 诊断到锁定构建的完整指南 【免费下载链接】hallmark Anti-AI-slop design skill for Claude Code, Cursor, and Codex. 项目地址: https://gitcode.com/GitHub_Trending/hal/hallmark Hallmark 是一个反 AI 模板味&#xff…

2026/9/3 13:56:34 阅读更多 →
海洋监视雷达检测仿真:海杂波建模与CFAR性能标定

海洋监视雷达检测仿真:海杂波建模与CFAR性能标定

简介:本资源是一套面向雷达信号处理初学者与海洋监视系统研究者的Matlab仿真教学案例,聚焦于海上目标检测的核心算法实现与可视化分析。通过构建典型海杂波背景下的雷达回波模型,完整呈现目标检测门限设定、CFAR处理、距离-多普勒成像及检测结…

2026/9/3 13:56:34 阅读更多 →

最新新闻

硬件工程师必修:MOS管核心参数与测试方法全解析

硬件工程师必修:MOS管核心参数与测试方法全解析

MOS管这东西,硬件工程师几乎天天见,但真正要把它测明白,很多朋友其实是“会用不会测”。做电源、做电机驱动、做电池保护板,MOS管选型对不对、驱动电路匹配不匹配、板子焊回来能不能稳定跑,这些问题不能光靠看手册拍脑…

2026/9/3 14:35:32 阅读更多 →
FaceFusion执行线程计数配置指南:三步找到最佳线程数,跑满CPU不吃内存

FaceFusion执行线程计数配置指南:三步找到最佳线程数,跑满CPU不吃内存

FaceFusion执行线程计数配置指南:三步找到最佳线程数,跑满CPU不吃内存 【免费下载链接】facefusion Industry leading face manipulation platform 项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion FaceFusion 处理速度慢、卡顿&am…

2026/9/3 14:35:32 阅读更多 →
npx skills 搜索并安装 AI Agent 技能实战指南

npx skills 搜索并安装 AI Agent 技能实战指南

npx skills 搜索并安装 AI Agent 技能实战指南 【免费下载链接】skills The open agent skills tool - npx skills 项目地址: https://gitcode.com/GitHub_Trending/ad/skills skills 是一个管理 AI Agent 技能的命令行工具。如果你在用 Cursor、Claude Code 这类编码代…

2026/9/3 14:35:32 阅读更多 →
5款必备Finder增强工具:让macOS文件管理效率翻倍

5款必备Finder增强工具:让macOS文件管理效率翻倍

5款必备Finder增强工具:让macOS文件管理效率翻倍 还在为macOS文件管理效率低下而烦恼吗?Finder作为macOS的核心文件管理工具,虽然功能完善,但在某些特定场景下仍然存在操作不便的问题。幸运的是,开源社区为我们提供了…

2026/9/3 14:35:32 阅读更多 →
基于ADMM的定量磁化率成像(QSM)MATLAB重建算法详解与实战

基于ADMM的定量磁化率成像(QSM)MATLAB重建算法详解与实战

简介:本资源是一个面向医学影像研究人员、MRI算法工程师及神经科学方向研究生的MATLAB实战工具包,专注于定量磁化率成像(QSM)重建中的核心优化问题。针对QSM反演过程高度病态、需引入正则化约束的特点,该包完整实现了基…

2026/9/3 14:35:32 阅读更多 →
嵌入式开发避坑指南:从理论到实战,告别“嘴炮王者”

嵌入式开发避坑指南:从理论到实战,告别“嘴炮王者”

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 14:34:30 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →