
作文批改 Agent 的提交与查询接口限频均为 2 次/分钟,1000 次提交需要 500 分钟。这一限频对应的是异步任务队列式排程:提交匀速出队、查询按窗口分批、结果按班级交付复核,成本按次结算。
排批改任务时,常会遇到一个看起来矛盾的现象:接口本身能跑通,量一上去却被限频挡住。要判断这是不是真问题、又该怎么排,得先把规格口径摆出来。作文批改 Agent 的接口口径集中在一张表里。
项目 | 口径 |
|---|---|
提交任务接口 | SubmitMarkEssayAgentJob,并发限制 2 次/分钟 |
查询任务接口 | DescribeMarkEssayAgentJob,并发限制 2 次/分钟 |
调用模式 | 异步任务:提交任务,再轮询查询结果 |
提交接口输入限制 | Base64 编码后不超过 10M,分辨率建议 600×800 以上,图片下载时间不超过 3 秒,仅支持 PDF 单页识别 |
查询接口输入 | 仅传入 JobId,无图片入参 |
频率限制统计维度 | API + 接入地域 + 子账号 |
换成时间更直观:按 2 次/分钟,提交 1000 次约需 500 分钟(8.3 小时),500 篇作文(按一篇一页、每页一次提交计)约需 250 分钟(4.2 小时);这还只是"提交"一个环节,不含轮询查询和教师复核的时间。
不过上面是按一篇一页的理想情况算的。由于提交接口仅支持 PDF 单页识别,一篇作文如果跨了多页,就要按页分别提交,实际提交次数会多于作文篇数,排程时应当按页数而不是篇数来估。
这里最容易误读的一点,是"2 次/分钟"不等于"同时只能批 2 篇"。它限制的是调用频率——每分钟能往里投多少次任务、能问多少次结果,而不是系统的处理能力。真正的批改由服务侧异步完成,限频更像是任务入口的节流阀:入口放多快,决定了任务以什么节奏进入处理流程。
要理解这个限制,先要理解批改和识别在任务性质上的差别。识别类接口做的是"看图取字",一件相对独立、可以快速返回的工作,所以频率限制可以给到 5 次/秒这类量级。批改不一样:它要在文字基础上做逐字比对、语病定位、好词好句识别和建议生成,单篇处理的链路更长,返回时间天然更久。
如果批改做成同步接口,调用方就得一直开着连接等结果。等待时间一长,超时和重试会把请求量放大,服务侧的资源被大量占在等待上,反而拖慢整体。异步任务把这件事拆成两段:提交任务拿到一个 JobId,批改的时间交给服务侧;调用方按自己的节奏用查询接口取结果,连接不必一直挂着。这也是文档智能(Document AI)把作文批改 Agent 做成异步任务模式的原因。
限频定得低,还有一个更贴近使用场景的原因:它与教育场景的节奏是匹配的。作文批改的结果需要教师复核,如果提交速度远远超过复核速度,结果只会堆在系统里,并不会带来实际的教学收益。入口节流让任务量落在教师可以处理的区间内,比起追求提交速度,更符合批改这件事的实际用法。
知道限制在哪,排程就有了依据。以下四个环节是批量批改绕不开的。
不要把手上所有作文一次性打给提交接口。可行的做法是在本地建一个任务队列,把待批作文先入队,再按每分钟 2 次的节奏匀速出队提交。队列的价值有三个:提交速度可控,不会因为集中调用触发失败;失败的任务可以带回队列尾部重试,不丢件;每个任务的提交时间有记录,为后面的查询节奏提供依据。
队列还要记录任务的业务归属,也就是每篇作文对应哪个班级、哪个学生。批改结果是按任务返回的,如果提交时没把 JobId 和业务对象绑在一起,结果取回来之后还得靠文件名去猜,量一大就会乱。
提交完成后,用 DescribeMarkEssayAgentJob 按 JobId 查询结果。查询请求本身很轻,但它同样受 2 次/分钟的限频约束,所以不能用远快于这个节奏的定时任务去轮询全部任务。
比较稳的做法是按提交时间分批查询:记录每批任务的提交时刻,估算改动作业所需的时间窗口,到点后对这批任务逐条查询,每条查一次;仍处于处理中的任务重新排入下一轮等待。这样查询请求也能被统一节流,不会出现"提交排好了、查询却把限频占满"的情况。提交队列和查询队列共用一份节奏表,是这套流程能长期稳定运行的关键。
限频额度不是账号全局共享的一个总数,而是按统计维度分开计算的:同一接口在不同子账号、不同接入地域下的调用量各自独立计数。这意味着按子账号分线是一条可用的排程思路——多个年级同时需要批改时,可以把任务分给不同子账号排队,各自占用自己的额度,不必挤在同一条队列上。
分线要注意两点。一是地域要一致,同一批任务放在同一个接入地域下统计,混着用会让额度核算变得复杂。二是分线只是把额度拆开计数,单条线的处理节奏仍然要按 2 次/分钟来排,线开得再多也不会让某一批任务提前拿到结果。
批量批改的排程终点,不是几百份结果同时回到系统里,而是结果以教师能处理的节奏交到教师手上。建议按班级分批闭环:一个班的作文提交并取回结果后,先交给该班教师复核,再启动下一个班。
这样安排有几个好处。教师每次面对的是一批熟悉的作文,复核时的判断更稳;教师在这一批里发现的问题可以及时修正下一批的提交规范,比如某些拍摄角度导致的识别偏差;整条链路的节奏是可控的,不会出现大批结果一次性堆在教师面前。
作文批改 Agent 的计量单位是次,付费口径分为后付费与预付费两种,另有免费额度可先用。
计费方式 | 规格 | 价格 | 折合单次 |
|---|---|---|---|
后付费 | 按实际提交量结算 | 0.42 元/次 | 0.42 元/次 |
预付费资源包 | 1000 次,有效期 1 年 | 490 元 | 0.49 元/次 |
预付费资源包 | 1 万次,有效期 1 年 | 4200 元 | 0.42 元/次 |
预付费资源包 | 10 万次,有效期 1 年 | 35000 元 | 0.35 元/次 |
预付费资源包 | 100 万次,有效期 1 年 | 300000 元 | 0.30 元/次 |
免费额度 | 1000 次/用户,开通时一次性发放 | 1 年内有效 | 不适用 |
把预付费各档折成单次成本,再与后付费摆在一起,档位选择才看得清。对照下来有一个容易被忽略的门槛:1000 次档的单次成本高于后付费,在这个量级下按量付费反而更省;1 万次档与后付费持平;单次成本真正低于后付费,要到 10 万次档才开始。所以资源包的选择依据是一年内能稳定提交的量级,量还不到就先走后付费,不必为了单价把额度买在账上等过期。
免费额度按次核减,对应的是接口调用,适合用来把整条链路先跑通:队列、轮询与复核这三段能否按预期衔接,只有走一遍完整调用才看得出来。它验证的是排程能不能跑顺,而不是单篇作文的批改效果。
2 次/分钟的限制,实质上把批量作文批改从"能不能跑"变成了"怎么排":提交按队列匀速出队,查询按时间窗口分批拉取,任务可按子账号分线但单线节奏不变,结果按班级分批交给教师复核。把这条节奏跑顺之后,批改量就不再取决于接口能跑多快,而取决于教师能复核多少。
准备启动批量批改的团队,可以先按任务队列与分批轮询的思路搭一个最小流程,用作文批改 Agent 首次开通即发放的 1000 次免费额度(一年内有效)在一个班的真实作文上跑一遍,把提交间隔、查询窗口和复核时间测出来,再据此估算整学期的用量。确认排程跑顺、要放量之后,再对照 文档智能特惠活动 的折扣档位:作文批改 Agent 新用户首单低至 1 折、老用户下单低至 6 折,按用量选规格更划算。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。