batch_api_project · 项目介绍

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
2
3
4
5
6
7
8
9
10
11
12
13
batch_api_project/
├── batch_client.py # BatchAPIClient:上传/建任务/轮询/下载 等生命周期核心
├── main.py # CLI 入口:加载配置 + 日志 + 跑完整流程(默认测试端点)
├── examples.py # 5 类使用示例(基本 / 分步 / 生产 / 向量 / 自定义配置)
├── run.sh # 一键启动:建 venv、装依赖、.env 检查、运行 main.py
├── requirements.txt # openai>=1.0.0, python-dotenv>=1.0.0
├── .env.example # DASHSCOPE_API_KEY / BASE_URL 示例
├── data/ # 输入 JSONL(test_model.jsonl 等,运行前准备)
├── output/ # 输出 result.jsonl / error.jsonl(运行后生成)
├── logs/ # batch_api.log(运行后生成)
├── API_ENDPOINTS.md # 支持的端点与模型说明
├── CHECKLIST.md # 自检清单
└── IMPLEMENTATION.md # 实现说明

相关链接