batch_api_project
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
这是一套调用阿里云百炼 Batch API(OpenAI 兼容接口)的 Python 工具,封装了批量推理任务的完整生命周期:上传 JSONL 请求文件、创建 Batch 任务、轮询状态直至终态、下载成功结果与错误文件。面向需要离线批量调用大模型(文本生成、向量化等)且希望控制成本(Batch 为实时调用的 50%)的场景。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | Python 3.7+(脚本逻辑)+ Shell(启动脚本) |
| 关键依赖/库 | openai(≥1.0.0,经 OpenAI 兼容模式调用阿里云百炼 Batch API)、python-dotenv(≥1.0.0,加载环境变量) |
| 数据存储 | 本地文件:输入 data/*.jsonl、输出 output/result.jsonl 与 output/error.jsonl、日志 logs/batch_api.log |
| 运行/部署方式 | 本地运行:创建 venv 后由 run.sh 安装依赖并启动 main.py;通过 .env 注入 DASHSCOPE_API_KEY / BASE_URL |
核心功能 / 亮点
- 完整生命周期管理:
batch_client.py中的BatchAPIClient把上传、建任务、状态轮询、结果/错误文件下载串成run_batch_job()一条调用;TERMINAL_STATUSES覆盖completed/failed/expired/cancelled。 - 文件上传:
upload_file()以purpose="batch"上传 JSONL 请求文件并返回文件 ID。 - 任务创建与状态查询:
create_batch_job()支持测试模型/v1/chat/ds-test、文本生成/v1/chat/completions、文本向量/v1/embeddings等端点;check_job_status()/get_batch_info()可读取计数与输出/错误文件 ID。 - 自动轮询:
wait_for_completion()按poll_interval(默认 10s)与max_poll_count(默认 360)轮询直到终态,避免无限等待。 - 结果落盘:
download_output_file()/download_error_file()分别把成功结果与错误文件写入本地,并保留前 500 字符预览。 - 完整日志:
main.py通过logging同时输出到控制台与logs/batch_api.log,记录任务 ID、状态、成功与否及错误码文档链接。 - 多场景示例:
examples.py给出基本用法、分步调用、生产模型、向量模型、自定义轮询配置 5 类样例,覆盖不同 endpoint 与模型。
目录结构
1 | batch_api_project/ |
相关链接
- GitHub 仓库:batch_api_project