Azure OpenAI批量任务显示完成但仅少量请求完成求助
Azure OpenAI批量任务仅少量请求完成排查方案
问题背景
为输入文件每行配置唯一custom_id并提交Azure OpenAI批量任务,任务通过验证后快速完成,但仅少量请求执行完成(例:4096条中仅276条),无任务级错误提示。此前排查重复custom_id问题修复后仍未解决;已确认速率限制足够高,更换GPT-4o-mini模型部署后问题依旧,仅首次批量任务成功完成全部请求。
相关任务信息:
Batch(id='batch_02d3c78a-ba97-40e3-8646-e83099ba5dbb', completion_window='24h', created_at=1742003026, endpoint='/chat/completions', input_file_id='file-083b8e3f2f024dc9a34a06d6014679c9', object='batch', status='completed', cancelled_at=None, cancelling_at=None, completed_at=1742003648, error_file_id='file-c93301a5-0199-479e-8660-71426f22ce2d', errors=None, expired_at=None, expires_at=1742089426, failed_at=None, finalizing_at=1742003528, in_progress_at=1742003279, metadata=None, output_file_id='file-34f7b43e-956c-4bc7-9d0a-6699db9333c6', request_counts=BatchRequestCounts(completed=276, failed=0, total=4096))
批量请求示例:
{ "custom_id": "0_18_v2_fever_958611a10d8432c7ca51a59fca384dbc", "method": "POST", "url": "/chat/completions", "body": { "model": "gpt-4o-mini-batch", "messages": [ {"role": "user", "content": "<my prompt here>"} ], "max_completion_tokens": 4096, "temperature": 0.1 } }
提交任务的Python伪代码:
from openai import AzureOpenAI import os client = AzureOpenAI( azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT") if endpoint is None else endpoint, api_key=os.getenv("AZURE_OPENAI_API_KEY") if api_key is None else api_key, api_version=os.getenv("AZURE_OPENAI_API_VERSION") if api_version is None else api_version, ) file = client.files.create( file=open(final_filepath, "rb"), purpose="batch" ) file_id = file.id batch_response = client.batches.create( input_file_id=file_id, endpoint="/chat/completions", completion_window="24h" )
排查步骤
1. 分析错误文件详情
虽然任务级errors字段为None,但错误文件(file-c93301a5-0199-479e-8660-71426f22ce2d)可能包含单条请求的隐性错误:
- 使用SDK调用
client.files.content(error_file_id)下载错误文件 - 检查文件中是否存在JSON解析失败、模型名称不匹配、内容过滤拦截等请求级错误
2. 验证输入文件格式合法性
首次任务成功说明格式标准,但后续文件可能存在隐性问题:
- 确认输入文件为每行一个JSON对象的NDJSON格式,禁止多行JSON或语法错误
- 使用
jq等工具遍历所有行,批量校验JSON语法 - 检查文件编码是否为UTF-8,是否存在不可见控制字符(如异常换行符)
3. 核对模型与endpoint配置一致性
- 确认请求
body中的model值(gpt-4o-mini-batch)与Azure门户部署的模型名称完全匹配(大小写、后缀均需一致) - 验证批量任务创建时的
endpoint(/chat/completions)与模型类型兼容(Chat模型对应此endpoint,Completion模型需用/completions)
4. 检查Azure资源监控日志
- 登录Azure门户,进入对应OpenAI资源的监控页面,筛选批量任务时间段的请求日志
- 排查是否有请求被静默丢弃(如内容过滤触发、令牌配额超限)
- 确认资源的输入/输出令牌总配额是否足够覆盖4096条请求
5. 小批量测试定位问题
- 抽取输入文件中未执行的部分(如从第277条开始取100条)创建小批量任务测试
- 若小批量成功,逐步扩大规模排查大文件解析问题;若失败,逐行测试定位具体异常请求
6. 升级AzureOpenAI SDK版本
- 执行
pip list | grep openai查看当前SDK版本 - 升级至最新稳定版:
pip install --upgrade openai,旧版本可能存在批量任务处理的已知bug
内容的提问来源于stack exchange,提问作者Nandan Thakur
相关产品推荐
相关产品推荐

