#21047·ai

AI SDK 7 在适应 v3 语言模型时不会转换文件数据

作者: brennanbutler01创建于 2026年9月17日更新于 2026年9月18日
标签task-identify-issue-type-donetask-bug-reproduction-successfactory-activefactory-automatictask-identify-harness-labels-done

说明

AI SDK 7接受"语言ModelV3",但文件数据不转换为v3和v4格式:

  • **输入:**一个v3模型收到QQ类型:"数据",数据:Uint8Array (.) 而不是其界面所需的原始"Uint8Array". 支持的文件 URL 也以 QQ 类型到达 : “ url ” , URl 而不是 URL 。
  • 输出: 当一v3模型返回有效的内行文件数据("Uint8Array"或"base64")时, “生成文本” 抛出“ TypeError: 无法读取未定义的属性(读取“ to String”) 。 文件块上的 " streamText " 也出错 。

预期:v3相容适配器双向保存v3文件合同.

asLangage ModelV4'目前代用该模型,仅修改了规格Version'。 它将 v4 迅速数据转发到 v3 模型,并将 v3 的结果传递回原地不变. 然后核心将结果读取为被标记为v4的文件数据. 该适配器和相关文件类型在当前"main"('12845693d7a6a517dc633d6b6a2e4f5bfd24d2ec';源比较,不是全主运行时间测试)上没有变化.

这与#20951不同:这些是V3模型的内置文件,而不是从v4模型生成的URL.

  • 复制

不需要 API 密钥或网络呼叫 。 与节点24相接,安装"[email protected]"和"[email protected]",将它保存为"repro.mts"并运行"node repro.mts":

从“ ai” 导入 {生成文本 } ; 从“ai/test”导入{MockLanguage ModelV3};

使用量={ 输入托肯斯 : { 总计:1, 无缓存 : 1, 缓存读取 : 0, 缓存 Write: 0}, 输出托肯斯 : {共计: 1, 文本: 1, 推理: 0},

  • ; 倒数输入 Model = 新的MockLangage ModelV3({ doGenerate: { 请检查url=中的日期值 (帮助) 内容 : [{类型:"text",正文:"合成响应."}, 完成Reason : { 统一:"停止",生:"停止"}, 用途, 警告:[ ], {\fn华文楷体\fs16\1cHE0E0E0}
  • ; 等待生成文本( { ) 模型:输入模型, 信件 : [{作用: 'user', 内容: [{ 类型 : “ 文件” , 介质 Type: “应用程序/pdf” , 数据 : 新的 Uint8Array([37、80、68、70]), [ [ ] ] , 最大检索数: 0,
  • ; 用于(输入的连续消息Model.doGenerateCalls[0].prompt){ 如果(message.role!=== "用户")继续; 为(信件的第一部分.content){ 如果( part. type QQ' file') 控制台.log ( “ v3 输入数据 ” ), part. data ; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

压缩输出 Model = 新的MockLangage ModelV3({) doGenerate: { 请检查url=中的日期值 (帮助) 内容: [{类型:'file',mediaType:'image/png',数据:新的Uint8Array ([1, 2, 3]]}, 完成Reason : { 统一:"停止",生:"停止"}, 用途, 警告:[ ], {\fn华文楷体\fs16\1cHE0E0E0}

  • ; 尝试{ const result = 等待生成 Text({ 型号: 输出模式, 提示: “ 合成快取 . ” , 最大重试: 0 } ); contail.log ('v3 输出数据 :', results. files [0].uint8 Array; 捕捉(反射){ 控制台.log ('v3 输出 :'), 错误实例 ? “ ${error.name} : ${error.message} : 错误 ”; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

实际产出:

页:1
v3 输入数据 : {类型:'data', 数据: Uint8Array(4) [37, 80, 68, 70]}
v3 输出: TypeError: 无法读取未定义的属性( 读取" to String" )

输入应为生字节数组;输出应为`Uint8Array(3) [1,2,3]'.

其他当地 . . . . . . .