@henjicc/ai-sdk 0.6.2 → 0.8.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 (119) hide show
  1. package/CHANGELOG.md +45 -33
  2. package/README.md +60 -60
  3. package/dist/catalog/audio/tts-common.d.ts +5 -0
  4. package/dist/catalog/audio/tts-common.js +17 -0
  5. package/dist/catalog/bailian/cosyvoice-v3.5.model.d.ts +2 -0
  6. package/dist/catalog/bailian/cosyvoice-v3.5.model.js +40 -0
  7. package/dist/catalog/bailian/minimax-speech-2.8.model.d.ts +2 -0
  8. package/dist/catalog/bailian/minimax-speech-2.8.model.js +38 -0
  9. package/dist/catalog/bailian/qwen-audio-3.1-tts-flash.model.d.ts +2 -0
  10. package/dist/catalog/bailian/qwen-audio-3.1-tts-flash.model.js +35 -0
  11. package/dist/catalog/fal/eleven-v3-tts.model.d.ts +2 -0
  12. package/dist/catalog/fal/eleven-v3-tts.model.js +31 -0
  13. package/dist/catalog/fal/minimax-speech-2.8.model.d.ts +2 -0
  14. package/dist/catalog/fal/minimax-speech-2.8.model.js +39 -0
  15. package/dist/catalog/fal/qwen3-tts-1.7b.model.d.ts +2 -0
  16. package/dist/catalog/fal/qwen3-tts-1.7b.model.js +33 -0
  17. package/dist/catalog/index.js +116 -90
  18. package/dist/catalog/kie/eleven-turbo-2.5-tts.model.d.ts +2 -0
  19. package/dist/catalog/kie/eleven-turbo-2.5-tts.model.js +29 -0
  20. package/dist/catalog/kie/eleven-v3-dialogue.model.d.ts +2 -0
  21. package/dist/catalog/kie/eleven-v3-dialogue.model.js +46 -0
  22. package/dist/catalog/kie/gemini-3.1-flash-tts.model.d.ts +2 -0
  23. package/dist/catalog/kie/gemini-3.1-flash-tts.model.js +40 -0
  24. package/dist/catalog/ppio/minimax-speech.model.js +1 -3
  25. package/dist/catalog/siliconflow/cosyvoice2-tts.model.d.ts +2 -0
  26. package/dist/catalog/siliconflow/cosyvoice2-tts.model.js +27 -0
  27. package/dist/catalog/siliconflow/moss-ttsd-0.5.model.d.ts +2 -0
  28. package/dist/catalog/siliconflow/moss-ttsd-0.5.model.js +28 -0
  29. package/dist/catalog/volcengine-speech/seed-icl-2.0.model.d.ts +2 -0
  30. package/dist/catalog/volcengine-speech/seed-icl-2.0.model.js +26 -0
  31. package/dist/catalog/volcengine-speech/seed-tts-2.0.model.d.ts +2 -0
  32. package/dist/catalog/volcengine-speech/seed-tts-2.0.model.js +25 -0
  33. package/dist/packs/models/bailian/cosyvoice-v3.5.d.ts +6 -0
  34. package/dist/packs/models/bailian/cosyvoice-v3.5.js +7 -0
  35. package/dist/packs/models/bailian/minimax-speech-2.8.d.ts +6 -0
  36. package/dist/packs/models/bailian/minimax-speech-2.8.js +7 -0
  37. package/dist/packs/models/bailian/qwen-audio-3.1-tts-flash.d.ts +6 -0
  38. package/dist/packs/models/bailian/qwen-audio-3.1-tts-flash.js +7 -0
  39. package/dist/packs/models/fal/eleven-v3-tts.d.ts +6 -0
  40. package/dist/packs/models/fal/eleven-v3-tts.js +7 -0
  41. package/dist/packs/models/fal/minimax-speech-2.8.d.ts +6 -0
  42. package/dist/packs/models/fal/minimax-speech-2.8.js +7 -0
  43. package/dist/packs/models/fal/qwen3-tts-1.7b.d.ts +6 -0
  44. package/dist/packs/models/fal/qwen3-tts-1.7b.js +7 -0
  45. package/dist/packs/models/kie/eleven-turbo-2.5-tts.d.ts +6 -0
  46. package/dist/packs/models/kie/eleven-turbo-2.5-tts.js +7 -0
  47. package/dist/packs/models/kie/eleven-v3-dialogue.d.ts +6 -0
  48. package/dist/packs/models/kie/eleven-v3-dialogue.js +7 -0
  49. package/dist/packs/models/kie/gemini-3.1-flash-tts.d.ts +6 -0
  50. package/dist/packs/models/kie/gemini-3.1-flash-tts.js +7 -0
  51. package/dist/packs/models/siliconflow/cosyvoice2-tts.d.ts +6 -0
  52. package/dist/packs/models/siliconflow/cosyvoice2-tts.js +7 -0
  53. package/dist/packs/models/siliconflow/moss-ttsd-0.5.d.ts +6 -0
  54. package/dist/packs/models/siliconflow/moss-ttsd-0.5.js +7 -0
  55. package/dist/packs/models/volcengine-speech/seed-icl-2.0.d.ts +6 -0
  56. package/dist/packs/models/volcengine-speech/seed-icl-2.0.js +7 -0
  57. package/dist/packs/models/volcengine-speech/seed-tts-2.0.d.ts +6 -0
  58. package/dist/packs/models/volcengine-speech/seed-tts-2.0.js +7 -0
  59. package/dist/packs/provider-adapters/siliconflow.d.ts +3 -0
  60. package/dist/packs/provider-adapters/siliconflow.js +5 -0
  61. package/dist/packs/provider-adapters/volcengine-speech.d.ts +3 -0
  62. package/dist/packs/provider-adapters/volcengine-speech.js +5 -0
  63. package/dist/packs/provider-packs/bailian.d.ts +1 -1
  64. package/dist/packs/provider-packs/bailian.js +6 -3
  65. package/dist/packs/provider-packs/fal.d.ts +1 -1
  66. package/dist/packs/provider-packs/fal.js +41 -38
  67. package/dist/packs/provider-packs/kie.d.ts +1 -1
  68. package/dist/packs/provider-packs/kie.js +33 -30
  69. package/dist/packs/provider-packs/siliconflow.d.ts +4 -0
  70. package/dist/packs/provider-packs/siliconflow.js +7 -0
  71. package/dist/packs/provider-packs/volcengine-speech.d.ts +4 -0
  72. package/dist/packs/provider-packs/volcengine-speech.js +7 -0
  73. package/dist/providers/audio-data.d.ts +2 -0
  74. package/dist/providers/audio-data.js +21 -0
  75. package/dist/providers/bailian.js +30 -2
  76. package/dist/providers/index.d.ts +1 -0
  77. package/dist/providers/index.js +5 -0
  78. package/dist/providers/metadata.js +8 -0
  79. package/dist/providers/siliconflow.d.ts +3 -0
  80. package/dist/providers/siliconflow.js +34 -0
  81. package/dist/providers/tts-voices.d.ts +9 -0
  82. package/dist/providers/tts-voices.js +139 -0
  83. package/dist/providers/volcengine-speech.d.ts +3 -0
  84. package/dist/providers/volcengine-speech.js +143 -0
  85. package/dist/types/model.d.ts +4 -4
  86. package/dist/types/model.js +3 -1
  87. package/docs/consumers.md +130 -119
  88. package/docs/llm-adaptation/README.md +29 -29
  89. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/DeepSeek.md +14 -14
  90. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/Kimi.md +3 -3
  91. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//345/260/217/347/261/263MiMo.md +42 -42
  92. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//346/231/272/350/260/261GLM.md +3 -3
  93. package/docs/model-adaptation/Fun-ASR-Realtime/Fun-ASR-Realtime_/347/231/276/347/202/274.md +22 -22
  94. package/docs/model-adaptation/GLM-5.3-Flash/GLM-5.3-Flash_/346/231/272/350/260/261.md +6 -6
  95. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_APIMart.md +66 -66
  96. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Fal.md +55 -55
  97. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Grsai.md +53 -53
  98. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_KIE.md +55 -55
  99. package/docs/model-adaptation/HappyHorse-1.1/HappyHorse-1.1_KIE.md +27 -27
  100. package/docs/model-adaptation/IC-Light-v2/IC-Light-v2_Fal.md +14 -14
  101. package/docs/model-adaptation/Qwen-MT-Flash/Qwen-MT-Flash_/347/231/276/347/202/274.md +24 -24
  102. package/docs/model-adaptation/Qwen-MT-Lite/Qwen-MT-Lite_/347/231/276/347/202/274.md +3 -3
  103. package/docs/model-adaptation/Qwen-MT-Plus/Qwen-MT-Plus_/347/231/276/347/202/274.md +3 -3
  104. package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime/Qwen3-ASR-Flash-Realtime_/347/231/276/347/202/274.md +25 -25
  105. package/docs/model-adaptation/README.md +16 -10
  106. 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 +7 -7
  107. 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
  108. package/docs/model-adaptation/TTS-/345/244/232/344/276/233/345/272/224/345/225/206-2026-09.md +69 -0
  109. 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
  110. 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
  111. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274.md +31 -31
  112. 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
  113. 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
  114. package/examples/form-renderer/package.json +1 -1
  115. package/examples/llm-chat/README.md +8 -8
  116. package/examples/llm-chat/index.ts +1 -1
  117. package/examples/llm-chat/package.json +1 -1
  118. package/examples/minimal-node/package.json +1 -1
  119. package/package.json +258 -258
@@ -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 独立解析器不受影响。
@@ -2,7 +2,7 @@
2
2
 
3
3
  | 项目 | 内容 |
4
4
  |---|---|
5
- | 最后更新 | 2026-09-11 |
5
+ | 最后更新 | 2026-09-11 |
6
6
  | 供应商 | SiliconFlow / SiliconCloud |
7
7
  | 建议 `providerId` | `siliconflow` |
8
8
  | Base URL | `https://api.siliconflow.cn/v1` |
@@ -10,50 +10,50 @@
10
10
  | 已核验 ASR 类型 | 同步文件语音转写 API |
11
11
  | 文档/价格可见性 | 公开,无需登录;API Key、实名、用量和账单需登录 |
12
12
 
13
- ## LLM 与动态模型发现(2026-09-11)
14
-
15
- 本节依据国内控制台模型详情、官方 Chat Completions / Models 文档和实时价格页。控制台已登录核验;公开文档与价格页无需登录。模型名字保留大小写与厂商前缀,不把硅基流动的 DeepSeek V4 Flash 冒充 DeepSeek 官方 `deepseek-flash`(V4.1)。
16
-
17
- | 展示名 / API model ID | 已核验输入 / 工具 | 上下文 | 每百万 tokens 输入 / 输出 / 缓存命中(人民币) |
18
- |---|---|---|---|
19
- | DeepSeek V4 Flash / `deepseek-ai/DeepSeek-V4-Flash` | 文本 / 工具调用 | 1,000,000;模型页声明最高输出 384K | 3 / 9 / 0.3;价格页另有 2–8 点 1.5 / 4.5 / 0.15,时段以平台账单为准 |
20
- | GLM-5.3 / `zai-org/GLM-5.3` | 文本 / 工具调用 / 结构化输出 | 1,048,576;托管输出上限未明确,留空 | 8 / 28 / 2 |
21
- | Kimi K2.7 Code / `moonshotai/Kimi-K2.7-Code` | 文本、图片 / 工具调用 | 256K;托管输出上限留空 | 6.5 / 27 / 1.3 |
22
- | Qwen3.8-27B / `Qwen/Qwen3.8-27B` | 文本、图片 / 工具调用 | 256K;托管输出上限留空 | 3 / 12 / 未列出 |
23
-
24
- 控制台价格单元格实际显示 `/K Tokens`(如 Qwen 输入 0.003、输出 0.012),虽然表头按钮写 M Tokens;上表按单元格单位换算,并与公开价格页交叉核对。Kimi/Qwen 模型介绍包含视频能力,但本次不声明视频输入:未取得该托管接口的视频消息字段契约。常用预设不是全部在售清单,动态发现结果不以预设白名单过滤。
25
-
26
- ### 发现接口
27
-
28
- `GET https://api.siliconflow.cn/v1/models?sub_type=chat`,Bearer 鉴权。`sub_type` 可独立筛选,支持 `chat`、`embedding`、`reranker` 等;本 SDK 检索接口对外 `reranker` 按凭据用途映射为 `rerank`,聊天映射 `llm`。不同时传 `type=text`,避免错误排除支持视觉的聊天模型。
29
-
30
- 成功体 `{object:"list",data:[{id,object:"model",created,owned_by}]}`。官方示例只给基础身份字段,未提供价格、上下文或完整能力;未知模型保留原 ID,不根据名字猜能力。空 `data:[]` 是合法结果;缺失 data、非数组、平台错误体不得伪装为空列表。取消/超时通过宿主 AbortSignal 传递;不自动重试。SDK 不在无凭据时尝试匿名列举。
31
-
32
- ### 聊天接口与事件矩阵
33
-
34
- `POST https://api.siliconflow.cn/v1/chat/completions`,Bearer、JSON。必填 `model` 与 `messages`;`stream:true` 返回 SSE,以 `data: [DONE]` 结束。消息复用 OpenAI 兼容结构,图片为 `image_url` 内容块;工具为 `tools[].function`,最多 128 个。支持 `max_tokens`、`temperature`、`top_p`、`response_format`。输出上限不得直接等于上下文窗口;官方建议预留输入空间。
35
-
36
- 思考开关使用 `enable_thinking`,不发送 DeepSeek 原厂的 `thinking` 对象。官方字段表明确 `reasoning_effort` 仅支持 high/max,并列举 DeepSeek V4 Flash、Pro/DeepSeek V4、Pro/GLM-5.2;本次四个预设仅给 DeepSeek V4 Flash 发送该字段。关闭思考时只发 `enable_thinking:false`。其他预设发送布尔开关,不根据模型营销介绍猜强度枚举。GLM-5.3 的官方原厂能力配置不能覆盖硅基流动托管限制。
37
-
38
- | 事件/状态 | 字段与空值语义 | 输出与状态 | 终态 / 资源 |
39
- |---|---|---|---|
40
- | HTTP 成功开始 SSE | choices 数组;delta.content 可空串、reasoning_content 可 null、finish_reason 可 null(官方 Streaming 首帧) | 空始帧不输出文本,继续读取 | 未终止;复用当前响应流 |
41
- | 文本/思考 delta | content / reasoning_content 字符串增量,缺失/null 不追加 | 分别输出正文与思考 | 继续读取 |
42
- | 工具 delta | delta.tool_calls 的 index、id、function.name/arguments;arguments 增量拼接 | 保留工具身份与参数,交共享解析器 | 继续读取 |
43
- | finish / usage | finish_reason 标记 stop、length、tool_calls;usage 的 prompt/completion/total 与可选 reasoning/cached tokens | 归一化终态原因和用量;usage 可随首帧出现 | 等待 DONE/结束并释放 reader |
44
- | `[DONE]` | SSE 数据字面值 | 结束当前响应;空有效输出按共享内核处理 | 释放 reader,不重复 POST |
45
- | 400/401/403/404/429/503/504 | JSON code/message/data 或纯文本;不得当成输出 | 明确失败 | 释放资源,不自动重试计费请求 |
46
- | 取消/超时/断流 | 官方未说明断点续传、恢复或取消退费 | 使用宿主取消与共享内核超时/断流契约 | 释放 reader/计时器;不重放 |
47
-
48
- 官方未承诺乱序、重复事件去重或断线恢复,本次沿用同一个 OpenAI SSE 执行内核,不创建硅基流动专属 parser。fixture 区分官方首帧/模型列表字面样例与依据字段构造的后续增量、工具回合及合成负例;不声称真实付费成功。
49
-
50
- 来源:
51
- - [模型列表 API](https://api-docs.siliconflow.cn/docs/api/models-get):筛选参数、鉴权、基础身份字段和错误,公开。
52
- - [Chat Completions](https://api-docs.siliconflow.cn/docs/api/chat-completions-post):LLM/VLM Tab、Streaming/Function 示例、请求字段与错误,公开。
53
- - [实时价格](https://siliconflow.cn/pricing):输入/输出/缓存与时段,公开。
54
- - [国内模型广场](https://cloud.siliconflow.cn/me/models):逐项查看四个模型的详情、能力、价格;本次使用已登录会话。
55
-
56
- ## 1. ASR 端点与请求
13
+ ## LLM 与动态模型发现(2026-09-11)
14
+
15
+ 本节依据国内控制台模型详情、官方 Chat Completions / Models 文档和实时价格页。控制台已登录核验;公开文档与价格页无需登录。模型名字保留大小写与厂商前缀,不把硅基流动的 DeepSeek V4 Flash 冒充 DeepSeek 官方 `deepseek-flash`(V4.1)。
16
+
17
+ | 展示名 / API model ID | 已核验输入 / 工具 | 上下文 | 每百万 tokens 输入 / 输出 / 缓存命中(人民币) |
18
+ |---|---|---|---|
19
+ | DeepSeek V4 Flash / `deepseek-ai/DeepSeek-V4-Flash` | 文本 / 工具调用 | 1,000,000;模型页声明最高输出 384K | 3 / 9 / 0.3;价格页另有 2–8 点 1.5 / 4.5 / 0.15,时段以平台账单为准 |
20
+ | GLM-5.3 / `zai-org/GLM-5.3` | 文本 / 工具调用 / 结构化输出 | 1,048,576;托管输出上限未明确,留空 | 8 / 28 / 2 |
21
+ | Kimi K2.7 Code / `moonshotai/Kimi-K2.7-Code` | 文本、图片 / 工具调用 | 256K;托管输出上限留空 | 6.5 / 27 / 1.3 |
22
+ | Qwen3.8-27B / `Qwen/Qwen3.8-27B` | 文本、图片 / 工具调用 | 256K;托管输出上限留空 | 3 / 12 / 未列出 |
23
+
24
+ 控制台价格单元格实际显示 `/K Tokens`(如 Qwen 输入 0.003、输出 0.012),虽然表头按钮写 M Tokens;上表按单元格单位换算,并与公开价格页交叉核对。Kimi/Qwen 模型介绍包含视频能力,但本次不声明视频输入:未取得该托管接口的视频消息字段契约。常用预设不是全部在售清单,动态发现结果不以预设白名单过滤。
25
+
26
+ ### 发现接口
27
+
28
+ `GET https://api.siliconflow.cn/v1/models?sub_type=chat`,Bearer 鉴权。`sub_type` 可独立筛选,支持 `chat`、`embedding`、`reranker` 等;本 SDK 检索接口对外 `reranker` 按凭据用途映射为 `rerank`,聊天映射 `llm`。不同时传 `type=text`,避免错误排除支持视觉的聊天模型。
29
+
30
+ 成功体 `{object:"list",data:[{id,object:"model",created,owned_by}]}`。官方示例只给基础身份字段,未提供价格、上下文或完整能力;未知模型保留原 ID,不根据名字猜能力。空 `data:[]` 是合法结果;缺失 data、非数组、平台错误体不得伪装为空列表。取消/超时通过宿主 AbortSignal 传递;不自动重试。SDK 不在无凭据时尝试匿名列举。
31
+
32
+ ### 聊天接口与事件矩阵
33
+
34
+ `POST https://api.siliconflow.cn/v1/chat/completions`,Bearer、JSON。必填 `model` 与 `messages`;`stream:true` 返回 SSE,以 `data: [DONE]` 结束。消息复用 OpenAI 兼容结构,图片为 `image_url` 内容块;工具为 `tools[].function`,最多 128 个。支持 `max_tokens`、`temperature`、`top_p`、`response_format`。输出上限不得直接等于上下文窗口;官方建议预留输入空间。
35
+
36
+ 思考开关使用 `enable_thinking`,不发送 DeepSeek 原厂的 `thinking` 对象。官方字段表明确 `reasoning_effort` 仅支持 high/max,并列举 DeepSeek V4 Flash、Pro/DeepSeek V4、Pro/GLM-5.2;本次四个预设仅给 DeepSeek V4 Flash 发送该字段。关闭思考时只发 `enable_thinking:false`。其他预设发送布尔开关,不根据模型营销介绍猜强度枚举。GLM-5.3 的官方原厂能力配置不能覆盖硅基流动托管限制。
37
+
38
+ | 事件/状态 | 字段与空值语义 | 输出与状态 | 终态 / 资源 |
39
+ |---|---|---|---|
40
+ | HTTP 成功开始 SSE | choices 数组;delta.content 可空串、reasoning_content 可 null、finish_reason 可 null(官方 Streaming 首帧) | 空始帧不输出文本,继续读取 | 未终止;复用当前响应流 |
41
+ | 文本/思考 delta | content / reasoning_content 字符串增量,缺失/null 不追加 | 分别输出正文与思考 | 继续读取 |
42
+ | 工具 delta | delta.tool_calls 的 index、id、function.name/arguments;arguments 增量拼接 | 保留工具身份与参数,交共享解析器 | 继续读取 |
43
+ | finish / usage | finish_reason 标记 stop、length、tool_calls;usage 的 prompt/completion/total 与可选 reasoning/cached tokens | 归一化终态原因和用量;usage 可随首帧出现 | 等待 DONE/结束并释放 reader |
44
+ | `[DONE]` | SSE 数据字面值 | 结束当前响应;空有效输出按共享内核处理 | 释放 reader,不重复 POST |
45
+ | 400/401/403/404/429/503/504 | JSON code/message/data 或纯文本;不得当成输出 | 明确失败 | 释放资源,不自动重试计费请求 |
46
+ | 取消/超时/断流 | 官方未说明断点续传、恢复或取消退费 | 使用宿主取消与共享内核超时/断流契约 | 释放 reader/计时器;不重放 |
47
+
48
+ 官方未承诺乱序、重复事件去重或断线恢复,本次沿用同一个 OpenAI SSE 执行内核,不创建硅基流动专属 parser。fixture 区分官方首帧/模型列表字面样例与依据字段构造的后续增量、工具回合及合成负例;不声称真实付费成功。
49
+
50
+ 来源:
51
+ - [模型列表 API](https://api-docs.siliconflow.cn/docs/api/models-get):筛选参数、鉴权、基础身份字段和错误,公开。
52
+ - [Chat Completions](https://api-docs.siliconflow.cn/docs/api/chat-completions-post):LLM/VLM Tab、Streaming/Function 示例、请求字段与错误,公开。
53
+ - [实时价格](https://siliconflow.cn/pricing):输入/输出/缓存与时段,公开。
54
+ - [国内模型广场](https://cloud.siliconflow.cn/me/models):逐项查看四个模型的详情、能力、价格;本次使用已登录会话。
55
+
56
+ ## 1. ASR 端点与请求
57
57
 
58
58
  ```text
59
59
  POST https://api.siliconflow.cn/v1/audio/transcriptions
@@ -129,25 +129,25 @@ OpenAI 的 `language/prompt/response_format/temperature` 透传过来。
129
129
  | TeleSpeechASR/SenseVoiceSmall 客户端免费服务用例 | https://docs.siliconflow.cn/cn/usercases/use-siliconcloud-in-BiBiKeyboard | 否 |
130
130
  | API Key 管理 | https://cloud.siliconflow.cn/account/ak | **是** |
131
131
  | 实名认证 | https://cloud.siliconflow.cn/account/authentication | **是** |
132
- # 2026-09-11:Embedding / Rerank 核查
133
-
134
- 官方公开 API:https://api-docs.siliconflow.cn/docs/api/embeddings-post 、https://api-docs.siliconflow.cn/docs/api/rerank-post 。国内根地址 `https://api.siliconflow.cn/v1`,Bearer,同步 JSON POST `/embeddings` 或 `/rerank`。
135
-
136
- - 文本 Qwen3 Embedding 8B/4B/0.6B:`Qwen/Qwen3-Embedding-{8B,4B,0.6B}`,32768 token,支持 dimensions 枚举。8B:64/128/256/512/768/1024/1536/2048/2560/4096;4B 去掉4096;0.6B 到1024。发送 input 字符串数组、encoding_format=float,读取 data[].index/embedding。BGE/BCE 也有 API 字段说明,暂不机械加入所有历史模型。
137
- - 文本 Qwen3 Reranker 同尺寸 ID `Qwen/Qwen3-Reranker-*`:query、documents、top_n、instruction;不能发送仅 BGE/BCE 支持的 overlap_tokens/max_chunks_per_doc。读取 results[].index/relevance_score,usage 可能位于 meta.tokens(与 billed_units 分开,不能混为实际用量)。
138
- - 国内价格已于 2026-09-11 使用用户已登录的 BrowserOS neo,在[模型广场](https://cloud.siliconflow.cn/me/models?types=embedding)逐个打开模型详情核验。在线推理价格按明细行的 `/ K Tokens` 单位换算为百万输入 tokens,见下表;不是国际站美元价格,也不是真实调用账单。
139
- - 多模态 Qwen3-VL-Embedding/Reranker-8B 另有接口变体;本次文本能力不宣称支持图片/视频。发布公告 https://www.siliconflow.cn/news/gnuv7wmztvwaq78ozfhjybmi 标明文本0.7元/百万、视觉1.8元/百万;不能借用该价格给纯文本 Qwen3。
140
- - 同步终态与验证:非2xx/非法JSON/供应商error拒绝;向量非空且索引完整唯一;重排索引有效唯一且分数有限;取消/超时由 capability client 统一传递。官方示例与字段构造正例、synthetic-negative 分开标注。
141
-
142
- | 精确模型 ID | 控制台输入价格(元/千 tokens) | 元/百万输入 tokens |
143
- |---|---:|---:|
144
- | Qwen/Qwen3-Embedding-8B | 0.000280 | 0.28 |
145
- | Qwen/Qwen3-Embedding-4B | 0.000140 | 0.14 |
146
- | Qwen/Qwen3-Embedding-0.6B | 0.000070 | 0.07 |
147
- | Qwen/Qwen3-Reranker-8B | 0.000280 | 0.28 |
148
- | Qwen/Qwen3-Reranker-4B | 0.000140 | 0.14 |
149
- | Qwen/Qwen3-Reranker-0.6B | 0.000070 | 0.07 |
150
- | BAAI/bge-m3 | 0.000000 | 0(当前免费) |
151
- | BAAI/bge-reranker-v2-m3 | 0.000000 | 0(当前免费) |
152
-
153
- 控制台表头单位按钮显示 `M Tokens`,实际价格单元格明确显示 `/ K Tokens`;以上按单元格原值和单位保存、换算,不把 0.000280 误记为每百万价格。免费结论仅针对上述无 `Pro/` 前缀的两个模型;不能推及 Pro 版本或所有 BGE 模型。未触发推理、充值或修改账号配置,也不保存账号信息。列表中 BCE Embedding/Reranker 已标记 Deprecated,本轮不添加。
132
+ # 2026-09-11:Embedding / Rerank 核查
133
+
134
+ 官方公开 API:https://api-docs.siliconflow.cn/docs/api/embeddings-post 、https://api-docs.siliconflow.cn/docs/api/rerank-post 。国内根地址 `https://api.siliconflow.cn/v1`,Bearer,同步 JSON POST `/embeddings` 或 `/rerank`。
135
+
136
+ - 文本 Qwen3 Embedding 8B/4B/0.6B:`Qwen/Qwen3-Embedding-{8B,4B,0.6B}`,32768 token,支持 dimensions 枚举。8B:64/128/256/512/768/1024/1536/2048/2560/4096;4B 去掉4096;0.6B 到1024。发送 input 字符串数组、encoding_format=float,读取 data[].index/embedding。BGE/BCE 也有 API 字段说明,暂不机械加入所有历史模型。
137
+ - 文本 Qwen3 Reranker 同尺寸 ID `Qwen/Qwen3-Reranker-*`:query、documents、top_n、instruction;不能发送仅 BGE/BCE 支持的 overlap_tokens/max_chunks_per_doc。读取 results[].index/relevance_score,usage 可能位于 meta.tokens(与 billed_units 分开,不能混为实际用量)。
138
+ - 国内价格已于 2026-09-11 使用用户已登录的 BrowserOS neo,在[模型广场](https://cloud.siliconflow.cn/me/models?types=embedding)逐个打开模型详情核验。在线推理价格按明细行的 `/ K Tokens` 单位换算为百万输入 tokens,见下表;不是国际站美元价格,也不是真实调用账单。
139
+ - 多模态 Qwen3-VL-Embedding/Reranker-8B 另有接口变体;本次文本能力不宣称支持图片/视频。发布公告 https://www.siliconflow.cn/news/gnuv7wmztvwaq78ozfhjybmi 标明文本0.7元/百万、视觉1.8元/百万;不能借用该价格给纯文本 Qwen3。
140
+ - 同步终态与验证:非2xx/非法JSON/供应商error拒绝;向量非空且索引完整唯一;重排索引有效唯一且分数有限;取消/超时由 capability client 统一传递。官方示例与字段构造正例、synthetic-negative 分开标注。
141
+
142
+ | 精确模型 ID | 控制台输入价格(元/千 tokens) | 元/百万输入 tokens |
143
+ |---|---:|---:|
144
+ | Qwen/Qwen3-Embedding-8B | 0.000280 | 0.28 |
145
+ | Qwen/Qwen3-Embedding-4B | 0.000140 | 0.14 |
146
+ | Qwen/Qwen3-Embedding-0.6B | 0.000070 | 0.07 |
147
+ | Qwen/Qwen3-Reranker-8B | 0.000280 | 0.28 |
148
+ | Qwen/Qwen3-Reranker-4B | 0.000140 | 0.14 |
149
+ | Qwen/Qwen3-Reranker-0.6B | 0.000070 | 0.07 |
150
+ | BAAI/bge-m3 | 0.000000 | 0(当前免费) |
151
+ | BAAI/bge-reranker-v2-m3 | 0.000000 | 0(当前免费) |
152
+
153
+ 控制台表头单位按钮显示 `M Tokens`,实际价格单元格明确显示 `/ K Tokens`;以上按单元格原值和单位保存、换算,不把 0.000280 误记为每百万价格。免费结论仅针对上述无 `Pro/` 前缀的两个模型;不能推及 Pro 版本或所有 BGE 模型。未触发推理、充值或修改账号配置,也不保存账号信息。列表中 BCE Embedding/Reranker 已标记 Deprecated,本轮不添加。
@@ -285,7 +285,7 @@ Henji-AI 是 `@henjicc/ai-sdk` 的主开发仓库与首发验证宿主。新模
285
285
  | 状态 | 权威来源 | 允许的依赖/包形态 | 必须证明什么 |
286
286
  |---|---|---|---|
287
287
  | 开发态与首发验证 | Henji-AI 的 `packages/ai-sdk` | 仓内 workspace 源码、构建产物、由当前源码生成的本地 tarball | 源码改动、公共导出、类型、可移植性、打包内容与宿主集成正确 |
288
- | 待发布/正式发布 | 当前版本生成的 npm 包 | `npm pack` 产物用于发布前回装;正式包只发布到公共 npm registry | tarball 内容等于待发布版本;完整改动已通过发布门禁及消费者影响核查,按持续授权自主发布;公共 registry 可匿名读取 |
288
+ | 待发布/正式发布 | 当前版本生成的 npm 包 | `npm pack` 产物用于发布前回装;正式包只发布到公共 npm registry | tarball 内容等于待发布版本;完整改动已通过发布门禁及消费者影响核查,按持续授权自主发布;公共 registry 可匿名读取 |
289
289
  | 外部消费 | 公共 npm 上已经发布的不可变版本 | `@henjicc/ai-sdk` 精确版本及对应 lockfile resolved/integrity | 在没有 Henji-AI workspace、源码旁路和用户 npm/GitHub 凭据时仍能安装、导入和运行所需入口 |
290
290
 
291
291
  硬性边界:
@@ -293,13 +293,13 @@ Henji-AI 是 `@henjicc/ai-sdk` 的主开发仓库与首发验证宿主。新模
293
293
  1. Henji-AI 之外的仓库一律视为外部消费者,只能从 `https://registry.npmjs.org/` 安装已发布版本。禁止使用 `workspace:`、`file:`、Git URL、GitHub Packages、源码复制、软链接或手工 tarball 路径作为正式依赖。
294
294
  2. 外部消费者的 manifest 必须写精确版本,不使用 `^`、`~`、`latest` 等浮动范围;lockfile 必须解析到公共 npm tarball,并保存与正式包一致的 integrity。Henji-AI 根 manifest 虽然也声明精确版本,但仓内可能由 npm workspace 解析到本地源码,因此不能拿本仓的安装结果替代仓外验证。
295
295
  3. 消费项目需要尚未发布的能力时,先在 Henji-AI 完成官方资料、实现、契约测试、SDK 全量门禁、打包和回装;正式发布后,消费项目再升级。禁止先在消费方复制 provider/parser/transport 内核或长期 patch SDK。
296
- 4. **用户已持续授权 Agent 自主发布 `@henjicc/ai-sdk`,无需逐次确认。** 一组完整 SDK 功能或修复完成后,应完成版本升级、变更说明和发布门禁,再自主发布到公共 npm;不能只提交源码或重建本地 dist 就声称外部消费者已获得更新。具体要求:
297
- - **发布单位**:可独立验证的一组完整改动,不为每次小编辑发版本。影响 SDK 对外功能、请求契约、兼容性或可消费产物的改动进入发布流程;仅痕迹AI界面、规则、文档或测试调整不触发发布。用户明确要求暂缓某次发布时遵从该要求。
298
- - **版本级别**:兼容性修复升级 patch,兼容性新增能力升级 minor;删除公共入口、改变参数含义或其他破坏性变更不得作为 patch 发布。稳定版破坏性变更升级 major,`0.x` 阶段升级 minor,并写明迁移方法。
299
- - **发布前核查**:读取 [消费项目清单](../consumers.md),核对公共导出和请求/响应契约的实际使用;破坏性变更先确认可行的迁移路径,必要时提供过渡入口。关键兼容性影响尚不明确或发布门禁失败时,先解决并报告阻塞,不以已有授权绕过验证,也不把重新询问发布许可当成修复手段。
300
- - **发布验证**:完成本手册要求的 SDK 全量门禁、候选 tarball 打包回装和 Henji-AI 首发验证;确认对应发布提交的必需 CI 门禁通过。版本号、包内容与已验证源码必须一致,发布内容不得夹带其他任务未验证的改动。
301
- - **发布后同步**:按第 5、8 条完成公共 registry 匿名安装验证,并只升级实际需要新能力或修复的消费者;不要求所有项目机械追随每个新版本。报告已发布版本、验证结果、消费者升级情况及尚未验证的部分。
302
- - **授权边界**:本授权针对 SDK 公共 npm 发布,不自动授权真实付费生成、改换分发渠道、绕过权限或改写远端历史。遇到必须由用户完成的 2FA 或凭据操作时,仅请求该必要协助,不重复询问是否允许发布。
296
+ 4. **用户已持续授权 Agent 自主发布 `@henjicc/ai-sdk`,无需逐次确认。** 一组完整 SDK 功能或修复完成后,应完成版本升级、变更说明和发布门禁,再自主发布到公共 npm;不能只提交源码或重建本地 dist 就声称外部消费者已获得更新。具体要求:
297
+ - **发布单位**:可独立验证的一组完整改动,不为每次小编辑发版本。影响 SDK 对外功能、请求契约、兼容性或可消费产物的改动进入发布流程;仅痕迹AI界面、规则、文档或测试调整不触发发布。用户明确要求暂缓某次发布时遵从该要求。
298
+ - **版本级别**:兼容性修复升级 patch,兼容性新增能力升级 minor;删除公共入口、改变参数含义或其他破坏性变更不得作为 patch 发布。稳定版破坏性变更升级 major,`0.x` 阶段升级 minor,并写明迁移方法。
299
+ - **发布前核查**:读取 [消费项目清单](../consumers.md),核对公共导出和请求/响应契约的实际使用;破坏性变更先确认可行的迁移路径,必要时提供过渡入口。关键兼容性影响尚不明确或发布门禁失败时,先解决并报告阻塞,不以已有授权绕过验证,也不把重新询问发布许可当成修复手段。
300
+ - **发布验证**:完成本手册要求的 SDK 全量门禁、候选 tarball 打包回装和 Henji-AI 首发验证;确认对应发布提交的必需 CI 门禁通过。版本号、包内容与已验证源码必须一致,发布内容不得夹带其他任务未验证的改动。
301
+ - **发布后同步**:按第 5、8 条完成公共 registry 匿名安装验证,并只升级实际需要新能力或修复的消费者;不要求所有项目机械追随每个新版本。报告已发布版本、验证结果、消费者升级情况及尚未验证的部分。
302
+ - **授权边界**:本授权针对 SDK 公共 npm 发布,不自动授权真实付费生成、改换分发渠道、绕过权限或改写远端历史。遇到必须由用户完成的 2FA 或凭据操作时,仅请求该必要协助,不重复询问是否允许发布。
303
303
  5. 发布前用当前源码产生唯一候选 tarball并完成本地回装;发布后必须在仓外临时目录移除项目级 workspace 影响和用户 npm/GitHub 凭据,从公共 npm 重新安装,核对包名、版本、公开入口和实际所需 bundle。只有这一步通过,才能称为“别人可以直接安装”。
304
304
  6. npm 返回 2FA、token 或权限错误时,只修复公共 npm 的鉴权;不得改用私有 registry、GitHub Packages 或源码安装绕过。若发布结果不确定,先查询公共 registry:版本已存在就按 npm 不可变原则发布新版本,版本不存在才重试原版本。
305
305
  7. GitHub Packages 只可作为历史记录,不再发布新版本,也不得在消费项目新增 `@henjicc` scope 的 GitHub registry 映射。历史包是否删除不影响公共 npm 消费链路。
@@ -7,7 +7,7 @@
7
7
  "start": "npm run build && node dist/cli.js"
8
8
  },
9
9
  "dependencies": {
10
- "@henjicc/ai-sdk": "0.6.0"
10
+ "@henjicc/ai-sdk": "0.6.0"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@types/node": "^24.0.0",
@@ -1,17 +1,17 @@
1
1
  # llm-chat
2
2
 
3
- 用 `@henjicc/ai-sdk@0.6.2` 的 `llm/streaming` 按需入口走 OpenAI-compatible SSE 流式对话,
3
+ 用 `@henjicc/ai-sdk@0.6.2` 的 `llm/streaming` 按需入口走 OpenAI-compatible SSE 流式对话,
4
4
  不会把 generation、BigModel preset/models/pricing、Groq 或 LLM modules 打进示例 bundle;
5
5
  通用端点身份解析所需的 BigModel profiles 仍会保留。默认目标是
6
6
  DeepSeek `deepseek-v4-flash`,提示词要求只回复 `SDK OK`,并限制最多 16 tokens。示例显式传入
7
7
  `reasoning: { enabled: false, effort: 'high' }`,避免短输出预算被供应商默认思考过程占用;若流结束后
8
- 没有任何文本 token,示例会明确失败。
9
-
10
- 输出上限使用有类型定义的 `maxOutputTokens`。省略时 SDK 不再自动写入 4096;调用方可以按字幕长度
11
- 和模型上限选择更大的值。`runLlmChatStream` 的执行参数不传 `timeoutMs` 时没有请求总时限,CEP
12
- 网络适配可在 `Transport` 中实现“长时间无数据才超时”。正式结构化输出可通过
13
- `structuredOutput` 选择 `text`、`json_object` 或带 `name/schema/strict` 的 `json_schema`,并通过
14
- `capabilities.structuredOutputMode` 与 `structuredOutputWithReasoning` 明确声明模型能力。
8
+ 没有任何文本 token,示例会明确失败。
9
+
10
+ 输出上限使用有类型定义的 `maxOutputTokens`。省略时 SDK 不再自动写入 4096;调用方可以按字幕长度
11
+ 和模型上限选择更大的值。`runLlmChatStream` 的执行参数不传 `timeoutMs` 时没有请求总时限,CEP
12
+ 网络适配可在 `Transport` 中实现“长时间无数据才超时”。正式结构化输出可通过
13
+ `structuredOutput` 选择 `text`、`json_object` 或带 `name/schema/strict` 的 `json_schema`,并通过
14
+ `capabilities.structuredOutputMode` 与 `structuredOutputWithReasoning` 明确声明模型能力。
15
15
 
16
16
  ```bash
17
17
  npm install
@@ -68,7 +68,7 @@ async function main(): Promise<void> {
68
68
  reasoning: providerId === 'deepseek'
69
69
  ? { enabled: false, effort: 'high' }
70
70
  : undefined,
71
- maxOutputTokens: 16,
71
+ maxOutputTokens: 16,
72
72
  }
73
73
  const taskId = resolveLlmTaskId(request)
74
74
  let output = ''
@@ -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.6.2"
12
+ "@henjicc/ai-sdk": "0.6.2"
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.6.0"
11
+ "@henjicc/ai-sdk": "0.6.0"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@types/node": "^24.0.0",