@henjicc/ai-sdk 0.4.1 → 0.5.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 (36) hide show
  1. package/CHANGELOG.md +36 -23
  2. package/README.md +61 -47
  3. package/dist/capabilities/media-request.d.ts +17 -0
  4. package/dist/capabilities/media-request.js +121 -0
  5. package/dist/capabilities/speech-recognition/bailian/module.js +21 -26
  6. package/dist/capabilities/speech-recognition/bailian/presets.js +5 -3
  7. package/dist/capabilities/speech-recognition/bailian/upload.js +32 -18
  8. package/dist/capabilities/speech-recognition/groq/module.js +15 -18
  9. package/dist/capabilities/speech-recognition/groq/types.d.ts +1 -1
  10. package/dist/capabilities/speech-recognition/siliconflow/module.js +7 -17
  11. package/dist/providers/provider-fetch.js +48 -14
  12. package/dist/runtime/AiRuntimeError.d.ts +2 -1
  13. package/dist/runtime/AiRuntimeError.js +3 -1
  14. package/dist/runtime/MediaReader.d.ts +24 -2
  15. package/dist/runtime/MediaReader.js +39 -1
  16. package/dist/runtime/Transport.d.ts +19 -0
  17. package/dist/runtime/index.d.ts +2 -1
  18. package/dist/runtime/index.js +1 -0
  19. package/dist/runtime/retry.js +5 -1
  20. package/docs/consumers.md +35 -18
  21. package/docs/model-adaptation/Fun-ASR/Fun-ASR_/347/231/276/347/202/274.md +5 -1
  22. package/docs/model-adaptation/Fun-ASR-Flash-2026-06-15/Fun-ASR-Flash-2026-06-15_/347/231/276/347/202/274.md +5 -1
  23. package/docs/model-adaptation/Qwen3-ASR-Flash/Qwen3-ASR-Flash_/347/231/276/347/202/274.md +5 -1
  24. package/docs/model-adaptation/Qwen3-ASR-Flash-2026-02-10/Qwen3-ASR-Flash-2026-02-10_/347/231/276/347/202/274.md +5 -1
  25. package/docs/model-adaptation/Qwen3-ASR-Flash-Filetrans/Qwen3-ASR-Flash-Filetrans_/347/231/276/347/202/274.md +5 -1
  26. package/docs/model-adaptation/README.md +22 -22
  27. package/docs/model-adaptation/SenseVoiceSmall/SenseVoiceSmall_/347/241/205/345/237/272/346/265/201/345/212/250.md +5 -1
  28. package/docs/model-adaptation/TeleSpeechASR/TeleSpeechASR_/347/241/205/345/237/272/346/265/201/345/212/250.md +5 -1
  29. package/docs/model-adaptation/Whisper-Large-v3/Whisper-Large-v3_Groq.md +5 -1
  30. package/docs/model-adaptation/Whisper-Large-v3-Turbo/Whisper-Large-v3-Turbo_Groq.md +5 -1
  31. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/APIMart.md +3 -1
  32. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274.md +24 -10
  33. package/examples/form-renderer/package.json +1 -1
  34. package/examples/llm-chat/package.json +1 -1
  35. package/examples/minimal-node/package.json +1 -1
  36. package/package.json +8 -8
@@ -2,7 +2,7 @@
2
2
 
3
3
  | 项目 | 内容 |
4
4
  |---|---|
5
- | 最后更新 | 2026-08-28 |
5
+ | 最后更新 | 2026-09-13 |
6
6
  | 供应商类型 | 聚合中转(非模型原厂) |
7
7
  | 项目内 providerId | `apimart` |
8
8
  | 主域名 | `apimart.ai`(海外主站) |
@@ -12,6 +12,8 @@
12
12
  | 文档可见性 | 公开,无需登录 |
13
13
  | 价格可见性 | 公开,无需登录 |
14
14
 
15
+ 2026-09-13 网络恢复修复:提交请求仅在连接尚未建立时重试或切换线路;新增识别 Node `ECONNRESET` 且底层错误严格为 `Client network socket disconnected before secure TLS connection was established` 的 TLS 前断线。普通 `read ECONNRESET` / socket 断开仍不能重放提交。GET/HEAD 查询遇到连接重置可切换备用线路,不修改任务状态。最终错误 `details` 提供仅含域名、错误码、阶段、耗时的尝试序列及 `submissionState`,不记录请求路径、密钥和正文。TLS 阶段判据依据 [Node 官方实现](https://github.com/nodejs/node/blob/v24.0.0/lib/_tls_wrap.js#L1573-L1585)(公开,无需登录),其他边界为本 SDK 的保守策略,未改变供应商 API 契约。
16
+
15
17
  ## 1. 端点
16
18
 
17
19
  ### 1.1 Base URL 与备用域名
@@ -225,13 +225,27 @@ Qwen-MT 可通过 OpenAI 兼容 `POST /compatible-mode/v1/chat/completions` 或
225
225
  | 官方模型价格 | https://help.aliyun.com/zh/model-studio/model-pricing | 否 |
226
226
  | 错误码/区域不匹配 | https://help.aliyun.com/zh/model-studio/developer-reference/error-code | 否 |
227
227
  | API Key | https://bailian.console.aliyun.com/?apiKey=1#/api-key | 是 |
228
- # 2026-09-11:文本检索能力
229
-
230
- 本次接入同步文本 Embedding / Rerank,复用 capability client 的超时、取消和凭据注入,不包含知识库托管、索引或多模态检索。
231
-
232
- - 官方正文(公开,无需登录):https://help.aliyun.com/en/model-studio/text-embedding-synchronous-api 、https://help.aliyun.com/en/model-studio/text-rerank-api 。价格:https://help.aliyun.com/zh/model-studio/model-pricing 。
233
- - 北京业务空间 API Host 由宿主提供,例如 `https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com`;不得使用占位空间发请求,不自动跨地域回退。Bearer API Key,JSON POST。
234
- - Embedding 走 `/compatible-mode/v1/embeddings`,发送 `model,input,encoding_format:float` 和可选 `dimensions`。返回 `data[].index/embedding`、`usage`。`qwen3.7-text-embedding`:20 条、128000 token/条,维度 256/512/768/1024/1536/2048/2560;flash:20 条、128000 token/条,256/512/768/1024;`text-embedding-v4`:10 条,维度 64/128/256/512/768/1024/1536/2048。v4 的概览页 33000 与同步 API 页 8192 token 冲突,不用字符数伪造 token 校验,交由服务端 tokenizer 裁定;不自动截断。普通/flash/v4 价格分别 0.5/0.125/0.5 元每百万输入 token。
235
- - `qwen3.7-text-rerank` 走 `/api/v1/services/rerank/text-rerank/text-rerank`,发送 `model,input:{query,documents},parameters:{top_n,instruct}`,读取 `output.results`。`qwen3-rerank` 走 `/compatible-api/v1/reranks`,参数展开到顶层,读取 `results`。两者北京价格均 0.5 元每百万输入 token,最多 500 文档;单条 token 限额按模型表 30000/4000,整个请求 120000(新版为建议值)。
236
- - 本次统一返回原始输入索引、分数与本地输入文本,避免依赖不同模型的 return_documents 支持差异;不跨请求比较分数。Embedding 只提供稠密浮点向量。
237
- - 同步终态:HTTP 成功且结果合法才完成;错误状态、顶层 code/error、非法 JSON、缺失结果、重复/越界索引、非数值向量/分数均拒绝。取消透传 AbortSignal,无 SDK 自动重试付费请求。官方示例及字段构造 fixture 标注来源,覆盖成功、失败、取消、超时和畸形响应。
228
+ # 2026-09-11:文本检索能力
229
+
230
+ 本次接入同步文本 Embedding / Rerank,复用 capability client 的超时、取消和凭据注入,不包含知识库托管、索引或多模态检索。
231
+
232
+ - 官方正文(公开,无需登录):https://help.aliyun.com/en/model-studio/text-embedding-synchronous-api 、https://help.aliyun.com/en/model-studio/text-rerank-api 。价格:https://help.aliyun.com/zh/model-studio/model-pricing 。
233
+ - 北京业务空间 API Host 由宿主提供,例如 `https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com`;不得使用占位空间发请求,不自动跨地域回退。Bearer API Key,JSON POST。
234
+ - Embedding 走 `/compatible-mode/v1/embeddings`,发送 `model,input,encoding_format:float` 和可选 `dimensions`。返回 `data[].index/embedding`、`usage`。`qwen3.7-text-embedding`:20 条、128000 token/条,维度 256/512/768/1024/1536/2048/2560;flash:20 条、128000 token/条,256/512/768/1024;`text-embedding-v4`:10 条,维度 64/128/256/512/768/1024/1536/2048。v4 的概览页 33000 与同步 API 页 8192 token 冲突,不用字符数伪造 token 校验,交由服务端 tokenizer 裁定;不自动截断。普通/flash/v4 价格分别 0.5/0.125/0.5 元每百万输入 token。
235
+ - `qwen3.7-text-rerank` 走 `/api/v1/services/rerank/text-rerank/text-rerank`,发送 `model,input:{query,documents},parameters:{top_n,instruct}`,读取 `output.results`。`qwen3-rerank` 走 `/compatible-api/v1/reranks`,参数展开到顶层,读取 `results`。两者北京价格均 0.5 元每百万输入 token,最多 500 文档;单条 token 限额按模型表 30000/4000,整个请求 120000(新版为建议值)。
236
+ - 本次统一返回原始输入索引、分数与本地输入文本,避免依赖不同模型的 return_documents 支持差异;不跨请求比较分数。Embedding 只提供稠密浮点向量。
237
+ - 同步终态:HTTP 成功且结果合法才完成;错误状态、顶层 code/error、非法 JSON、缺失结果、重复/越界索引、非数值向量/分数均拒绝。取消透传 AbortSignal,无 SDK 自动重试付费请求。官方示例及字段构造 fixture 标注来源,覆盖成功、失败、取消、超时和畸形响应。
238
+
239
+ ## 2026-09-21 文件 ASR 上传边界
240
+
241
+ 官方依据:[临时上传](https://help.aliyun.com/zh/model-studio/get-temporary-file-url)、[Qwen Base64](https://help.aliyun.com/zh/model-studio/qwen-asr-api-reference)、[Fun-ASR Flash HTTP](https://help.aliyun.com/zh/model-studio/fun-asr-flash-recorded-speech-recognition-http-api)、[模型规格](https://help.aliyun.com/zh/model-studio/asr-model/)。均公开无需登录;本次只核对传输及限制,未改变定价与响应协议。
242
+
243
+ | 阶段 | 输入/约束 | 成功/下一步 | 失败/资源行为 |
244
+ |---|---|---|---|
245
+ | 同步本地预检 | describe 的 size/mime/filename;Qwen 原始≤7,500,000;Fun Flash≤2,000,000,000字节 | 拉取≤48KiB块,Base64余数跨块保留,精确Content-Length | 大小超限带actualBytes/maxBytes/已知时长;不读取正文 |
246
+ | JSON传输 | SDK按需生成UTF-8片段;宿主fetchStream背压消费 | 保持原有SSE或JSON解析 | 取消/短文件/网络错误终止迭代,不自动重放 |
247
+ | 申请上传策略 | GET uploads?action=getPolicy&model;Bearer | 验证HTTPS upload_host及官方表单字段 | 无效策略拒绝,尚未读取文件 |
248
+ | 直传OSS | media-ref交transport.uploadFile;max_file_size_mb接受字段表string及官方示例number | 原生multipart,file最后;上限min(1GB,凭证MB),均按十进制保守换算 | 宿主保持scope与文件身份校验,超限结构化报错,不进入media通道 |
249
+ | 提交/轮询/结果 | oss://及X-DashScope-OssResourceResolve;原有状态契约不变 | 完成转写输出 | 上传失败不提交识别;取消停止轮询,不宣称撤销远端任务 |
250
+
251
+ 实际时长不是仅由文件大小决定;PCM需采样率/声道/位深及payload字节数,压缩格式需要元数据时长,缺失返回null。新契约不自动修复只抛中文字符串的旧RPC桥。官方凭证fixture:tests/fixtures/bailian/asr-upload-policy.json;其余响应复用原有官方ASR fixtures,未生成付费请求。
@@ -7,7 +7,7 @@
7
7
  "start": "npm run build && node dist/cli.js"
8
8
  },
9
9
  "dependencies": {
10
- "@henjicc/ai-sdk": "0.4.1"
10
+ "@henjicc/ai-sdk": "0.5.0"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@types/node": "^24.0.0",
@@ -9,7 +9,7 @@
9
9
  "start": "npm run build && node dist/index.js --live"
10
10
  },
11
11
  "dependencies": {
12
- "@henjicc/ai-sdk": "0.4.1"
12
+ "@henjicc/ai-sdk": "0.5.0"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@types/node": "^24.0.0",
@@ -8,7 +8,7 @@
8
8
  "start": "npm run build && node dist/index.js --live"
9
9
  },
10
10
  "dependencies": {
11
- "@henjicc/ai-sdk": "0.4.1"
11
+ "@henjicc/ai-sdk": "0.5.0"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@types/node": "^24.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@henjicc/ai-sdk",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "痕迹AI 多供应商模型适配 SDK",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -83,12 +83,12 @@
83
83
  "import": "./dist/llm/streaming/index.js",
84
84
  "default": "./dist/llm/streaming/index.js"
85
85
  },
86
- "./llm/siliconflow": {
87
- "types": "./dist/llm/siliconflow/index.d.ts",
88
- "import": "./dist/llm/siliconflow/index.js",
89
- "default": "./dist/llm/siliconflow/index.js"
90
- },
91
- "./llm/groq": {
86
+ "./llm/siliconflow": {
87
+ "types": "./dist/llm/siliconflow/index.d.ts",
88
+ "import": "./dist/llm/siliconflow/index.js",
89
+ "default": "./dist/llm/siliconflow/index.js"
90
+ },
91
+ "./llm/groq": {
92
92
  "types": "./dist/llm/groq/index.d.ts",
93
93
  "import": "./dist/llm/groq/index.js",
94
94
  "default": "./dist/llm/groq/index.js"
@@ -255,4 +255,4 @@
255
255
  "devDependencies": {
256
256
  "typescript": "^5.0.2"
257
257
  }
258
- }
258
+ }