首页/新闻资讯/正文详情

agentic-awesome-skills 中的 Claude Message Batches API(Python):异步批量消息处理实战指南

发布时间:2026/9/24 18:50:22 来源:云帆数科 栏目:资讯中心
agentic-awesome-skills 中的 Claude Message Batches API(Python):异步批量消息处理实战指南
AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,445 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载导读本文以plugins/agentic-awesome-skills-claude插件中claude-apiskill 的 batches.md 为核心骨架系统讲解如何用 Python 官方 SDK 调用 Claude Message Batches APIPOST /v1/messages/batches——以标准价格50% 的成本异步批量处理海量 Messages API 请求。读完本文你将掌握批次创建、状态轮询、结果分类读取、批次取消以及与 Prompt Caching 组合的降本方案并能直接复用文末的端到端代码跑通一个真实批处理任务。一、Batches API 是什么异步批处理的价值与边界Batches API 是 Messages API 的异步形态你把成百上千条独立的请求一次性提交由服务端排队处理处理完成后统一拉取结果。它不改变请求语义而是改变交付方式——从同步等待单条响应变为异步提交、事后批量收割。本仓库claude-apiskill 的 SKILL.md 明确给出了它的适用场景Batch processing (non-latency-sensitive)即非延迟敏感的离线批处理。典型的场景包括大规模文本分类、情感标注如文末示例的商品评论分类批量摘要、批量翻译、批量实体抽取离线数据清洗与结构化抽取需要跨大量文档复用同一上下文的分析任务。Key Facts关键事实全部来自关联文档约束/能力数值单批次最大请求数100,000 个请求单批次最大体积256 MB完成时间大多数批次 1 小时内完成最长 24 小时结果保留期创建后 29 天内可获取成本所有 token 用量均按标准价50%计费能力范围支持全部 Messages API 特性vision 视觉、tools 工具调用、prompt caching 缓存等两点需要特别提醒第一批处理天然有延迟——若你的业务需要秒级响应请走同步的client.messages.create()第二50% 折扣是针对批处理通道的整体计费策略不因单条请求大小而变化因此请求越大、批量越大节省越明显。二、环境准备与客户端初始化在编写批处理代码前先按 Python claude-api README 完成环境准备pip install anthropic客户端初始化有三种方式import anthropic # 方式一默认读取环境变量 ANTHROPIC_API_KEY client anthropic.Anthropic() # 方式二显式传入 API key client anthropic.Anthropic(api_keyyour-api-key) # 方式三异步客户端配合 async/await 使用 async_client anthropic.AsyncAnthropic()关联文档中的示例全部使用方式一即通过ANTHROPIC_API_KEY环境变量注入密钥。不要把 API key 硬编码进代码——error-codes.md 将API key in code列为 401 错误的典型诱因密钥泄露。模型 ID 的选择批次中的每条请求都要声明model。仓库的 shared/models.md 强调只能使用表中列出的精确模型 ID绝不猜测或拼接。当前推荐模型如下仓库缓存日期 2026-02-17来源 SKILL.md模型模型 ID使用此值上下文窗口输入 $/1M tokens输出 $/1M tokensClaude Opus 4.6claude-opus-4-6200K1M beta$5.00$25.00Claude Sonnet 4.6claude-sonnet-4-6200K1M beta$3.00$15.00Claude Haiku 4.5claude-haiku-4-5200K$1.00$5.00价格数据为仓库缓存值仅作成本估算参考实际价格请以官方实时数据为准仓库 live-sources.md 提供了实时定价文档的 WebFetch 地址。注意 50% 折扣同样适用于上述单价——以 Haiku 4.5 跑批量分类为例输入成本从 $1.00/1M 降至 $0.50/1M。三、创建批次核心 API 与请求结构Batches API 的 Python SDK 入口是client.messages.batches.create()。关联文档给出的最小可运行示例import anthropic from anthropic.types.message_create_params import MessageCreateParamsNonStreaming from anthropic.types.messages.batch_create_params import Request client anthropic.Anthropic() message_batch client.messages.batches.create( requests[ Request( custom_idrequest-1, paramsMessageCreateParamsNonStreaming( modelclaude-opus-4-6, max_tokens1024, messages[{role: user, content: Summarize climate change impacts}] ) ), Request( custom_idrequest-2, paramsMessageCreateParamsNonStreaming( modelclaude-opus-4-6, max_tokens1024, messages[{role: user, content: Explain quantum computing basics}] ) ), ] ) print(fBatch ID: {message_batch.id}) print(fStatus: {message_batch.processing_status})请求结构拆解Request与custom_id每个Request由两部分组成custom_id必填客户端自定义的唯一标识符用于在结果中关联哪条请求对应哪个结果。建议采用可读、可排序的命名如request-1、classify-0因为结果返回时并不保证顺序custom_id是你还原业务数据的唯一锚点。params一个完整的MessageCreateParamsNonStreaming——与同步messages.create()的参数完全一致支持model、max_tokens、messages、system、tools、cache_control等全部 Messages API 参数。三条重要规则custom_id在同一批次内必须唯一否则结果无法区分模型 ID 必须是精确值如claude-opus-4-6拼错会以 404/invalid_request错误落回该条请求的结果中详见 error-codes.md创建成功的响应包含batch.id与processing_status此时通常为in_progress后续轮询、取结果、取消都要用到batch.id。从仓库 SKILL.md 的默认约定看除非用户另有指定模型默认使用claude-opus-4-6而文末端到端示例用claude-haiku-4-5跑低成本分类体现了按任务选模型的工程取舍。四、轮询批次完成状态processing_status 与 request_counts批次是异步的创建后需要轮询直到终态。关联文档的标准轮询模式import time while True: batch client.messages.batches.retrieve(message_batch.id) if batch.processing_status ended: break print(fStatus: {batch.processing_status}, processing: {batch.request_counts.processing}) time.sleep(60) print(Batch complete!) print(fSucceeded: {batch.request_counts.succeeded}) print(fErrored: {batch.request_counts.errored})字段语义processing_status批次状态机。常见取值包括in_progress处理中、ended结束可获取结果、canceling取消中详见第六节。当且仅当状态为ended时才应去拉取结果。request_counts一个计数对象包含processing仍在处理、succeeded成功、errored出错等字段用于进度感知。配合print日志可以在长耗时批次中持续观察进度。轮询间隔建议关联文档使用time.sleep(60)60 秒间隔。这是合理的默认值——大多数批次 1 小时内完成秒级轮询只会白白消耗 API 配额。对于小型批次如几十条请求可以按端到端示例那样缩短到time.sleep(10)加快反馈对于上万条请求的大批次建议保持 60 秒或更长的间隔。设计考量为什么有 24 小时上限批处理本质是排队 分片执行服务端在资源空闲时优先处理因此官方给出多数 1 小时内完成、最长 24 小时的保证。这意味着依赖批次结果的下游任务要容忍最长 24 小时的延迟边界若批次在 24 小时内未能完成部分请求可能进入expired状态需要在结果读取阶段单独处理见下节。五、读取结果按 custom_id 收割并分类处理批次结束后用client.messages.batches.results(batch.id)逐条取出结果。关联文档使用了 Python 3.10 的match/case结构模式匹配文档明确提示Python 3.10 以下请改用if/elif链for result in client.messages.batches.results(message_batch.id): match result.result.type: case succeeded: print(f[{result.custom_id}] {result.result.message.content[0].text[:100]}) case errored: if result.result.error.type invalid_request: print(f[{result.custom_id}] Validation error - fix request and retry) else: print(f[{result.custom_id}] Server error - safe to retry) case canceled: print(f[{result.custom_id}] Canceled) case expired: print(f[{result.custom_id}] Expired - resubmit)四种结果类型的处理策略结果类型含义推荐处理succeeded请求成功result.result.message为完整 Message 对象提取content文本按custom_id归位errored请求失败看result.result.error.typeinvalid_request是请求本身有问题如参数非法需修复后重建请求其他类型多为服务端错误可安全重试canceled批次被取消部分请求未执行记录即可按业务决定是否重建expired批次超时24 小时边界或结果过期重新提交resubmit提取文本的细节result.result.message.content是 content block 列表。同步请求中首个 block 通常是文本因此示例用content[0].text取文本。但从源码使用惯例看参见 README 对 thinking block 的处理更稳健的写法是遍历并筛选type text的 block若请求启用了 thinkingcontent[0]可能是 thinking block 而非文本。六、取消批次cancel 的语义与边界cancelled client.messages.batches.cancel(message_batch.id) print(fStatus: {cancelled.processing_status}) # canceling取消调用后状态会进入canceling已处理完成的请求结果仍可取回未处理的请求会以canceled类型落在结果流中。取消不是瞬间完成需要配合轮询确认最终状态。注意取消通常只对尚未执行或仍在排队的请求生效如果批次已进入快速执行阶段取消可能需要时间生效因此应在业务上把取消视为异步操作。七、批处理 × Prompt Caching让大批量请求共享同一上下文批量任务最典型的成本杀手是每条请求都重复发送同一份大文档。解决方案是把共享内容放进system块并标记cache_control让所有请求复用同一份缓存上下文。关联文档给出了完整模式shared_system [ {type: text, text: You are a literary analyst.}, { type: text, text: large_document_text, # Shared across all requests cache_control: {type: ephemeral} } ] message_batch client.messages.batches.create( requests[ Request( custom_idfanalysis-{i}, paramsMessageCreateParamsNonStreaming( modelclaude-opus-4-6, max_tokens1024, systemshared_system, messages[{role: user, content: question}] ) ) for i, question in enumerate(questions) ] )机制与收益system数组中的cache_control: {type: ephemeral}标记该内容块为可缓存默认 TTL 5 分钟可显式指定ttl: 1h等见 README 的 Prompt Caching 节批处理内大量请求共享同一份系统上下文时首次请求全价写入缓存后续请求命中缓存缓存部分成本可降约 90%在此基础上再叠加批处理自身的 50% 折扣效果叠加——这是仓库文档中成本优化的核心组合拳。阅读建议本仓库 SKILL.md 的阅读指引将batches.md与README.md捆绑使用原因正在于此——批处理几乎总是与 prompt caching、错误处理、模型选择配合使用而不是孤立调用。八、完整端到端示例评论情感分类关联文档最后给出的完整示例从准备请求到收割结果一气呵成建议作为你的脚手架代码import anthropic import time from anthropic.types.message_create_params import MessageCreateParamsNonStreaming from anthropic.types.messages.batch_create_params import Request client anthropic.Anthropic() # 1. Prepare requests items_to_classify [ The product quality is excellent!, Terrible customer service, never again., Its okay, nothing special., ] requests [ Request( custom_idfclassify-{i}, paramsMessageCreateParamsNonStreaming( modelclaude-haiku-4-5, max_tokens50, messages[{ role: user, content: fClassify as positive/negative/neutral (one word): {text} }] ) ) for i, text in enumerate(items_to_classify) ] # 2. Create batch batch client.messages.batches.create(requestsrequests) print(fCreated batch: {batch.id}) # 3. Wait for completion while True: batch client.messages.batches.retrieve(batch.id) if batch.processing_status ended: break time.sleep(10) # 4. Collect results results {} for result in client.messages.batches.results(batch.id): if result.result.type succeeded: results[result.custom_id] result.result.message.content[0].text for custom_id, classification in sorted(results.items()): print(f{custom_id}: {classification})这段代码展示了批处理的四个标准阶段准备请求用列表推导批量构造Requestcustom_id与业务数据一一对应classify-0→ 第 0 条评论创建批次一次create提交全部请求等待完成小批次用 10 秒轮询状态为ended时退出收割结果遍历结果流按custom_id存入字典最后排序输出——输出顺序与提交顺序一致便于人工核对。选用claude-haiku-4-5的原因可从 SKILL.md 模型表 读出Haiku 4.5 是最快、最具成本效益的模型单字分类这种简单任务用它 50% 批处理折扣成本最优。九、工程化加固错误处理与重试策略批处理虽为异步但创建、轮询、取结果这三类调用本身仍是同步 HTTP 请求可能抛异常。结合 README 的错误处理节 与 error-codes.md 的异常映射表推荐用 SDK 的类型化异常处理import anthropic try: batch client.messages.batches.create(requestsrequests) except anthropic.BadRequestError as e: print(fBad request: {e.message}) # 400请求结构非法 except anthropic.AuthenticationError: print(Invalid API key) # 401 except anthropic.PermissionDeniedError: print(API key lacks required permissions) # 403 except anthropic.RateLimitError as e: retry_after int(e.response.headers.get(retry-after, 60)) print(fRate limited. Retry after {retry_after}s.) # 429 except anthropic.APIStatusError as e: if e.status_code 500: print(fServer error ({e.status_code}). Retry later.) # 5xx else: print(fAPI error: {e.message}) except anthropic.APIConnectionError: print(Network error. Check internet connection.)错误码与异常类映射来自 error-codes.mdHTTP 状态码错误类型是否可重试常见原因400invalid_request_error否请求格式/参数非法401authentication_error否API key 无效或缺失403permission_error否key 无权限404not_found_error否端点或模型 ID 错误413request_too_large否请求超限单条请求过大429rate_limit_error是请求/Token 超限500api_error是Anthropic 服务问题529overloaded_error是API 过载SDK 自带重试无需重复造轮子README 的 Retry 节 明确指出Anthropic SDK 已对 429 与 5xx 自动指数退避重试默认max_retries2。仅当需要自定义重试行为如更多次数、更长退避时才自行实现且实现时只重试 429/5xx4xx 客户端错误直接抛出。批处理特有的错误场景批次内的请求错误不抛异常它们以errored结果类型出现在结果流中需要按第五节的方法分类处理——这是与同步 API 最大的心智差异413单批次上限 256 MB超限会拒绝创建请在提交前控制请求总大小截断历史、压缩图片或分片提交。十、跨语言一致性同一语义多语言 SDK本仓库的claude-apiskill 同时提供 Python 与 TypeScript 两个完整版本TypeScript 版 batches.md 与本文档共享完全相同的 Key Facts 与流程骨架。对比可见流程PythonTypeScript创建client.messages.batches.create()client.messages.batches.create()轮询client.messages.batches.retrieve(id)client.messages.batches.retrieve(id)取结果client.messages.batches.results(id)迭代器for await ... batches.results(id)异步迭代器取消client.messages.batches.cancel(id)client.messages.batches.cancel(id)结果分类match/case3.10switch/caseSDK 方法命名完全对齐错误分类逻辑invalid_request区分可修复/可重试也保持一致。这意味着如果你在 TypeScript/Node.js 技术栈中需要同样的批处理能力直接对照 TypeScript 版本文档 即可概念与本节各流程一一对应。十一、常见问题速查现象原因处理批次状态迟迟不结束大批次排队执行耐心等待24 小时为上限期间用request_counts.processing观察进度部分结果报invalid_request该请求参数非法模型 ID 错误、messages 结构错误等修复该请求后重新提交参考 error-codes.md 的 400 排查清单结果流中出现expired批次超时或结果过期创建后 29 天重新提交长期任务注意在 29 天内取走结果想节省大文档重复传输成本未使用缓存用第七节的cache_control方案共享系统上下文match/case语法报错Python 3.10改用if/elif链逐类型判断创建批次报 401/403API key 问题检查ANTHROPIC_API_KEY环境变量与 key 权限小结Batches API 是 Claude 生态中降本 吞吐的关键通道单批次最高 10 万请求、256 MB全部 token 半价计费且完整保留 vision、tool use、prompt caching 等 Messages API 能力。结合本仓库claude-apiskill 的文档体系你可以在 batches.md 与 README.md 之间按需跳转——前者覆盖批处理全流程代码后者补齐客户端初始化、错误处理、成本优化与多轮对话等配套能力需要最新模型与定价时参考 shared/live-sources.md 中记录的官方实时文档地址。把本文的端到端示例作为起点将items_to_classify替换为你的真实数据、custom_id替换为你的业务主键即可在生产环境中落地一套半价的批量推理流水线。赞分享AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,445 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载相关推荐Claude 批量处理如何用 Message Batches API 异步跑大规模请求并降低一半成本Claude 批量处理如何用 Message Batches API 异步跑大规模请求并降低一半成本 当你手上有大量不需要实时响应的 Claude Messa示例工程Claude API Python 开发实战基于 agentic-awesome-skills 仓库构建 Messages API 应用Claude API Python 开发实战基于 agentic awesome skills 仓库构建 Messages API 应用 本篇技术指南以 clAI 技能AI 插件marimo 循环依赖 Lint 规则 MB003原理、报错解读与修复实战marimo 循环依赖 Lint 规则 MB003原理、报错解读与修复实战 导读 本篇文章聚焦 marimo 内置的静态检查规则 MB003: cycle dAI 技能AI 插件上一篇Matting Anything实用技巧如何用语言提示词精准控制alpha matte生成下一篇AVA 并发控制与 --concurrency 参数校验从快照测试到源码实现创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

YOLOv5剪枝与量化实战:结构化压缩与PTQ落地指南
YOLOv5剪枝与量化实战:结构化压缩与PTQ落地指南

简介:本资源是一套面向深度学习工程师与边缘部署开发者的YOLOv5模型轻量化实战方案,聚焦剪枝与量化两大核心压缩技术,解决在移动端、嵌入式设备或低算力GPU上高效部署目标检测模型的痛点。压缩包共208个文件,涵盖59个Python脚本&a… · 2026/9/24 18:50:22

睡觉忘了摘隐形,第二天眼睛会不会出事?/钟祥极博视科普
睡觉忘了摘隐形,第二天眼睛会不会出事?/钟祥极博视科普

一、先说个咱钟祥街坊的日常前两天在莫愁大道那边遛弯,碰到位大姐,一边揉眼睛一边跟我唠:昨晚看电视看着看着睡着了,早上起来才想起隐形还戴在眼里,一睁眼又干又涩,心里直打鼓。这事儿真不少见。咱们钟祥这… · 2026/9/24 18:50:22

YOLOv5剪枝与量化实战:非结构化剪枝+QAT+ONNX INT8三步闭环
YOLOv5剪枝与量化实战:非结构化剪枝+QAT+ONNX INT8三步闭环

简介:本资源是一套面向深度学习工程师与边缘部署开发者的YOLOv5模型轻量化实战方案,聚焦剪枝与量化两大核心压缩技术,解决在移动端、嵌入式设备或低算力GPU上高效部署目标检测模型的痛点。压缩包共208个文件,涵盖59个Python脚本&a… · 2026/9/24 18:50:22

django-allauth 集成 Kakao 登录:OAuth2 配置指南与源码解析
django-allauth 集成 Kakao 登录:OAuth2 配置指南与源码解析

django-allauth 集成 Kakao 登录:OAuth2 配置指南与源码解析 【免费下载链接】django-allauth Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. &… · 2026/9/24 19:33:45

JavaWeb试题库管理系统课设:Servlet+JSP+JDBC完整实现与避坑指南
JavaWeb试题库管理系统课设:Servlet+JSP+JDBC完整实现与避坑指南

简介:这是一套基于JavaWeb的试题库管理系统完整项目资料,面向计算机相关专业正在准备课程设计或期末大作业的学生,以及需要项目实战练习的学习者。项目为个人大三学期期末大作业,经导师指导并认可通过,评审分98分&… · 2026/9/24 19:33:39

Windows 7原版安装四层镜像校验与驱动拓扑实战指南
Windows 7原版安装四层镜像校验与驱动拓扑实战指南

1. 为什么现在还要折腾Windows 7原版安装——不是怀旧,是刚需你点开这个标题,大概率不是为了怀旧。我见过太多真实场景:老式数控机床控制面板只认Win7 SP1的.NET Framework 3.5;医院检验科的全自动生化分析仪配套软件,… · 2026/9/24 19:33:39

CAD字体缺失乱码彻底解决:SHX/TTF安装与批量修复指南
CAD字体缺失乱码彻底解决:SHX/TTF安装与批量修复指南

打开一套施工图,标题栏里全是问号,材料表变成一排方块,数字标注还正常,可所有中文全丢了。我相信干设计、干工程对接的朋友对这一幕都不陌生。CAD字体缺失、乱码问题,从R14时代一路折腾到2026年的新版本,属… · 2026/9/24 19:33:39

IDEA插件实现JDK与Gradle JVM自动切换的完整指南
IDEA插件实现JDK与Gradle JVM自动切换的完整指南

上午还在用 Java 8 改一个老项目的线上 Bug,下午切到 Java 21 的新服务上写接口,晚上又打开一个 Android 项目准备看构建日志。一天下来,光是在 IDEA 里切换 JDK、再切 Gradle JVM、顺手改环境变量 JAVA_HOME,就来回折腾了七八次。… · 2026/9/24 19:33:39

厂房焊接车间智能照明改造:照明节能控制系统人体感应方案
厂房焊接车间智能照明改造:照明节能控制系统人体感应方案

焊装车间是汽车工厂中照明设计最复杂的场景之一。焊接作业时弧光强烈,而检验工位又要求极高照度——两者对灯光的需求完全不同。据《乘用车工厂焊装车间照明节能设计的探讨》披露,一汽大众华北生产基地焊装车间在照明施工中出现了“车间一般照明中灯具被… · 2026/9/24 19:33:39

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码