# 豆包(火山方舟 Ark)媒体生成模型档案。
#
# 价格表 last_updated: 2026-05-22
#   源: https://www.volcengine.com/docs/82379/1544106
#       https://github.com/ArcReel/ArcReel(费用参考表)
#   豆包调价时手动更新本文件 + 重启 web。历史 usage_events 自带 snapshot 不受影响
#   (record_image_usage / record_video_usage 把单价 snapshot 写进 units jsonb 列)。
#
# 接入方式:走 ark 原生 HTTP(litellm 不覆盖图像/视频),core/ark_client.py 封装统一调用。
# image (seedream) 同步返 URL;video (seedance) 异步 task + polling,产物落
# <wd>/videos/<ts>-<rand>.mp4。

ark_api_key_env: ARK_API_KEY
ark_base_url: https://ark.cn-beijing.volces.com/api/v3

image:
  seedream_5:
    model_id: doubao-seedream-5-0-260128
    display_name: 豆包 Seedream 5.0
    # 同步生成,3-5 秒出图。OpenAI Images API 兼容路径 /images/generations。
    endpoint: /images/generations
    price_cny_per_image: 0.22       # 计费单位:成功输出张数;调价改这里 + 重启
    default_size: 2048x2048         # 原生最高 3072x3072;2K 兼顾质量/体积
    # 输出尺寸面积约束(ARK 硬门):面积 < min_pixels → 400 InvalidParameter。
    # 模型自选 16:9 之类小尺寸(如 1920x1080=2.07M)会栽,故 tool 侧等比钳到合法区间:
    #   min = 1920² = 3,686,400(16:9 最小合规即 2560x1440);max = 3072² = 9,437,184。
    min_pixels: 3686400
    max_pixels: 9437184
    default_watermark: false        # 默认无水印(申报/PPT 场景反需求)
    default_search: false           # web search 额外加价 ~¥0.05/张;默认关
    request_timeout_s: 60           # 出图慢于此判超时

vision:
  # 图像理解(看图 / OCR / 读图表)。DeepSeek V4 主模型纯文本无视觉,挂 `look_at_image`
  # 工具走豆包 Seed 2.0 Lite(全模态理解)按需读图。OpenAI 兼容 /chat/completions,
  # 单图走 base64 data URL(同 seedream i2i,内网无需对象存储)。
  # 价格 last_updated: 2026-06-16,源 https://www.volcengine.com/docs/82379/1544106
  seed_2_lite:
    model_id: doubao-seed-2-0-lite-260428
    display_name: 豆包 Seed 2.0 Lite(视觉理解)
    endpoint: /chat/completions
    # token 计费(元/百万 tokens):输入 0.6 / 输出 3.6 / 缓存命中 0.12。
    # 一次读图 ≈ 图 1-2K + 输出几百 token → 成本 < ¥0.01,故不设每日配额(够便宜)。
    price_cny_per_mtoken_input: 0.6
    price_cny_per_mtoken_output: 3.6
    price_cny_per_mtoken_cache_hit: 0.12
    max_image_mb: 10               # 单图上限(超出 tool 侧直接报错,不发请求)
    request_timeout_s: 120         # 读图慢于此判超时(非流式,长 OCR 首字节可能逼近上限)
    timeout_retries: 1             # 超时/网络抖动 tool 内透明重试次数(退避 2^n s);不含业务错误
    # ---- 文档理解(read_document,同模型同价,scripts/probe_ark_doc.py 实测口径) ----
    # 方舟 file 内容块直读 PDF(含扫描件):base64 内联,约 1300 token/页(每页约 1 厘)。
    # 单页栅格化 3600 万像素硬限在 ARK 侧;这里只闸文件体积与页数(页数≈上下文占用)。
    max_pdf_mb: 30                 # 单 PDF 体积上限(base64 后 x1.33;实测 17MB 内联可用)
    max_pdf_pages: 100             # 单次页数上限(100 页≈13 万输入 token);更长先拆分卷
    doc_request_timeout_s: 600     # 整本 OCR 输出量大,显著慢于单图(非流式)

video:
  # fast 放第一个 → 默认 variant(成本敏感场景优先);开通了 Pro 的用户从顶栏下拉切。
  seedance_2_fast:
    model_id: doubao-seedance-2-0-fast-260128
    display_name: 豆包 Seedance 2.0 Fast
    # 异步任务:POST /contents/generations/tasks 拿 cgt-xxx → 轮询 GET
    # /contents/generations/tasks/<id> 直到 status=succeeded → 取 content.video_url
    # (24h 内有效,本 tool 立刻 download 到本地)。
    endpoint_submit: /contents/generations/tasks
    endpoint_poll: /contents/generations/tasks   # 实际路径 = base + "/{cgt_id}"

    # 计费(per-token,token = (in_dur+out_dur) × W × H × fps / 1024):
    #   文生视频(无视觉输入): ¥37 / 百万 tokens
    #   图生视频(有首帧图片输入): ¥22 / 百万 tokens
    # 实测档位(fast, 5s, 文生视频, 24fps,源: ArcReel 费用参考表):
    #   480p 16:9 → ¥1.86
    #   720p 16:9 → ¥4.00
    # tool 内部按 W×H×duration×fps/1024 估算 tokens × 单价 → cost_cny。响应里若带 usage
    # 字段则覆盖估算(待豆包接口实际返回字段校准)。
    price_cny_per_mtoken_text2video: 37.0
    price_cny_per_mtoken_video2video: 22.0
    fps: 24                        # token 估算用;豆包当前 24fps 固定

    # 支持参数(POST body 字段)
    default_resolution: 720p       # fast 上限,可选 480p / 720p
    default_ratio: "16:9"          # 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive
    default_duration: 5            # 4-15s
    default_watermark: false
    # generate_audio: Seedance 2.0 旗舰特性 —— 原生 AI 生成背景音效 / 角色对白(无需后期配音)。
    # 开启会增加 token 消耗(模型还要算音轨),cost 比纯视频高;默认关闭让 cost 可预测,
    # 用户要带音的视频(广告 / 角色对白)时显式传 true。
    default_generate_audio: false
    max_image_mb: 10                # 图生视频每张本地图片上限(base64 内联)
    max_reference_images: 9         # image 首帧 + reference_images 合计上限
    max_total_image_mb: 30          # 多图原始体积合计上限,防 base64 请求体失控

    # 轮询参数
    request_timeout_s: 60          # submit POST 超时(异步,只是提交)
    poll_interval_s: 5             # 单次 GET 间隔(秒);典型 30-90s 出片
    poll_timeout_s: 1200           # 总等待上限(20min)→ 超时返 [Error]+cgt_id,可 resume_task_id 续查

  seedance_2_pro:
    model_id: doubao-seedance-2-0-260128
    display_name: 豆包 Seedance 2.0 Pro
    # 同 fast 一套异步 task + 轮询接口,只换 model_id + 单价 + 分辨率上限。
    endpoint_submit: /contents/generations/tasks
    endpoint_poll: /contents/generations/tasks

    # 计费(per-token,公式同 fast):
    #   文生视频: ¥46 / Mtok  (vs fast ¥37)
    #   图生视频: ¥28 / Mtok  (vs fast ¥22)
    # 实测档位(Pro, 5s, 文生视频, 24fps):
    #   720p 16:9 → ¥4.97  (vs fast ¥4.00)
    #   1080p 16:9 → 更高(Pro 独占,fast 不支持)
    price_cny_per_mtoken_text2video: 46.0
    price_cny_per_mtoken_video2video: 28.0
    fps: 24

    # 支持参数 — Pro 支持 1080p,默认仍 720p 控成本
    default_resolution: 720p       # 480p / 720p / 1080p(Pro 独占)
    default_ratio: "16:9"
    default_duration: 5
    default_watermark: false
    default_generate_audio: false
    max_image_mb: 10
    max_reference_images: 9
    max_total_image_mb: 30

    # 轮询参数:Pro 出片慢于 Fast(更精细),拉长超时
    request_timeout_s: 60
    poll_interval_s: 5
    poll_timeout_s: 1200           # Pro 出片更慢,上限 20min;超时后同样可 resume_task_id 续查
