如何创建包含Google Cloud Bucket文件列表的Vertex AI批量预测用JSONL文件
JSONL格式报错原因
常见触发cannot be parsed as JSONL错误的问题如下:
- 文件中存在空行,JSONL要求每一行必须是独立且完整的JSON对象,不允许出现空行
- 行末存在多余空格、特殊控制字符,或是换行符为Windows格式的CRLF,Vertex AI仅支持Unix格式的LF换行符
- JSON对象的引号使用了中文双引号、字段缺少闭合引号,或是键值对之间缺少逗号
- 文件路径中存在特殊字符(如空格、双引号)没有做JSON转义
现有JSONL文件修正方案
你可以用jq工具快速校验无效行,执行以下命令即可定位所有不符合JSON规范的行:
cat list.jsonl | while read line; do echo $line | jq . > /dev/null || echo "无效行: $line" done
定位到问题行后,对应删除空行、修正引号、替换换行符即可。
直接从GCS存储桶生成合规JSONL的方法
不需要先导出txt再手动转换,直接用命令即可生成符合Vertex AI要求的JSONL文件:
场景1:所有文件为JPG格式,mimeType固定为image/jpeg
gsutil ls gs://<你的桶路径>/*.jpg | awk '{printf "{\"content\": \"%s\", \"mimeType\": \"image/jpeg\"}\n", $0}' > list.jsonl
场景2:需要根据文件后缀自动匹配mimeType
gsutil ls gs://<你的桶路径>/* | awk -F '.' '{ ext = tolower($NF); mime = "application/octet-stream"; if (ext == "jpg" || ext == "jpeg") mime = "image/jpeg"; else if (ext == "png") mime = "image/png"; else if (ext == "gif") mime = "image/gif"; else if (ext == "json") mime = "application/json"; printf "{\"content\": \"%s\", \"mimeType\": \"%s\"}\n", $0, mime }' > list.jsonl
生成后验证
执行以下命令验证前5行是否符合JSON规范,无报错即可正常使用:
head -5 list.jsonl | jq .
内容的提问来源于stack exchange,提问作者GG Sheet Quản Lý
相关产品推荐
相关产品推荐

