图片、语音、文件与富内容输出
BailingHub 可以接收图片、语音和文件输入,也可以在最终回复中返回 Markdown、附件链接和声明式富内容。上传、模型理解和前端展示是三件不同的事,应分别配置和校验。
聊天入口上传后先由媒体存储生成受控素材地址,再由路由输入策略决定如何处理:
- 图片可以识别或交给兼容的多模态模型;
- 语音可以转写或交给兼容模型;
- 文件可以作为附件保留,是否抽取正文取决于已配置的处理能力;
- 未配置对应模型或策略时,应明确降级,而不是假装已经理解内容。
具体格式、大小和数量限制属于版本化 HTTP 契约,请以固定版本文档为准。
| 内容 | 官方 Widget 行为 | 额外依赖 |
|---|---|---|
| Markdown、表格 | 原生安全展示 | 无 |
| 图片与文件链接 | 按最终回复和附件结构展示 | 无 |
| 图表 | 识别声明式 fenced payload,交给宿主预注册的可信渲染器 | 图表库由业务页面选择并安装 |
bailing-form |
官方 Widget 原生渲染受限字段、校验、提交与回执 | 无动态表单运行时 |
模型只输出声明式数据,不能输出或选择要执行的 JavaScript、HTML、CSS、远程脚本或组件代码。未注册类型、非法 JSON、超限数据或渲染错误必须安全回退为普通代码文本。
bailing-form 不是审批
Section titled “bailing-form 不是审批”bailing-form 用于收集普通信息或让用户选择。源回答已经进入 done;用户提交或取消后,Widget 在同一 thread 创建一个新的用户轮次和新 job。
它不能代替:
- 高风险工具审批;
- 登录、身份认证或授权;
- 支付确认或秘密凭据采集;
- 业务接口执行前的最终权限校验。
表单值仍是不可信用户输入。需要产生业务副作用时,新一轮任务仍必须经过正常的能力范围、审批和业务授权。
自建聊天界面要在请求中声明自己实际支持的渲染类型,只在完整 done.reply 到达后解析 fenced payload。不要在 delta 阶段挂载图表或表单,也不要使用 eval 或 innerHTML 解释模型输出。