@henjicc/ai-sdk 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/CHANGELOG.md +41 -27
  2. package/README.md +59 -46
  3. package/dist/capabilities/client.js +103 -86
  4. package/dist/capabilities/speech-recognition/bailian/realtime/module.js +42 -7
  5. package/dist/capabilities/speech-recognition/bailian/realtime/protocol.js +57 -15
  6. package/dist/capabilities/speech-recognition/volcengine/realtime/module.js +42 -10
  7. package/dist/capabilities/translation/bailian/module.js +41 -13
  8. package/dist/capabilities/translation/bailian/sse.d.ts +1 -1
  9. package/dist/capabilities/translation/bailian/sse.js +82 -54
  10. package/dist/capabilities/types.d.ts +4 -0
  11. package/dist/catalog/audio/tts-common.d.ts +5 -0
  12. package/dist/catalog/audio/tts-common.js +17 -0
  13. package/dist/catalog/bailian/cosyvoice-v3.5.model.d.ts +2 -0
  14. package/dist/catalog/bailian/cosyvoice-v3.5.model.js +40 -0
  15. package/dist/catalog/bailian/minimax-speech-2.8.model.d.ts +2 -0
  16. package/dist/catalog/bailian/minimax-speech-2.8.model.js +38 -0
  17. package/dist/catalog/bailian/qwen-audio-3.1-tts-flash.model.d.ts +2 -0
  18. package/dist/catalog/bailian/qwen-audio-3.1-tts-flash.model.js +35 -0
  19. package/dist/catalog/fal/eleven-v3-tts.model.d.ts +2 -0
  20. package/dist/catalog/fal/eleven-v3-tts.model.js +31 -0
  21. package/dist/catalog/fal/minimax-speech-2.8.model.d.ts +2 -0
  22. package/dist/catalog/fal/minimax-speech-2.8.model.js +39 -0
  23. package/dist/catalog/fal/qwen3-tts-1.7b.model.d.ts +2 -0
  24. package/dist/catalog/fal/qwen3-tts-1.7b.model.js +33 -0
  25. package/dist/catalog/index.js +116 -90
  26. package/dist/catalog/kie/eleven-turbo-2.5-tts.model.d.ts +2 -0
  27. package/dist/catalog/kie/eleven-turbo-2.5-tts.model.js +29 -0
  28. package/dist/catalog/kie/eleven-v3-dialogue.model.d.ts +2 -0
  29. package/dist/catalog/kie/eleven-v3-dialogue.model.js +46 -0
  30. package/dist/catalog/kie/gemini-3.1-flash-tts.model.d.ts +2 -0
  31. package/dist/catalog/kie/gemini-3.1-flash-tts.model.js +40 -0
  32. package/dist/catalog/ppio/minimax-speech.model.js +1 -3
  33. package/dist/catalog/siliconflow/cosyvoice2-tts.model.d.ts +2 -0
  34. package/dist/catalog/siliconflow/cosyvoice2-tts.model.js +27 -0
  35. package/dist/catalog/siliconflow/moss-ttsd-0.5.model.d.ts +2 -0
  36. package/dist/catalog/siliconflow/moss-ttsd-0.5.model.js +28 -0
  37. package/dist/catalog/volcengine-speech/seed-icl-2.0.model.d.ts +2 -0
  38. package/dist/catalog/volcengine-speech/seed-icl-2.0.model.js +26 -0
  39. package/dist/catalog/volcengine-speech/seed-tts-2.0.model.d.ts +2 -0
  40. package/dist/catalog/volcengine-speech/seed-tts-2.0.model.js +25 -0
  41. package/dist/llm/chat.js +6 -1
  42. package/dist/llm/streaming.js +131 -91
  43. package/dist/packs/models/bailian/cosyvoice-v3.5.d.ts +6 -0
  44. package/dist/packs/models/bailian/cosyvoice-v3.5.js +7 -0
  45. package/dist/packs/models/bailian/minimax-speech-2.8.d.ts +6 -0
  46. package/dist/packs/models/bailian/minimax-speech-2.8.js +7 -0
  47. package/dist/packs/models/bailian/qwen-audio-3.1-tts-flash.d.ts +6 -0
  48. package/dist/packs/models/bailian/qwen-audio-3.1-tts-flash.js +7 -0
  49. package/dist/packs/models/fal/eleven-v3-tts.d.ts +6 -0
  50. package/dist/packs/models/fal/eleven-v3-tts.js +7 -0
  51. package/dist/packs/models/fal/minimax-speech-2.8.d.ts +6 -0
  52. package/dist/packs/models/fal/minimax-speech-2.8.js +7 -0
  53. package/dist/packs/models/fal/qwen3-tts-1.7b.d.ts +6 -0
  54. package/dist/packs/models/fal/qwen3-tts-1.7b.js +7 -0
  55. package/dist/packs/models/kie/eleven-turbo-2.5-tts.d.ts +6 -0
  56. package/dist/packs/models/kie/eleven-turbo-2.5-tts.js +7 -0
  57. package/dist/packs/models/kie/eleven-v3-dialogue.d.ts +6 -0
  58. package/dist/packs/models/kie/eleven-v3-dialogue.js +7 -0
  59. package/dist/packs/models/kie/gemini-3.1-flash-tts.d.ts +6 -0
  60. package/dist/packs/models/kie/gemini-3.1-flash-tts.js +7 -0
  61. package/dist/packs/models/siliconflow/cosyvoice2-tts.d.ts +6 -0
  62. package/dist/packs/models/siliconflow/cosyvoice2-tts.js +7 -0
  63. package/dist/packs/models/siliconflow/moss-ttsd-0.5.d.ts +6 -0
  64. package/dist/packs/models/siliconflow/moss-ttsd-0.5.js +7 -0
  65. package/dist/packs/models/volcengine-speech/seed-icl-2.0.d.ts +6 -0
  66. package/dist/packs/models/volcengine-speech/seed-icl-2.0.js +7 -0
  67. package/dist/packs/models/volcengine-speech/seed-tts-2.0.d.ts +6 -0
  68. package/dist/packs/models/volcengine-speech/seed-tts-2.0.js +7 -0
  69. package/dist/packs/provider-adapters/siliconflow.d.ts +3 -0
  70. package/dist/packs/provider-adapters/siliconflow.js +5 -0
  71. package/dist/packs/provider-adapters/volcengine-speech.d.ts +3 -0
  72. package/dist/packs/provider-adapters/volcengine-speech.js +5 -0
  73. package/dist/packs/provider-packs/bailian.d.ts +1 -1
  74. package/dist/packs/provider-packs/bailian.js +6 -3
  75. package/dist/packs/provider-packs/fal.d.ts +1 -1
  76. package/dist/packs/provider-packs/fal.js +41 -38
  77. package/dist/packs/provider-packs/kie.d.ts +1 -1
  78. package/dist/packs/provider-packs/kie.js +33 -30
  79. package/dist/packs/provider-packs/siliconflow.d.ts +4 -0
  80. package/dist/packs/provider-packs/siliconflow.js +7 -0
  81. package/dist/packs/provider-packs/volcengine-speech.d.ts +4 -0
  82. package/dist/packs/provider-packs/volcengine-speech.js +7 -0
  83. package/dist/protocols/sse-events.d.ts +4 -0
  84. package/dist/protocols/sse-events.js +31 -0
  85. package/dist/providers/audio-data.d.ts +2 -0
  86. package/dist/providers/audio-data.js +21 -0
  87. package/dist/providers/bailian.js +30 -2
  88. package/dist/providers/index.js +4 -0
  89. package/dist/providers/metadata.js +8 -0
  90. package/dist/providers/siliconflow.d.ts +3 -0
  91. package/dist/providers/siliconflow.js +34 -0
  92. package/dist/providers/volcengine-speech.d.ts +3 -0
  93. package/dist/providers/volcengine-speech.js +143 -0
  94. package/dist/types/model.d.ts +4 -4
  95. package/dist/types/model.js +3 -1
  96. package/docs/consumers.md +22 -5
  97. package/docs/llm-adaptation/README.md +28 -3
  98. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/DeepSeek.md +14 -14
  99. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/Kimi.md +3 -3
  100. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//345/260/217/347/261/263MiMo.md +42 -42
  101. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//346/231/272/350/260/261GLM.md +2 -0
  102. package/docs/model-adaptation/Fun-ASR-Realtime/Fun-ASR-Realtime_/347/231/276/347/202/274.md +22 -2
  103. package/docs/model-adaptation/GLM-5.3-Flash/GLM-5.3-Flash_/346/231/272/350/260/261.md +6 -6
  104. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_APIMart.md +66 -66
  105. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Fal.md +55 -55
  106. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Grsai.md +53 -53
  107. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_KIE.md +55 -55
  108. package/docs/model-adaptation/HappyHorse-1.1/HappyHorse-1.1_KIE.md +27 -27
  109. package/docs/model-adaptation/IC-Light-v2/IC-Light-v2_Fal.md +14 -14
  110. package/docs/model-adaptation/Qwen-MT-Flash/Qwen-MT-Flash_/347/231/276/347/202/274.md +22 -1
  111. package/docs/model-adaptation/Qwen-MT-Lite/Qwen-MT-Lite_/347/231/276/347/202/274.md +2 -1
  112. package/docs/model-adaptation/Qwen-MT-Plus/Qwen-MT-Plus_/347/231/276/347/202/274.md +2 -1
  113. package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime/Qwen3-ASR-Flash-Realtime_/347/231/276/347/202/274.md +25 -2
  114. package/docs/model-adaptation/README.md +14 -10
  115. package/docs/model-adaptation/SeedASR-2.0-Realtime/SeedASR-2.0-Realtime_/347/201/253/345/261/261/345/274/225/346/223/216.md +6 -2
  116. package/docs/model-adaptation/Seedream-5.0-Flash/Seedream-5.0-Flash_/347/201/253/345/261/261/345/274/225/346/223/216.md +18 -18
  117. package/docs/model-adaptation/TTS-/345/244/232/344/276/233/345/272/224/345/225/206-2026-09.md +55 -0
  118. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//346/264/276/346/254/247/344/272/221.md +9 -9
  119. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/201/253/345/261/261/345/274/225/346/223/216.md +11 -11
  120. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274.md +31 -31
  121. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/241/205/345/237/272/346/265/201/345/212/250.md +67 -67
  122. package/docs/model-adaptation//346/226/207/346/241/243/351/207/207/351/233/206/346/211/213/345/206/214.md +8 -8
  123. package/examples/form-renderer/package.json +1 -1
  124. package/examples/llm-chat/README.md +8 -8
  125. package/examples/llm-chat/index.ts +2 -2
  126. package/examples/llm-chat/package.json +1 -1
  127. package/examples/minimal-node/package.json +1 -1
  128. package/package.json +258 -258
@@ -2,7 +2,7 @@
2
2
 
3
3
  | 项目 | 内容 |
4
4
  |---|---|
5
- | 最后更新 | 2026-08-28 |
5
+ | 最后更新 | 2026-09-24 |
6
6
  | 能力 | 文本翻译(增量流式 / 非流式) |
7
7
  | 平台模型 ID | `qwen-mt-flash` |
8
8
  | 地域 | 北京、新加坡、美国(弗吉尼亚)、德国(法兰克福);以区域模型实际开通为准 |
@@ -37,11 +37,32 @@ Authorization: Bearer <API Key>
37
37
  - Say-It 当前保存的常用语言代码会先映射为官方英文语言名;术语表映射到 `terms`,翻译记忆映射到 `tm_list`,通用 `context` 映射到英文领域提示 `domains`。
38
38
  - 未核实的独立最大输出数不设默认值,也不发送 `max_tokens`。当前只有官方示例 fixture/单测证据,尚无真实付费请求证据。
39
39
 
40
+ ### 三模型共享事件契约与回归矩阵(2026-09-24)
41
+
42
+ 本节只复核响应及生命周期,价格和输入上限未重新调研。依据同页 OpenAI 兼容 API 的流式/非流式响应定义:Flash/Lite 增量、Plus 累积;生成中 `finish_reason=null`,自然结束为 `stop`,长度截断为 `length`。官方样例包含空首帧、两次相同 `stop` 帧及 `choices=[]` 用量帧。
43
+
44
+ | 事件/序列 | SDK 行为 | 回归依据 |
45
+ |---|---|---|
46
+ | 空 `content` 中间块、连续增量/累积内容 | 等待或更新部分结果,不报失败 | 官方 fixture;既有三模型测试 |
47
+ | 重复 `stop` + 独立 usage + DONE/正常 EOF | 只产出一次完整 item;累计模型重复最终快照不重复追加 | fixture 补齐官方重复结束块;生命周期测试 |
48
+ | 空 `choices` 且有用量 | 用量通知,不作为完成依据 | 官方 usage 块 |
49
+ | 部分结果后 DONE/EOF、末块无空行 | 缺少可分发最终块时报 `provider_response_invalid`;不补造 SSE 空行 | 删除结束块/截断分隔符的受控变异 |
50
+ | `length`(流式及非流式) | `provider_task_failed`,details 保留 `finishReason=length`;不把截断译文作为完整 item | 官方枚举的受控变异 |
51
+ | 缺少 choices/content/结束原因,字段错类型,最终内容继续变化 | 明确拒绝,不作为空状态通知跳过 | 从官方结果块移除或替换字段 |
52
+ | 错误对象缺少 code、SSE `event:error`、HTTP 错误 | 明确失败,保留实际模型/协议/阶段及安全错误码;不默认输出原始 message | 错误 envelope 的受控注入 |
53
+ | 未知具名 SSE 扩展事件 | 不提供成功或失败依据;继续等已知协议结果 | 扩展通知 + 正常/缺失结束序列 |
54
+ | 取消、断流、回调失败、DONE 后连接未关闭 | 中止或失败,取消剩余流并释放锁;取消后不再发送 item/completed | Mock 流与取消回放 |
55
+
56
+ `content` 必须是字符串,但不凭经验添加“最终译文必须非空”的限制;空输入本地短路仍受取消约束。SSE 分帧与聊天共用 `src/protocols/sse-events.ts`,结果校验和增量/累积语义保持在各适配器内。
57
+
58
+ 证据:`tests/fixtures/bailian-translation/official-qwen-mt-examples.json`、`tests/bailian-qwen-mt.test.ts`、`tests/bailian-qwen-mt-lifecycle.test.ts`。负例是明确标注的受控变异,不声称来自真实付费请求。
59
+
40
60
  ## 5. 原始链接索引
41
61
 
42
62
  | 信息 | 链接 | 登录 |
43
63
  |---|---|---|
44
64
  | API/请求/响应 | https://help.aliyun.com/zh/model-studio/qwen-mt-api | 否 |
65
+ | SSE 分帧与 EOF | https://html.spec.whatwg.org/multipage/server-sent-events.html#event-stream-interpretation | 否 |
45
66
  | 选型/语言/限制 | https://help.aliyun.com/zh/model-studio/machine-translation | 否(本次访问触发验证码,未取正文) |
46
67
  | 价格 | https://help.aliyun.com/zh/model-studio/model-pricing | 否 |
47
68
  | API Key | https://bailian.console.aliyun.com/?apiKey=1#/api-key | **是** |
@@ -2,7 +2,7 @@
2
2
 
3
3
  | 项目 | 内容 |
4
4
  |---|---|
5
- | 最后更新 | 2026-08-28 |
5
+ | 最后更新 | 2026-09-24 |
6
6
  | 能力 | 文本翻译(增量流式 / 非流式) |
7
7
  | 平台模型 ID | `qwen-mt-lite` |
8
8
  | 地域 | 北京、新加坡、美国(弗吉尼亚)、德国(法兰克福);以实际开通为准 |
@@ -28,6 +28,7 @@ OpenAI 兼容 `POST /compatible-mode/v1/chat/completions` 或 DashScope `POST /a
28
28
  - 默认走 OpenAI 兼容 SSE;官方增量块归一为追加事件,使用 SDK 自带 UTF-8 增量解码器,不要求 UXP 等宿主提供 `TextDecoder`。
29
29
  - 支持 usage、术语、翻译记忆、领域提示、Say-It 常用语言代码兼容;密钥、原文和译文不写入结构化日志。
30
30
  - 未核实的独立最大输出数不设默认值,也不发送 `max_tokens`。当前只有官方示例 fixture/单测证据,尚无真实付费请求证据。
31
+ - 2026-09-24 复核结束语义、合法空帧、用量、错误、截断及取消;详见 [三模型共享事件契约与回归矩阵](../Qwen-MT-Flash/Qwen-MT-Flash_百炼.md#三模型共享事件契约与回归矩阵2026-09-24)。Lite 保持增量拼接,错误诊断保留实际 `qwen-mt-lite` 模型名。
31
32
 
32
33
  ## 4. 原始链接索引
33
34
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  | 项目 | 内容 |
4
4
  |---|---|
5
- | 最后更新 | 2026-08-28 |
5
+ | 最后更新 | 2026-09-24 |
6
6
  | 能力 | 文本翻译(非流式 / 累积流式) |
7
7
  | 平台模型 ID | `qwen-mt-plus` |
8
8
  | 地域 | 北京、新加坡、美国(弗吉尼亚)、德国(法兰克福);以实际开通为准 |
@@ -28,6 +28,7 @@ OpenAI 兼容 `POST /compatible-mode/v1/chat/completions` 或 DashScope `POST /a
28
28
  - 默认走 OpenAI 兼容 SSE;SDK 对官方累积序列计算前缀差,正常情况统一发 `delta(mode=append)`,供应商改写既有前缀时明确发 `mode=replace`,最终 `item` 始终是完整译文。
29
29
  - 支持单条/带稳定 id 的批量输入、usage 汇总、术语、翻译记忆、领域提示以及 Say-It 常用语言代码兼容。
30
30
  - 未核实的独立最大输出数不设默认值,也不发送 `max_tokens`。当前只有官方示例 fixture/单测证据,尚无真实付费请求证据。
31
+ - 2026-09-24 复核结束语义、合法空帧、重复最终快照、用量、错误、截断及取消;详见 [三模型共享事件契约与回归矩阵](../Qwen-MT-Flash/Qwen-MT-Flash_百炼.md#三模型共享事件契约与回归矩阵2026-09-24)。Plus 仍按累积快照计算变化;只有 `stop` 才交付完整 item,`length` 明确报告截断。
31
32
 
32
33
  ## 4. 原始链接索引
33
34
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  | 项目 | 内容 |
4
4
  |---|---|
5
- | 最后更新 | 2026-08-28 |
5
+ | 最后更新 | 2026-09-24 |
6
6
  | 能力 | 实时语音识别(WebSocket,VAD/Manual) |
7
7
  | 平台模型 ID | `qwen3-asr-flash-realtime`(稳定别名,官方当前等同 `qwen3-asr-flash-realtime-2025-10-27`) |
8
8
  | 地域 | 华北2(北京)、新加坡 |
@@ -24,7 +24,30 @@
24
24
 
25
25
  稳定别名与 2026-02-10 快照并列注册;不把官方当前指向的 2025-10-27 快照写死到请求构建器。该序列与 Fun-ASR 事件序列分开实现。
26
26
 
27
- ## 4. 原始链接索引
27
+ ## 4. 服务端事件矩阵(稳定别名与 2026-02-10 快照共用)
28
+
29
+ 2026-09-24 核对官方服务端事件页,字段表构造样本见 `tests/fixtures/bailian/asr-realtime-qwen.json`。ID 和文本均为固定占位;删字段、改类型为测试中的 synthetic-negative,不代表真实供应商响应。
30
+
31
+ | 事件 | 前置阶段与字段语义 | 迁移 / 输出 | 结束与资源 |
32
+ |---|---|---|---|
33
+ | `session.created` | opening;服务端默认 session,可含 null 配置 | 发送 update,等待 ready;不输出文字 | 继续 |
34
+ | `session.updated` | opening;update 成功确认 | active,通知 started | 继续 |
35
+ | `input_audio_buffer.speech_started` | VAD 检测语音;item_id 字符串、audio_start_ms 非负整数 | 已知状态通知,无文本 | 继续 |
36
+ | `input_audio_buffer.speech_stopped` | VAD 停止语音;item_id 字符串、audio_end_ms 非负整数 | 已知状态通知,不当作 final | 继续 |
37
+ | `input_audio_buffer.committed` | 音频提交确认;item_id 字符串 | 已知通知,不代替识别结果 | 继续 |
38
+ | `conversation.item.created` | item 含 input_audio,transcript 固定为 null | 已知通知;item.status=completed 不等于识别完成 | 继续 |
39
+ | `conversation.item.input_audio_transcription.text` | active/finishing;text/stash 均为字符串,任一可为空 | 原样 text + stash 作为 partial,不能分别 trim 破坏单词边界 | 继续 |
40
+ | `conversation.item.input_audio_transcription.completed` | active/finishing;transcript 字符串 | final;不以未定义的 text 字段替代缺失 transcript | 句终态,仍等待会话结束 |
41
+ | `conversation.item.input_audio_transcription.failed` | 某 item 识别失败;error.code/message | provider_task_failed,保留 code,不默认暴露完整 message | 失败并释放 |
42
+ | `error` | 任一阶段;服务端或输入错误 | 同上,不能作为空事件忽略 | 失败并释放 |
43
+ | `session.finished` | 仅客户端 finish 后;本事件无需 transcript | finishing → finished;使用累计 final,无有效 final 则 invalid_response | 主动断开,不复用 |
44
+ | 有名未知事件 | 官方未定义扩展语义 | unknown 警告,不生成完成或文本 | 等待已有协议终态 |
45
+ | 缺失 type / 错类型 / 无效必要结果字段 | 不能判定合法事件 | invalid_response,包含实际 model/protocol/阶段 | 失败并释放 |
46
+ | 提前断开 / 取消 | 任一未完成阶段;无协议恢复事件 | 断连错误或取消,不当正常完成 | 关闭连接 |
47
+
48
+ 官方展示了 text 空而 stash 非空、以及相反的中间状态,未提供两者同时为空的有效结果示例;本次不据推测放宽该边界。现有 SDK 对有效 final 的要求仍是非空 transcript。状态通知不能掩盖缺失必要状态字段;不把所有未知扩展视为错误。错误诊断仅包含模型、协议、阶段、事件类型与供应商代码,不包含密钥、音频和完整识别/错误正文。
49
+
50
+ ## 5. 原始链接索引
28
51
 
29
52
  | 信息 | 链接 | 登录 |
30
53
  |---|---|---|
@@ -5,27 +5,31 @@
5
5
 
6
6
  | 项目 | 内容 |
7
7
  |---|---|
8
- | 最后更新 | 2026-09-24 |
8
+ | 最后更新 | 2026-09-27 |
9
9
  | 模型数量 | 生成主清单 20(图片 11 / 视频 9)+ 主清单外存量 12 + SDK 跨项目能力模型 20(ASR 15 / 翻译 3 / LLM 2) |
10
10
  | 模型供应商文档数量 | 生成/存量 84 + SDK 跨项目能力 20(另有 Fal 工具 12) |
11
11
  | 覆盖供应商 | 火山引擎(官方生成/ASR)、百炼(官方)、硅基流动(官方 ASR)、智谱(官方 LLM)、Groq(官方 LLM/ASR)、APIMart、KIE、Fal、派欧云、魔搭、Grsai |
12
12
 
13
- 另有 12 个按能力按需分发的 Fal 图像工具,不进入默认 111 模型兼容目录:
13
+ 另有 12 个按能力按需分发的 Fal 图像工具,不进入默认 124 模型兼容目录:
14
14
 
15
15
  - 消除:[Flux Pro Erase](Flux-Pro-Erase/Flux-Pro-Erase_Fal.md)、[Bria Eraser](Bria-Eraser/Bria-Eraser_Fal.md)、[Finegrain Eraser](Finegrain-Eraser/Finegrain-Eraser_Fal.md)。
16
16
  - 图片实用工具:[Image Apps v2 重打光](Image-Apps-v2-重打光/Image-Apps-v2-重打光_Fal.md)、[ControlLight](ControlLight/ControlLight_Fal.md)、[Image Apps v2 扩图](Image-Apps-v2-扩图/Image-Apps-v2-扩图_Fal.md)、[Image Apps v2 商品摄影](Image-Apps-v2-商品摄影/Image-Apps-v2-商品摄影_Fal.md)、[Image Apps v2 照片修复](Image-Apps-v2-照片修复/Image-Apps-v2-照片修复_Fal.md)、[Pixelcut 背景移除](Pixelcut-背景移除/Pixelcut-背景移除_Fal.md)。
17
17
  - 多角度:[Qwen Image Edit 2511 多角度](Qwen-Image-Edit-2511-多角度/Qwen-Image-Edit-2511-多角度_Fal.md)、[透视变换](透视变换/透视变换_Fal.md)、[FLUX 2 多角度](FLUX-2-多角度/FLUX-2-多角度_Fal.md)。
18
18
 
19
- 工具均复用 Fal 队列、上传与结果解析;它们是独立的按需 SDK 入口,不是新的执行内核。Henji-AI 运行客户端显式装载三个 pack,但普通模型选择器仍固定为 111 个默认模型:六个图片实用工具通过图片能力菜单创建固定模型节点,三个多角度工具由专用多角度节点选择,消除工具保留给后续遮罩能力接入。真实质量、延迟和账单仍待获得付费授权后验证。
20
-
21
- ## 2026-09-24 已适配更新
19
+ 工具均复用 Fal 队列、上传与结果解析;它们是独立的按需 SDK 入口,不是新的执行内核。Henji-AI 运行客户端显式装载三个 pack,但普通模型选择器为 124 个默认模型:六个图片实用工具通过图片能力菜单创建固定模型节点,三个多角度工具由专用多角度节点选择,消除工具保留给后续遮罩能力接入。真实质量、延迟和账单仍待获得付费授权后验证。
22
20
 
23
- - [HappyHorse 1.1 · KIE](HappyHorse-1.1/HappyHorse-1.1_KIE.md):文生、图生与多图参考。
24
- - [Seedream 5.0 Flash · 火山方舟](Seedream-5.0-Flash/Seedream-5.0-Flash_火山引擎.md):生成、编辑与图层拆分。
25
- - [GLM Flash / FlashX](GLM-5.3-Flash/GLM-5.3-Flash_智谱.md):新增 FlashX 与 JSON 契约。
26
- - [百炼 ASR](供应商/百炼.md):新增 Qwen-Audio 3.1 三种语音识别协议预设。
27
- - [MiMo 2.6 与 Responses](../llm-adaptation/供应商/小米MiMo.md)、[Kimi 缓存价格](../llm-adaptation/供应商/Kimi.md)。
21
+ ## 2026-09-27 TTS 适配
28
22
 
23
+ [TTS 多供应商适配契约](TTS-多供应商-2026-09.md):新增 13 个文字转语音模型,覆盖 Fal、百炼、KIE、硅基流动与火山语音;派欧云 MiniMax Speech 2.8 继续使用已有接入。记录官方接口、价格、音色前提、流式响应和测试样本来源。
24
+
25
+ ## 2026-09-24 已适配更新
26
+
27
+ - [HappyHorse 1.1 · KIE](HappyHorse-1.1/HappyHorse-1.1_KIE.md):文生、图生与多图参考。
28
+ - [Seedream 5.0 Flash · 火山方舟](Seedream-5.0-Flash/Seedream-5.0-Flash_火山引擎.md):生成、编辑与图层拆分。
29
+ - [GLM Flash / FlashX](GLM-5.3-Flash/GLM-5.3-Flash_智谱.md):新增 FlashX 与 JSON 契约。
30
+ - [百炼 ASR](供应商/百炼.md):新增 Qwen-Audio 3.1 三种语音识别协议预设。
31
+ - [MiMo 2.6 与 Responses](../llm-adaptation/供应商/小米MiMo.md)、[Kimi 缓存价格](../llm-adaptation/供应商/Kimi.md)。
32
+
29
33
  ## 一、目录结构约定
30
34
 
31
35
  ### 文本 Embedding / Rerank(2026-09-11)
@@ -2,7 +2,7 @@
2
2
 
3
3
  | 项目 | 内容 |
4
4
  |---|---|
5
- | 最后更新 | 2026-08-31 |
5
+ | 最后更新 | 2026-09-24 |
6
6
  | 能力 | 双向实时语音识别(二进制 WebSocket) |
7
7
  | SDK `modelId` | `seedasr-2.0-realtime` |
8
8
  | 火山请求模型 | `request.model_name="bigmodel"` + 2.0 资源 ID `volc.seedasr.sauc.duration` |
@@ -105,7 +105,7 @@ SDK 对音频保留一块延迟:收到下一块时才把上一块以正 sequen
105
105
  | type `9`,非空 `result.text` | `partial` | 否 | 文本变化才发,重复内容去重 |
106
106
  | `result.utterances[].definite=true` | `final` | 否 | 表示句段已确定,不等于整个连接结束;按时间范围/文本去重 |
107
107
  | flag bit `2`(last) | `completed` | 是 | 只有客户端已 `finish()` 后才合法;输出 `result.text/utterances/audio_info.duration` |
108
- | type `15` | 无 | 是(错误) | 读取 uint32 错误码;错误 payload 可为 JSON 或安全 UTF-8 文本 |
108
+ | type `15` | 无 | 是(错误) | 读取 uint32 错误码;错误 payload 可为 JSON 或 UTF-8 文本,默认异常/日志只保留错误码,不带原始 message |
109
109
  | 未知 `event` 数字 | 无 | 否 | 只记脱敏 warning,仍按 type/payload 处理 |
110
110
  | WebSocket 提前断开 | 无 | 是(错误) | `provider_connection_closed`,不误报完成 |
111
111
  | text WebSocket frame | 无 | 是(错误) | 协议要求二进制,报 `invalid_response` |
@@ -114,6 +114,10 @@ SDK 对音频保留一块延迟:收到下一块时才把上一块以正 sequen
114
114
 
115
115
  用户主动取消只关闭连接,不发送负 sequence 终帧,也不把取消伪装成正常完成。full request 默认在 15 秒内必须收到首个服务端响应,可用 `openTimeoutMs` 显式调整;超时会关闭半开连接。`finish()`、连接释放和显式 `close()` 都幂等;发送失败、服务端错误、断线、超时和取消都走同一个释放边界。
116
116
 
117
+ 同一响应帧可能同时产生 partial 与一个或多个 final。每次事件回调后重新检查取消/关闭,避免调用方在 partial 回调取消后,SDK 仍继续发出该帧的 final;该场景使用官方响应 payload 调整 last 标志构造,不代表新的供应商事件类型。
118
+
119
+ 2026-09-24 诊断复核:异常 details 保留实际 `modelId=seedasr-2.0-realtime`、`protocol=volcengine-binary-v1`、会话阶段、操作与最后一帧的序号/event/last 标志。原始服务端 message 和宿主异常可能包含识别内容或凭据,不进入默认诊断。握手失败后若关闭也失败,继续报告首个故障,并附 `cleanupFailed=true`。`volcengine-realtime-asr.test.ts` 使用既有官方帧结构、受控敏感文本错误与 Mock close 拒绝验证这些边界;不是额外真实服务实录。
120
+
117
121
  ## 5. 价格与免费额度
118
122
 
119
123
  | 项目 | 官方公开值 |
@@ -1,18 +1,18 @@
1
- # Seedream 5.0 Flash · 火山方舟
2
-
3
- 核对日期:2026-09-24;公开无需登录,未执行付费生成。
4
-
5
- 来源:[发布公告](https://docs.volcengine.com/docs/ark/model-release-announcement?lang=zh)、[Pro / Flash 教程](https://docs.volcengine.com/docs/ark/seedream-5-0-pro?lang=zh)、[价格](https://docs.volcengine.com/docs/ark/model-pricing?lang=zh)。官方明确基础调用只替换 Model ID,公共契约复用 Pro 实现。
6
-
7
- - Model ID:`doubao-seedream-5-0-flash-260915`;`POST https://ark.cn-beijing.volces.com/api/v3/images/generations`,Bearer 认证。
8
- - 文生、图生/多图参考、交互编辑、图层拆分;输入上限 10 张,拆分必须 1 张;1K/1.5K/2K,PNG/JPEG;Flash 只支持标准提示词优化。
9
- - SDK 沿用 Pro 的生成/编辑与拆分模式、图片上传、智能比例和结构化图层输出。旧 Pro 参数名与模型 ID 保持不变。
10
- - 输入图免费,输出 ¥0.12/张;拆分数量只有返回后可知,提交前返回不可估算,不能显示 ¥0.12 为整单总价。
11
-
12
- | 响应 | 字段与行为 |
13
- |---|---|
14
- | 同步成功 | `data` 图片数组,`url` 字符串;由共享图片适配器收集 URL |
15
- | 图层拆分 | 与 Pro 相同的 layers/base-image 元数据,经 `parseSeedreamLayerStack` 返回结构化图层 |
16
- | 错误、缺失产物、取消 | 沿共享 Volcengine provider 失败收口;不把空结果当成功,不建立重复收费重试 |
17
-
18
- 官方字面调用中的 Pro Model ID 可按同页明确说明替换成 Flash;测试将此区别标为官方字段构造,不能冒充 Flash 真网样本。共享 Pro 正反测试继续运行,新增 Flash 定向验证模型路由、图片限制、价格和拆分不可估算。
1
+ # Seedream 5.0 Flash · 火山方舟
2
+
3
+ 核对日期:2026-09-24;公开无需登录,未执行付费生成。
4
+
5
+ 来源:[发布公告](https://docs.volcengine.com/docs/ark/model-release-announcement?lang=zh)、[Pro / Flash 教程](https://docs.volcengine.com/docs/ark/seedream-5-0-pro?lang=zh)、[价格](https://docs.volcengine.com/docs/ark/model-pricing?lang=zh)。官方明确基础调用只替换 Model ID,公共契约复用 Pro 实现。
6
+
7
+ - Model ID:`doubao-seedream-5-0-flash-260915`;`POST https://ark.cn-beijing.volces.com/api/v3/images/generations`,Bearer 认证。
8
+ - 文生、图生/多图参考、交互编辑、图层拆分;输入上限 10 张,拆分必须 1 张;1K/1.5K/2K,PNG/JPEG;Flash 只支持标准提示词优化。
9
+ - SDK 沿用 Pro 的生成/编辑与拆分模式、图片上传、智能比例和结构化图层输出。旧 Pro 参数名与模型 ID 保持不变。
10
+ - 输入图免费,输出 ¥0.12/张;拆分数量只有返回后可知,提交前返回不可估算,不能显示 ¥0.12 为整单总价。
11
+
12
+ | 响应 | 字段与行为 |
13
+ |---|---|
14
+ | 同步成功 | `data` 图片数组,`url` 字符串;由共享图片适配器收集 URL |
15
+ | 图层拆分 | 与 Pro 相同的 layers/base-image 元数据,经 `parseSeedreamLayerStack` 返回结构化图层 |
16
+ | 错误、缺失产物、取消 | 沿共享 Volcengine provider 失败收口;不把空结果当成功,不建立重复收费重试 |
17
+
18
+ 官方字面调用中的 Pro Model ID 可按同页明确说明替换成 Flash;测试将此区别标为官方字段构造,不能冒充 Flash 真网样本。共享 Pro 正反测试继续运行,新增 Flash 定向验证模型路由、图片限制、价格和拆分不可估算。
@@ -0,0 +1,55 @@
1
+ # TTS 多供应商适配契约(2026-09-27)
2
+
3
+ 本文件记录本次 SDK 适配所需的供应商原始契约。范围限定为文字转语音和对话语音;声音训练、音乐生成不在本次模型清单内。用户确认:公开价格可核实时显示估算;无法由输入参数可靠估算的价格不显示估算。
4
+
5
+ ## 模型与请求矩阵
6
+
7
+ | 平台 | 模型 / 路由 | 协议、输出 | 公开价格 | 官方依据 |
8
+ | --- | --- | --- | --- | --- |
9
+ | 派欧云 | MiniMax Speech 2.8 HD / Turbo | 已有 `/async/minimax-speech-2.8-{hd,turbo}` 轮询;音频 URL | HD ¥3.5、Turbo ¥2 / 万字符 | [派欧云 HD](https://ppio.com/docs/models/reference-minimax-speech-2.8-hd)、[派欧云异步 HD](https://ppio.com/docs/models/reference-minimax-speech-2.8-hd-async) |
10
+ | Fal | `fal-ai/minimax/speech-2.8-hd`、`fal-ai/minimax/speech-2.8-turbo` | Fal queue;`audio.url` | HD $0.10、Turbo $0.06 / 千字符 | [HD API](https://fal.ai/models/fal-ai/minimax/speech-2.8-hd/api)、[Turbo API](https://fal.ai/models/fal-ai/minimax/speech-2.8-turbo/api)、[HD 定价](https://fal.ai/models/fal-ai/minimax/speech-2.8-hd)、[Turbo 定价](https://fal.ai/models/fal-ai/minimax/speech-2.8-turbo) |
11
+ | Fal | `fal-ai/qwen-3-tts/text-to-speech/1.7b` | Fal queue;`audio.url` | $0.09 / 千字符 | [API](https://fal.ai/models/fal-ai/qwen-3-tts/text-to-speech/1.7b/api)、[定价](https://fal.ai/models/fal-ai/qwen-3-tts/text-to-speech/1.7b) |
12
+ | Fal | `fal-ai/elevenlabs/tts/eleven-v3` | Fal queue;`audio.url` | $0.10 / 千字符 | [API](https://fal.ai/models/fal-ai/elevenlabs/tts/eleven-v3/api)、[定价](https://fal.ai/models/fal-ai/elevenlabs/tts/eleven-v3) |
13
+ | 百炼 | `MiniMax/speech-2.8-hd`、`MiniMax/speech-2.8-turbo` | 同步 HTTP;`output.data.audio` 为 hex | HD ¥3.5、Turbo ¥2 / 万字符 | [API](https://help.aliyun.com/zh/model-studio/minimax-synchronous-speech-synthesis-api)、[定价](https://help.aliyun.com/zh/model-studio/model-pricing) |
14
+ | 百炼 | `qwen-audio-3.1-tts-flash` | 同步 HTTP;`output.audio.url`,有效期 24 小时 | 输入 ¥1.5 / 百万 Token、输出 ¥12 / 百万 Token;提交前无法准确估算输出 Token | [API](https://help.aliyun.com/zh/model-studio/cosyvoice-tts-http-api)、[模型价格](https://help.aliyun.com/zh/model-studio/qwen-audio-3-1-tts-flash) |
15
+ | 百炼 | `cosyvoice-v3.5-flash`、`cosyvoice-v3.5-plus` | 同步 HTTP;`output.audio.url`,有效期 24 小时 | Flash ¥0.8、Plus ¥1.5 / 万字符 | [API](https://help.aliyun.com/zh/model-studio/cosyvoice-tts-http-api)、[定价](https://help.aliyun.com/zh/model-studio/model-pricing) |
16
+ | KIE | `google/gemini-3-1-flash-tts` | `createTask` + `recordInfo`;`resultJson.resultUrls` | 输入 $0.7、音频输出 $14 / 百万 Token;提交前无法准确估算输出 Token | [API](https://docs.kie.ai/market/google/gemini-3-1-flash-tts)、[定价](https://kie.ai/pricing) |
17
+ | KIE | `elevenlabs/text-to-speech-turbo-2-5` | 同上 | $0.03 / 千字符 | [API](https://docs.kie.ai/market/elevenlabs/text-to-speech-turbo-2-5)、[定价](https://kie.ai/pricing) |
18
+ | KIE | `elevenlabs/text-to-dialogue-v3` | 同上;输入为 `input.dialogue[]` | $0.07 / 千字符 | [API](https://docs.kie.ai/market/elevenlabs/text-to-dialogue-v3)、[定价](https://kie.ai/pricing) |
19
+ | 火山引擎 | `seed-tts-2.0`、`seed-icl-2.0` | V3 HTTP Chunked;逐帧 JSON 的 `data` 为 base64 音频块 | 资源包有公开价;按量单价仍需进一步核实,暂不显示预估 | [V3 HTTP](https://docs.volcengine.com/docs/DoubaoVoice/unidirectional-streaming-text-to-speech-http?lang=zh)、[产品价格入口](https://docs.volcengine.com/docs/DoubaoVoice?lang=zh) |
20
+ | 硅基流动 | `FunAudioLLM/CosyVoice2-0.5B`、`fnlp/MOSS-TTSD-v0.5` | `POST /v1/audio/speech`;直接返回音频二进制 | ¥0.05 / 千 UTF-8 字符 | [API](https://docs.siliconflow.cn/docs/api/audio-speech-post)、[定价](https://siliconflow.cn/pricing) |
21
+
22
+ 百炼的专属业务空间域名为推荐项,官方明确现有 `dashscope.aliyuncs.com` 域名继续可用;SDK 使用现有域名和北京地域 API Key。百炼 MiniMax 与 Qwen/CosyVoice 的路由不同,不能混用。CosyVoice 3.5 无系统音色,必须使用先前创建的复刻或设计音色 ID。火山语音 V3 使用独立的 `X-Api-Key`,SDK 单列 `volcengine-speech` 供应商以免覆盖方舟图片模型的 Key;复刻音色请求须设 `req_params.model=seed-tts-2.0-standard`。火山 V1 非流式接口明确不支持 Seed-TTS 2.0 音色,不能作为 V3 替代。[百炼 API](https://help.aliyun.com/zh/model-studio/cosyvoice-tts-http-api)、[CosyVoice 音色限制](https://help.aliyun.com/zh/model-studio/non-realtime-tts-user-guide)、[火山 V3](https://docs.volcengine.com/docs/DoubaoVoice/unidirectional-streaming-text-to-speech-http?lang=zh)、[火山 V1 说明](https://docs.volcengine.com/docs/DoubaoVoice/HTTPone-timecompositenon-streaminginterface-V1notrecommended?lang=zh)。
23
+
24
+ ## 事件与终态契约
25
+
26
+ | 协议 | 前置/中间状态 | 成功终态与输出 | 失败/空值处理 | 断线、取消和复用 |
27
+ | --- | --- | --- | --- | --- |
28
+ | Fal queue | 提交返回 `request_id` 或 `status_url`;状态 `IN_QUEUE` / `IN_PROGRESS` | `COMPLETED` 后取 `response_url`,要求 `audio.url` | `FAILED`、无结果 URL 报错;状态字段缺失报错 | 中断信号取消本地等待;远端任务是否被取消,官方未说明。状态 URL 限定 Fal queue 域名。 |
29
+ | KIE jobs | 创建返回 `data.taskId`;查询 `waiting` / `queuing` / `generating` | `success`,解析 `data.resultJson.resultUrls` | `fail` 或查询错误报错;空结果报错 | 中断信号取消本地等待;远端任务取消/恢复官方未说明。 |
30
+ | 百炼非流式 HTTP | 单次 JSON 响应;不产生中间事件 | Qwen/CosyVoice `output.finish_reason=stop` 且 `output.audio.url`;MiniMax `output.base_resp.status_code=0`、`output.data.status=2` 且 hex 音频 | 缺输出、错误码、空音频报错 | 中断 HTTP 请求;连接复用由 HTTP transport 处理。 |
31
+ | 火山 V3 HTTP Chunked | 一次提交,分块读取 JSON;每个 `code=0` 的非空 `data` 是音频块 | 完整读取至服务端终止,按原序拼接全部音频块;`usage.text_words` 为计费字符 | `code!=0` 报错;无音频块报错;未完整终止不得产出音频 | 中断信号终止读取并释放 reader;断线不重放付费请求。帧乱序/断线恢复官方未说明。 |
32
+ | 硅基流动 HTTP | 单次请求 | 2xx 且非空音频二进制 | 非 2xx 或空 body 报错 | 中断 HTTP 请求;无任务轮询。 |
33
+
34
+ 以上只接入各平台已证实的非流式完整结果路径。Fal 本身的 streaming 和百炼 SSE 属于另外的可选协议,不因页面支持 streaming 就默认在本次实现中启用。官方示例中的占位音频与签名 URL 只用于字段契约 fixture,不能据此宣称真实付费生成成功。
35
+
36
+ ### 火山 V3 分块事件矩阵
37
+
38
+ 官方把每个 HTTP 分块描述为 JSON 消息;HTTP 读取边界可能拆开或合并 JSON 消息,因此 SDK 按完整 JSON 对象切帧。`code` 为必填数字,`data` 为可选 base64 音频字符串,`usage.text_words` 为可选数字;空 `data` 或缺失 `data` 不产生音频。官方未说明帧乱序、重复、断线恢复或远端任务取消语义,SDK 不对付费 POST 自动重放。
39
+
40
+ | 事件/状态 | 前置状态 | 字段契约(required / optional / nullable) | 空值/缺字段语义 | 下一状态 | 对外输出 | 副作用 | 终态/错误 | 连接复用 |
41
+ | --- | --- | --- | --- | --- | --- | --- | --- | --- |
42
+ | 成功音频帧 `code=0` | 请求已提交、流读取中 | `code: number` 必填;`data: string` 可选;`usage.text_words: number` 可选 | 空/缺 `data` 无音频;`null` 不是可解码音频 | 继续读取 | 累积音频块和最近一次用量 | base64 解码、顺序追加 | 非终态 | 继续读取同一响应 |
43
+ | 服务错误帧 `code!=0` | 流读取中 | `code: number` 必填;`message: string` 可选 | 缺 `message` 使用通用错误 | 失败 | 错误 | 释放 reader | 错误终态 | 不复用该响应 |
44
+ | 正常 EOF | 流读取中 | 无新的 JSON 字段 | 尚有不完整 JSON 为无效响应;全程无有效音频为空结果 | 完成或失败 | 单个音频 data URI | 拼接所有音频块、释放 reader | 本地终态;官方未提供单独 final 字段 | 请求结束 |
45
+ | 中断或断线 | 流读取中 | `AbortSignal` 或 HTTP 读取故障 | 不交付部分音频 | 失败/取消 | 原因错误 | 取消并释放 reader | 本地终态;断线能否恢复官方未说明 | 不重放写请求 |
46
+
47
+ 状态机不变量:只有正常 EOF 且至少一个非空音频块才能成功;空中间帧可重复;帧中的 JSON 字符串可跨网络分块;错误或取消后不得返回已经累积的部分音频。正常、失败及取消均释放 reader。Fal/KIE 的既有 queue/jobs 状态机沿用原适配器,新增模型仅提供官方 model ID、请求构建和媒体输出字段,不新增轮询协议分支。
48
+
49
+ ## 参数边界
50
+
51
+ - 各模型的文本来自 SDK 统一 `prompt`/`text` 输入,转换到供应商要求的 `prompt`、`text` 或嵌套 `input.text`。
52
+ - 音色使用各平台官方音色 ID;复刻音色仅允许已在供应商侧取得的 ID,不在本次为训练/上传建立新流程。
53
+ - KIE Gemini 3.1 使用 `speakers[]` 与 `dialogue_turns[]`;Eleven v3 对话使用 `dialogue[]`。SDK 在仅有普通文本时明确构建单说话人/单台词数组;调用方传入结构化数组时保留多说话人能力。痕迹AI 当前通用参数面板只暴露单说话人文本入口。
54
+ - 音频块和二进制响应在 SDK 边界转换为 `data:audio/...;base64,...`,交给宿主已有媒体落盘边界;不得只返回原始 base64/hex 字符串。
55
+ - 派欧云 2.8 的 `emotion`:MiniMax 原厂说明支持情感,但派欧云异步参考页写为仅 2.6/01 生效。平台契约冲突,不能将原厂能力直接视为派欧云 2.8 能力;需在该平台屏蔽未证实的情感选项。[派欧云异步 HD](https://ppio.com/docs/models/reference-minimax-speech-2.8-hd-async)。
@@ -136,12 +136,12 @@ MiniMax Speech 的公开商品注册表使用 `(单价 × 字符数 + 999999) /
136
136
  | API 鉴权方式 | https://ppio.com/docs/api/authentication | 否 |
137
137
  | API 错误码 | https://ppio.com/docs/api/error-codes | 否 |
138
138
  | API Key 管理 | https://ppio.com/settings/key-management | **是** |
139
- # 2026-09-11:文本检索能力
140
-
141
- 公开来源:https://ppio.com/model/embedding/baai/bge-m3 、https://ppio.com/model/reranker/baai/bge-reranker-v2-m3 、https://ppio.com/docs/models/reference-llm-create-rerank 、https://ppio.com/docs/announcement/announcement 。
142
-
143
- - Bearer JSON POST,根地址 `https://api.ppio.com/openai/v1`;Embedding `/embeddings`,Rerank `/rerank`。注意与旧文档 `/v3/openai` 不混用。
144
- - `baai/bge-m3`:input 字符串或数组,encoding_format=float;8192 token上下文,返回 data[].embedding/index。输入0.07元/百万 token,输出0。
145
- - `baai/bge-reranker-v2-m3`:model/query/documents/top_n;返回 results[].index/relevance_score、可选 document.text、usage.prompt_tokens/completion_tokens/total_tokens。模型页显示输入/输出均0.07元/百万 token。未公布最大文档数量,不猜限制。
146
- - `qwen/qwen3-reranker-8b` 已在2026-01-08下线公告中列出,不因旧上架文章仍可搜索就重新加入。
147
- - 同步成功必须有合法结果;错误响应、缺失/重复/越界索引、非有限数值拒绝。取消沿用 AbortSignal,不自动截断或重试。SDK 返回对应输入文本,不依赖供应商是否回传原文。
139
+ # 2026-09-11:文本检索能力
140
+
141
+ 公开来源:https://ppio.com/model/embedding/baai/bge-m3 、https://ppio.com/model/reranker/baai/bge-reranker-v2-m3 、https://ppio.com/docs/models/reference-llm-create-rerank 、https://ppio.com/docs/announcement/announcement 。
142
+
143
+ - Bearer JSON POST,根地址 `https://api.ppio.com/openai/v1`;Embedding `/embeddings`,Rerank `/rerank`。注意与旧文档 `/v3/openai` 不混用。
144
+ - `baai/bge-m3`:input 字符串或数组,encoding_format=float;8192 token上下文,返回 data[].embedding/index。输入0.07元/百万 token,输出0。
145
+ - `baai/bge-reranker-v2-m3`:model/query/documents/top_n;返回 results[].index/relevance_score、可选 document.text、usage.prompt_tokens/completion_tokens/total_tokens。模型页显示输入/输出均0.07元/百万 token。未公布最大文档数量,不猜限制。
146
+ - `qwen/qwen3-reranker-8b` 已在2026-01-08下线公告中列出,不因旧上架文章仍可搜索就重新加入。
147
+ - 同步成功必须有合法结果;错误响应、缺失/重复/越界索引、非有限数值拒绝。取消沿用 AbortSignal,不自动截断或重试。SDK 返回对应输入文本,不依赖供应商是否回传原文。
@@ -1,14 +1,14 @@
1
- # 火山引擎 · 供应商基础文档
2
-
3
- ## 2026-09-11 文本检索核对
4
-
5
- 方舟当前 `doubao-embedding-vision-251215` 通过 `POST https://ark.cn-beijing.volces.com/api/v3/embeddings/multimodal` 调用,Bearer API Key。SDK 本轮只暴露文本:`input: [{type:"text",text}]`,固定 float,维度 1024/2048;响应 `data.embedding` 是单个融合向量,故每次只接受一条文本,拒绝把多个独立文档合并。usage 使用 prompt_tokens/total_tokens。省略维度时供应商默认 2048。
6
-
7
- - [官方接口字段](https://www.volcengine.com/docs/82379/1523520):HTTP 成功但缺向量、空向量或非数值向量均判错误;HTTP 失败、取消、超时不产生成功结果、不自动重试。
8
- - [模型使用说明](https://www.volcengine.com/docs/82379/1409291)、[官方价格](https://www.volcengine.com/docs/82379/1544106):文本输入 0.70 元/百万 tokens,图片 1.80 元/百万 tokens(本入口不收图片)。
9
- - [官方 OpenViking 配置](https://github.com/volcengine/OpenViking/blob/main/docs/en/guides/01-configuration.md):VikingDB Rerank 使用 AK/SK,与方舟 Bearer 是不同服务;本轮未实现其签名协议,不宣称火山没有重排模型。
10
-
11
- 官方页面 HTML 中 MDContent 可读取,浏览器路径本次连接失败。模拟字段 fixture,不是真实付费请求。
1
+ # 火山引擎 · 供应商基础文档
2
+
3
+ ## 2026-09-11 文本检索核对
4
+
5
+ 方舟当前 `doubao-embedding-vision-251215` 通过 `POST https://ark.cn-beijing.volces.com/api/v3/embeddings/multimodal` 调用,Bearer API Key。SDK 本轮只暴露文本:`input: [{type:"text",text}]`,固定 float,维度 1024/2048;响应 `data.embedding` 是单个融合向量,故每次只接受一条文本,拒绝把多个独立文档合并。usage 使用 prompt_tokens/total_tokens。省略维度时供应商默认 2048。
6
+
7
+ - [官方接口字段](https://www.volcengine.com/docs/82379/1523520):HTTP 成功但缺向量、空向量或非数值向量均判错误;HTTP 失败、取消、超时不产生成功结果、不自动重试。
8
+ - [模型使用说明](https://www.volcengine.com/docs/82379/1409291)、[官方价格](https://www.volcengine.com/docs/82379/1544106):文本输入 0.70 元/百万 tokens,图片 1.80 元/百万 tokens(本入口不收图片)。
9
+ - [官方 OpenViking 配置](https://github.com/volcengine/OpenViking/blob/main/docs/en/guides/01-configuration.md):VikingDB Rerank 使用 AK/SK,与方舟 Bearer 是不同服务;本轮未实现其签名协议,不宣称火山没有重排模型。
10
+
11
+ 官方页面 HTML 中 MDContent 可读取,浏览器路径本次连接失败。模拟字段 fixture,不是真实付费请求。
12
12
 
13
13
  | 项目 | 内容 |
14
14
  |---|---|
@@ -249,34 +249,34 @@ Qwen-MT 可通过 OpenAI 兼容 `POST /compatible-mode/v1/chat/completions` 或
249
249
  | 提交/轮询/结果 | oss://及X-DashScope-OssResourceResolve;原有状态契约不变 | 完成转写输出 | 上传失败不提交识别;取消停止轮询,不宣称撤销远端任务 |
250
250
 
251
251
  实际时长不是仅由文件大小决定;PCM需采样率/声道/位深及payload字节数,压缩格式需要元数据时长,缺失返回null。新契约不自动修复只抛中文字符串的旧RPC桥。官方凭证fixture:tests/fixtures/bailian/asr-upload-policy.json;其余响应复用原有官方ASR fixtures,未生成付费请求。
252
-
253
- ## 2026-09-24 Qwen-Audio 3.1 ASR
254
-
255
- 公开官方文档无需登录:[短音频 HTTP](https://help.aliyun.com/zh/model-studio/fun-asr-flash-recorded-speech-recognition-http-api)、[文件转写](https://help.aliyun.com/zh/model-studio/fun-asr-recorded-speech-recognition-http-api)、[实时客户端](https://help.aliyun.com/zh/model-studio/fun-asr-client-events)、[实时服务端](https://help.aliyun.com/zh/model-studio/fun-asr-server-events)。未执行付费请求。
256
-
257
- 新增 qwen-audio-3.1-asr-flash / -filetrans / -streaming,分别复用 Fun 短音频、异步文件和 duplex WebSocket 契约,不能套用旧 Qwen3 Chat / Realtime API。域名支持宿主注入工作空间 apiBaseUrl / funWebSocketUrl,不猜工作空间 ID。短音频远端文件上限 2 GB / 5 分钟;Base64 文档仍要求编码后 10 MB,内联原始限制 7.5 MB。文件转写≤2 GB / 12h,分离建议≤2h。
258
-
259
- | 协议事件 | 字段与状态规则 |
260
- |---|---|
261
- | 短音频 JSON / SSE result | output.text 累计文本;sentence 或分离时 sentences 数组;sentence_end:boolean,speaker_id:integer/null,begin_time/end_time 毫秒。短于一分钟可直接返回 JSON,不能强制只读 SSE |
262
- | 句末 | 合并去重句子,保留 speaker_id;usage.duration 秒,3.1 另有 input/output/total_tokens |
263
- | HTTP / SSE 错误 | code/message 非成功时抛错;畸形 JSON 或无文本拒绝 |
264
- | 文件提交/轮询 | input.file_urls:string[](单文件),parameters 必须传对象;PENDING→RUNNING→SUCCEEDED/FAILED;results[].subtask_status 单独核对,成功读取 transcription_url |
265
- | WS | run-task→task-started→result-generated→finish-task→task-finished;task-failed 终止;未知事件沿共享状态机处理 |
266
- | 取消/断连/超时 | 使用 AbortSignal / 共享 WebSocket 生命周期释放;不创建第二个计费任务 |
267
-
268
- 新增 keepDialect 和即时 vocabulary 参数;实时支持 vadModel。短音频说话人分离发送 speaker_diarization_enabled,文件转写发送 diarization_enabled。文件 channel_id 必须是整数数组,公共单声道选择 channelId 映射为 [channelId];旧 Qwen3 file_url 契约不改变。短音频 sample_rate 按官方字符串发送,用户上下文 type=input_text。speakerId 作为可选公共输出字段,旧调用兼容。短音频按 tokens 计费,文件与实时不能沿用其 token 单价;未新增不可靠费用计算器。
269
-
270
- 精确测试复用既有共享异步/实时失败、取消与释放测试,并补充 3.1 JSON/SSE、说话人分离、空 parameters 与新参数路由。样本区分字面与字段构造。
271
-
272
- ### 2026-09-24 实时空文本中间帧实测补充
273
-
274
- 以合成语音、合法 `SpeechRecognitionRealtimeStart` 在 SDK 0.6.0 直调 `qwen-audio-3.1-asr-flash-streaming`,复现句首事件之后继续返回 `text=""`、`sentence_end=false`、`end_time=null`、无 `sentence_begin` 的中间帧。官方事件页(https://help.aliyun.com/zh/model-studio/fun-asr-server-events,2026-09-24 核对)说明只有新句首个中间结果包含句首标记;空文本后续帧来自本次实测,并非官方字面示例。
275
-
276
- |事件|前置状态|字段与空值|状态/输出|错误与资源|
277
- |---|---|---|---|---|
278
- |空文本中间帧|任务已开始|text 是空字符串,sentence_end=false;sentence_begin 可省略,end_time 可为 null|保持会话,继续等待,不产生 partial/final|不关闭连接|
279
- |缺 text 或缺句子状态的无文本帧|任务已开始|缺字段/类型错误不能等同空字符串|invalid_response|失败并释放连接|
280
- |空 final 或全程无 final|任务已开始|sentence_end=true 但无文字,或 task-finished 前无 final|仍拒绝空结果|失败并释放连接|
281
-
282
- fixture `asr-realtime-fun.json.emptyIntermediate` 是实测脱敏结构。共享 Fun Duplex parser 的两个 Fun-ASR ID 与 Qwen-Audio 3.1 streaming 均沿同一规则;Qwen Realtime 独立解析器不受影响。
252
+
253
+ ## 2026-09-24 Qwen-Audio 3.1 ASR
254
+
255
+ 公开官方文档无需登录:[短音频 HTTP](https://help.aliyun.com/zh/model-studio/fun-asr-flash-recorded-speech-recognition-http-api)、[文件转写](https://help.aliyun.com/zh/model-studio/fun-asr-recorded-speech-recognition-http-api)、[实时客户端](https://help.aliyun.com/zh/model-studio/fun-asr-client-events)、[实时服务端](https://help.aliyun.com/zh/model-studio/fun-asr-server-events)。未执行付费请求。
256
+
257
+ 新增 qwen-audio-3.1-asr-flash / -filetrans / -streaming,分别复用 Fun 短音频、异步文件和 duplex WebSocket 契约,不能套用旧 Qwen3 Chat / Realtime API。域名支持宿主注入工作空间 apiBaseUrl / funWebSocketUrl,不猜工作空间 ID。短音频远端文件上限 2 GB / 5 分钟;Base64 文档仍要求编码后 10 MB,内联原始限制 7.5 MB。文件转写≤2 GB / 12h,分离建议≤2h。
258
+
259
+ | 协议事件 | 字段与状态规则 |
260
+ |---|---|
261
+ | 短音频 JSON / SSE result | output.text 累计文本;sentence 或分离时 sentences 数组;sentence_end:boolean,speaker_id:integer/null,begin_time/end_time 毫秒。短于一分钟可直接返回 JSON,不能强制只读 SSE |
262
+ | 句末 | 合并去重句子,保留 speaker_id;usage.duration 秒,3.1 另有 input/output/total_tokens |
263
+ | HTTP / SSE 错误 | code/message 非成功时抛错;畸形 JSON 或无文本拒绝 |
264
+ | 文件提交/轮询 | input.file_urls:string[](单文件),parameters 必须传对象;PENDING→RUNNING→SUCCEEDED/FAILED;results[].subtask_status 单独核对,成功读取 transcription_url |
265
+ | WS | run-task→task-started→result-generated→finish-task→task-finished;task-failed 终止;未知事件沿共享状态机处理 |
266
+ | 取消/断连/超时 | 使用 AbortSignal / 共享 WebSocket 生命周期释放;不创建第二个计费任务 |
267
+
268
+ 新增 keepDialect 和即时 vocabulary 参数;实时支持 vadModel。短音频说话人分离发送 speaker_diarization_enabled,文件转写发送 diarization_enabled。文件 channel_id 必须是整数数组,公共单声道选择 channelId 映射为 [channelId];旧 Qwen3 file_url 契约不改变。短音频 sample_rate 按官方字符串发送,用户上下文 type=input_text。speakerId 作为可选公共输出字段,旧调用兼容。短音频按 tokens 计费,文件与实时不能沿用其 token 单价;未新增不可靠费用计算器。
269
+
270
+ 精确测试复用既有共享异步/实时失败、取消与释放测试,并补充 3.1 JSON/SSE、说话人分离、空 parameters 与新参数路由。样本区分字面与字段构造。
271
+
272
+ ### 2026-09-24 实时空文本中间帧实测补充
273
+
274
+ 以合成语音、合法 `SpeechRecognitionRealtimeStart` 在 SDK 0.6.0 直调 `qwen-audio-3.1-asr-flash-streaming`,复现句首事件之后继续返回 `text=""`、`sentence_end=false`、`end_time=null`、无 `sentence_begin` 的中间帧。官方事件页(https://help.aliyun.com/zh/model-studio/fun-asr-server-events,2026-09-24 核对)说明只有新句首个中间结果包含句首标记;空文本后续帧来自本次实测,并非官方字面示例。
275
+
276
+ |事件|前置状态|字段与空值|状态/输出|错误与资源|
277
+ |---|---|---|---|---|
278
+ |空文本中间帧|任务已开始|text 是空字符串,sentence_end=false;sentence_begin 可省略,end_time 可为 null|保持会话,继续等待,不产生 partial/final|不关闭连接|
279
+ |缺 text 或缺句子状态的无文本帧|任务已开始|缺字段/类型错误不能等同空字符串|invalid_response|失败并释放连接|
280
+ |空 final 或全程无 final|任务已开始|sentence_end=true 但无文字,或 task-finished 前无 final|仍拒绝空结果|失败并释放连接|
281
+
282
+ fixture `asr-realtime-fun.json.emptyIntermediate` 是实测脱敏结构。共享 Fun Duplex parser 的两个 Fun-ASR ID 与 Qwen-Audio 3.1 streaming 均沿同一规则;Qwen Realtime 独立解析器不受影响。