Type Safe
返回工作流目录
工作流Type Safe Workflow实验性需要复核

Jev 图片与 Box 工作流

仅用于展示的工作流:先判断视觉目标是否存在,再由 Jev 1.14 返回一个 Box 结果供审核。

本页由 Type Safe 独立整理,介绍一套审慎的 Jev 图片工作流:先用 Noul 检查目标是否存在,再通过单目标 Box 定位、坐标校验与人工复核处理结果。图片与 Box 仍处于 Dreamer-ready 实验阶段,尚未达到生产可用状态,请求格式、答案结构和限制可能变化。

提供方
Type Safe Workflow
审核日期
2026年10月19日
项目状态
实验性
核实状态
需要复核
分类
automation, development, research
兼容方式
Jev 1.14, Jev 1.13, Experimental Images, TypeSafe API

输入

  • ✓PNG or JPEG image
  • ✓One visual target description per Box question
  • ✓Human-review confidence threshold

输出

  • ✓Target-presence decision
  • ✓Single bounding box
  • ✓Box confidence
  • ✓Review status and audit metadata

工作流步骤

  1. 1提交前预检 PNG 或 JPEG 格式、尺寸、文件大小,以及是否已获得图片处理授权。
  2. 2创建不会碰撞的唯一资源引用,并避免在普通应用日志中保存原始图片字节。
  3. 3添加 TypeSafe-Danger-Zone-Images: true,同时记录实验接口后续可能变化。
  4. 4读取 answers.target_present.noul 的 0 到 1 存在概率,并使用本地校准的存在性阈值进行路由;模糊值进入人工复核。
  5. 5每个 Box question 只描述一个目标;多个目标拆成多个问题。
  6. 6读取该目标对应的单个边界框与置信度。
  7. 7在下游使用前校验坐标顺序、范围、数值类型与置信度范围。
  8. 8把低置信度、目标不存在、坐标无效和高影响场景交给人工复核。
  9. 9记录模型 ID、danger-zone header、请求版本、存在性结果、Box 结果、置信度和审核结论,形成审计记录。

决策任务

  • ✓提取
  • ✓验证

工作流实施指南

该编辑模式投入实际业务前需要本地评估。测试版本为空表示本站尚未在固定模型版本上执行。

业务问题

视觉决策工作流需要定位一个目标,同时避免把 Box 必然返回的结果误当成目标确实存在的证据。

适用人群

评估实验性视觉提取方案,并需要明确人工复核路径的团队。

模型选择说明

Jev 1.13 与 Jev 1.14 都可接收 danger-zone 实验性图片,但 Box 原语仅支持 Jev 1.14。本编辑页面未进行实时接口测试,不会调用 TypeSafe API,也不代表功能已达到生产可用标准。

已测试模型版本

未知

行业
Software, Document processing, Visual quality review
难度
intermediate
预计设置时间
2 to 4 hours for a documentation-led prototype
兼容模型候选
jev-1-14, jev
所需集成
TypeSafe API image input, Jev 1.14 Box primitive, Human review process
推荐模型
jev-1-14

详细执行步骤

  1. 1提交前预检 PNG 或 JPEG 格式、尺寸、文件大小,以及是否已获得图片处理授权。
  2. 2创建不会碰撞的唯一资源引用,并避免在普通应用日志中保存原始图片字节。
  3. 3添加 TypeSafe-Danger-Zone-Images: true,同时记录实验接口后续可能变化。
  4. 4读取 answers.target_present.noul 的 0 到 1 存在概率,并使用本地校准的存在性阈值进行路由;模糊值进入人工复核。
  5. 5每个 Box question 只描述一个目标;多个目标拆成多个问题。
  6. 6读取该目标对应的单个边界框与置信度。
  7. 7在下游使用前校验坐标顺序、范围、数值类型与置信度范围。
  8. 8把低置信度、目标不存在、坐标无效和高影响场景交给人工复核。
  9. 9记录模型 ID、danger-zone header、请求版本、存在性结果、Box 结果、置信度和审核结论,形成审计记录。

置信度政策

置信度只能作为路由信号,不能当作正确性保证。需要使用有代表性的标注图片校准复核阈值,并分别跟踪目标误判存在与定位错误的比例。

人工复核政策

Noul 存在概率无效、低于本地校准的存在性阈值或处于模糊区间时必须人工复核;Box 置信度偏低、坐标无效、多目标存在歧义,或结果会影响安全、访问权限、身份、金钱与法律权利时,也必须人工复核。

隐私说明

图片可能包含人脸、身份证件、健康信息或其他敏感数据。应尽量减少收集,确认处理授权与用途,限制访问权限,设置较短的保留期限,并避免在日志中保存原始图片内容和密钥。

成本说明

官方价格按输入 token 计算,图片展开后的表示也会计入请求限制。TypeSafe 尚未公布稳定的展开单位估算,因此本指南不提供图片专属成本预测。

常见失败模式

  • ✓即使指定目标不存在,Box 仍会返回一个边界框。
  • ✓把置信度误当成定位正确的证明。
  • ✓一个 Box question 描述多个目标,导致结果含义不清。
  • ✓缺少 danger-zone 图片 header,或实验性请求协议发生变化。
  • ✓坐标格式错误、超出范围,或使用了错误的坐标体系。
  • ✓敏感图片数据进入日志,或在缺少明确用途时被长期保留。

排查方法

  • ✓实现请求前重新核对最新的 Images 与 Box 文档,因为实验性格式和限制可能变化。
  • ✓独立运行目标存在性检查,不能根据 Box 答案存在就推断目标存在。
  • ✓拆分多目标提示,并逐个检查目标。
  • ✓把渲染后的边界框与标注样本对比,并重新校准复核阈值。
  • ✓坐标约定或答案字段不符合已验证协议时,暂停自动流程并转交人工。

结构化请求示例

{
  "model": "jev-1.14.0",
  "state": {
    "image_asset": "jev_box_image_01",
    "review_threshold": 0.85
  },
  "assets": {
    "jev_box_image_01": {
      "type": "image",
      "part": "<multipart part reference omitted>"
    }
  },
  "questions": {
    "target_present": {
      "type": "noul",
      "instructions": "Using the image in state field `image_asset`, is the red warning label visible?"
    },
    "target_box": {
      "type": "box",
      "instructions": "Using the image in state field `image_asset`, locate the red warning label."
    }
  }
}

Pure Box-answer validator with review examples

typescript ·

jev-1.14.0 documentation contract
type ReviewStatus = 'accept' | 'review';

function isRecord(value: unknown): value is Record<string, unknown> {
  return typeof value === 'object' && value !== null;
}

function isUnitNumber(value: unknown): value is number {
  return (
    typeof value === 'number' &&
    Number.isFinite(value) &&
    value >= 0 &&
    value <= 1
  );
}

function validateBoxAnswer(
  presenceProbability: unknown,
  result: unknown,
  reviewThreshold = 0.85,
  presenceThreshold = 0.8
): ReviewStatus {
  if (
    !isUnitNumber(presenceProbability) ||
    !isUnitNumber(reviewThreshold) ||
    !isUnitNumber(presenceThreshold) ||
    presenceProbability < presenceThreshold ||
    !isRecord(result) ||
    !isRecord(result.box)
  ) {
    return 'review';
  }

  const top = result.box.top;
  const bottom = result.box.bottom;
  const left = result.box.left;
  const right = result.box.right;
  const confidence = result.confidence;
  if (
    !isUnitNumber(top) ||
    !isUnitNumber(bottom) ||
    !isUnitNumber(left) ||
    !isUnitNumber(right) ||
    !isUnitNumber(confidence) ||
    !(left < right) ||
    !(top < bottom)
  ) {
    return 'review';
  }
  return confidence >= reviewThreshold ? 'accept' : 'review';
}

const officialShape = {
  box: { top: 0.1, bottom: 0.6, left: 0.2, right: 0.8 },
  confidence: 0.91,
};
const invalidOrder = {
  box: { top: 0.7, bottom: 0.3, left: 0.2, right: 0.8 },
  confidence: 0.91,
};
const nonNumericConfidence = {
  box: { top: 0.1, bottom: 0.6, left: 0.2, right: 0.8 },
  confidence: '0.91',
};

const accepted = validateBoxAnswer(0.95, officialShape, 0.85, 0.8); // 'accept'
const wrongOrder = validateBoxAnswer(0.95, invalidOrder, 0.85, 0.8); // 'review'
const ambiguousPresence = validateBoxAnswer(0.55, officialShape, 0.85, 0.8); // 'review'
const nullResult = validateBoxAnswer(0.95, null, 0.85, 0.8); // 'review'
const missingBox = validateBoxAnswer(0.95, { confidence: 0.91 }, 0.85, 0.8); // 'review'
const invalidConfidence = validateBoxAnswer(0.95, nonNumericConfidence, 0.85, 0.8); // 'review'

实施建议

在代码审查中明确保留输入和输出定义。模型响应进入数据库、API 或面向客户的操作前,都需要执行校验。

相关资源