聊天只是 AI 的入口,真正让工作台「有用」的是多模态能力。这一篇把我日常在用的生图、读图、3D、视频工作流串起来讲:它们接口长什么样、异步任务怎么处理、成本又该怎么控。
主通道:一个接口家族搞定所有
我主力用的是火山方舟的豆包系列,最妙的是它们共享同一套调用习惯,换模型名就能换能力:
| 能力 | 模型 | 调用方式 |
|---|---|---|
| 文生图 | Seedream(生图旗舰) | 同步,一次请求返回图片 URL |
| 读图 | 豆包 VLM | 把图片喂进对话,模型描述/理解 |
| 3D 建模 | Seed3D | 异步任务:提交 → 轮询 → 下载 zip |
| 文生视频 | Seedance | 异步任务,按秒计费 |
文生图:最常用的一个
生图接口是标准的图像生成调用,一次请求直接返回图片链接。我封装了一个固定流程:生成 → 存临时文件 → 上传到附件系统 → 用绝对 URL 在对话里展示。几个实战要点:
- 响应格式:请求里指明 URL 格式,返回的临时链接有时效,要尽快保存。
- 媒体类型要对:上传附件时,声明的类型必须和实际字节匹配,否则展示不出来——存盘后先看文件头再上传。
- 展示用绝对 URL:相对路径在对话里不渲染,只有完整地址有效(这个我实测确认过)。
3D 建模:异步任务的标准姿势
3D 生成慢,所以是异步任务接口。踩过坑之后我总结出标准姿势:
1. 提交任务:POST /contents/generations/tasks
请求体必须带 content 数组,图片用 image_url 类型
2. 轮询结果:GET /tasks/<id>
status 从 running → succeeded,排队时别误判卡死
3. 下载结果:succeeded 后拿 file_url,是个 zip 包
解压出带 PBR 材质的 glb 模型文件
这里最痛的坑是请求参数名:缺了 content 报错,用错类型名也报错——接口文档写的字段名和实际要求不一致,只能靠报错信息反推。
视频:贵,先报价
文生视频按秒计费,一条几秒的小片段就要好几块钱。我的铁律是:生成前必须先提醒用户费用,确认后才提交。价格透明,是长期信任的基础。
成本控制三板斧
- 分级使用:画质要求高的走旗舰,随便看看的走平价替代,按需选档。
- 便宜的兜底:主力通道不稳定时,切到备选供应商(比如 SiliconFlow 的平价模型),保证服务不断。
- 贵的先报价:凡是按秒/按次的大额操作,一律先亮价格再执行。
工作流的意义
多模态不是「能不能调接口」,而是「整套链路顺不顺」:生成 → 保存 → 上传 → 展示,每一步都要稳定,才算真正能用。
这套工作流我现在每天都在用:画封面、看截图、建模型、剪片段。工具是死的,链路是活的——把链路理顺,AI 才真正长在了工作台上。