AI SDK 代码
AI SDK提供自动化代码转换(codemods),在功能被贬值,去掉,或版本间被更改时帮助更新您的代码库.
代码是程序上运行在您的代码库上的变换,允许您轻松应用许多修改而无需手动编辑每个文件.
快速启动
运行全部代码( 建议)
运行所有代码:
npx @ai-sdk/codemod upgrade
这将自动检测和改变您项目中所有应用的代码模式 .
运行版本特定代码
要运行特定版本的代码:
npx @ai-sdk/codemod v4
npx @ai-sdk/codemod v5
npx @ai-sdk/codemod v6
npx @ai-sdk/codemod upgrade
运行单个代码
要运行一个特定的代码:
npx @ai-sdk/codemod <codemod-name> <path>
实例:
# Transform a specific file
npx @ai-sdk/codemod v4/remove-experimental-ai-fn-exports src/app/api/chat/route.ts
# Transform a directory
npx @ai-sdk/codemod v4/replace-baseurl src/lib/
# Transform entire project
npx @ai-sdk/codemod v5/rename-format-stream-part .
可用的代码
v4 代码 (v3 → v4 迁移)
| 代码 | 说明 |
|---|---|
v4/remove-ai-stream-methods-from-stream-text-result | 从流文本结果转换 v4/ remove ai 流方法 |
v4/remove-anthropic-facade | 变形 v4/remove 人类外观 |
v4/remove-await-streamobject | 变形 v4/ remove 等待流对象 |
v4/remove-await-streamtext | 变形 v4/ remove 等待流文本 |
v4/remove-deprecated-provider-registry-exports | 变换 v4/remove 已贬值的供应商登记册出口 |
v4/remove-experimental-ai-fn-exports | 变形 v4/ remove 实验 ai fn 输出 |
v4/remove-experimental-message-types | 转换 v4/ 移动实验消息类型 |
v4/remove-experimental-streamdata | 变形 v4/ 移动实验流数据 |
v4/remove-experimental-tool | 变形 v4/ 移动实验工具 |
v4/remove-experimental-useassistant | 变换 v4/ 移走实验用途 |
v4/remove-google-facade | 变形 v4/ remove google 外观 |
v4/remove-isxxxerror | 变换 v4/ remove 是xxxror |
v4/remove-metadata-with-headers | 有信头的变形 v4/ 移动元数据 |
v4/remove-mistral-facade | 变形 v4/remove 雾化外观 |
v4/remove-openai-facade | 变形 v4/ remove openai 外观 |
v4/rename-format-stream-part | 变形 v4/ rename 格式流部分 |
v4/rename-parse-stream-part | 变形 v4/ rename 剖析流部分 |
v4/replace-baseurl | 变形 v4/ 替换基底图 |
v4/replace-continuation-steps | 变换 v4/ 替换继续步骤 |
v4/replace-langchain-toaistream | 变换 v4/ 替换朗链 toaistream |
v4/replace-nanoid | 变形 v4/ 替换纳米 |
v4/replace-roundtrips-with-maxsteps | 变换 v4/ 以最大步取代圆形 |
v4/replace-token-usage-types | 变换 v4/ 替换符号使用类型 |
v4/rewrite-framework-imports | 转换 v4/ 重写框架导入 |
v5 代码 (v4 → v5 迁移)
| 代码 | 说明 |
|---|---|
v5/flatten-streamtext-file-properties | 变形 v5/平面流文本文件属性 |
v5/import-LanguageModelV2-from-provider-package | 从提供者软件包中转换 v5/ 导入语言模型V2 |
v5/migrate-to-data-stream-protocol-v2 | 转换 v5/ miglate 为数据流协议 v2 |
v5/move-image-model-maxImagesPerCall | 变形 v5/ 移动图像模型最大图像 |
v5/move-langchain-adapter | 变形 v5/ 移动朗链适配器 |
v5/move-maxsteps-to-stopwhen | 变形 v5/ 移动最大步以停止 |
v5/move-provider-options | 变换 v5/ 移动提供者选项 |
v5/move-react-to-ai-sdk | 变形 v5/ 移动对 ai sdk 反应 |
v5/move-ui-utils-to-ai | 变形 v5/ 移动 ui utils 到 ai |
v5/remove-experimental-wrap-language-model | 变形 v5/ 重新移动实验性包装语言模型 |
v5/remove-get-ui-text | 变形 v5/ remove 获取 ui 文本 |
v5/remove-openai-compatibility | 变换 v5/ remove openai 兼容性 |
v5/remove-sendExtraMessageFields | 变形 v5/ remove 发送ExtraMessage 字段 |
v5/rename-IDGenerator-to-IdGenerator | 变换 v5/ 重命名 IDGenerator 到 IdGenerator |
v5/rename-addtoolresult-to-addtooloutput | 转换 v5/ rename 添加工具结果以添加工具输出 |
v5/rename-converttocoremessages-to-converttomodelmessages | 转换 v5/ 重名转换为分数消息以转换为模式消息 |
v5/rename-core-message-to-model-message | 转换 v5/ 重命名核心消息到模式消息 |
v5/rename-datastream-methods-to-uimessage | 转换 v5/ 重命名数据流方法为 uimessage |
v5/rename-datastream-transform-stream | 变换 v5/ 重命名数据流变换流 |
v5/rename-languagemodelv1providermetadata | 变形 v5/ 重命名语言模型v1 professormetadata |
v5/rename-max-tokens-to-max-output-tokens | 将 v5/ 重命名最大符号转换为最大输出符号 |
v5/rename-message-to-ui-message | 变换 v5/ 重命名消息到 ui 消息 |
v5/rename-mime-type-to-media-type | 将 v5/ rename mime 类型转换为媒体类型 |
v5/rename-pipedatastreamtoresponse-to-pipeuimessagestreamtoresponse | 变形 v5/ 重命名 管道数据流响应 管道信息流响应 |
v5/rename-reasoning-properties | 变形 v5/ rename 推理属性 |
v5/rename-reasoning-to-reasoningText | 变换 v5/ 重命名推理为推理 文本 |
v5/rename-request-options | 变形 v5/ rename 请求选项 |
v5/rename-todatastreamresponse-to-touimessagestreamresponse | 变换 v5/ 重命名为数据流响应 toimesagestream 响应 |
v5/rename-tool-parameters-to-inputschema | 转换 v5/ 重命名工具参数到输入计 |
v5/replace-bedrock-snake-case | 变形 v5/取代地基蛇案 |
v5/replace-content-with-parts | 转换 v5/ 替换部分内容 |
v5/replace-datastream-to-uimessagestream | 变换 v5/ 重置数据流到 uimessage 流 |
v5/replace-experimental-provider-metadata | 变换 v5/ 替换实验提供者元数据 |
v5/replace-fal-snake-case | 变形 v5/ 替换叶蛇案 |
v5/replace-image-type-with-file-type | 转换 v5/ 用文件类型替换图像类型 |
v5/replace-llamaindex-adapter | 变换 v5/ 替换 lamaindex 适配器 |
v5/replace-oncompletion-with-onfinal | 完成时变换 v5/ 替换为 Final |
v5/replace-provider-metadata-with-provider-options | 变换 v5/ 替换有提供者选项的提供者元数据 |
v5/replace-rawresponse-with-response | 变换 v5/ 替换原始响应与响应 |
v5/replace-redacted-reasoning-type | 变换 v5/ 替换已编辑的推理类型 |
v5/replace-simulate-streaming | 变形 v5/ 替换模拟流线 |
v5/replace-textdelta-with-text | 变换 v5/ 替换文本delta |
v5/replace-usage-token-properties | 变形 v5/ 替换使用符属性 |
v5/replace-usechat-api-with-transport | 变换 v5/ 替换带传送功能的 usechat api |
v5/replace-usechat-input-with-state | 变换 v5/ 替换使用聊天输入状态 |
v5/replace-zod-import-with-v3 | 转换 v5/ 替换以 v3 导入的 zod |
v5/require-createIdGenerator-size-argument | 变形 v5/ 需要创建 IdGenerator 大小参数 |
v5/restructure-file-stream-parts | 变换 v5/ 结构文件流部件 |
v5/restructure-source-stream-parts | 变换 v5/ 结构源流部件 |
v5/rsc-package | 变形 v5/rsc 软件包 |
v6 代码 (v5)- v6 迁移)
| 代码 | 说明 |
|---|---|
v6/add-await-converttomodelmessages | 变换 v6/ 添加等待转换到模式 |
v6/rename-converttocoremessages-to-converttomodelmessages | 转换 v6/ 重名转换为调制模式 |
v6/rename-core-message-to-model-message | 变换 v6/ 重命名核心消息到模式消息 |
v6/rename-mock-v2-to-v3 | 变形 v6/ rename 模拟 v2 到 v3 |
v6/rename-text-embedding-to-embedding | 转换 v6/ 重命名文本嵌入到嵌入 |
v6/rename-tool-call-options-to-tool-execution-options | 变换 v6/ rename 工具调用选项到工具执行选项 |
v6/rename-vertex-provider-metadata-key | 变形 v6/ 重命名顶点提供者元数据密钥 |
v6/wrap-tomodeloutput-parameter | 转换 v6/ wrap 模式输出参数 |
CLI 选项
图标
npx @ai-sdk/codemod@beta <command> [options]
可用命令 :
upgrade- 应用所有编码(v4 + v5 + v6)v4- 应用 v4 代码(v3 – v4 迁移)v5- 应用 v5 代码(v4)- v5 迁移)v6- 应用 v6 代码(v5)- v6 迁移)<codemod-name> <path>- 应用特定的代码
全球选项
--dry- 不应用而预览更改--print- 打印转换的代码到 stdout--verbose- 显示详细的转换日志
实例
# Preview all changes without applying
npx @ai-sdk/codemod@beta --dry upgrade
# Preview v4 changes only
npx @ai-sdk/codemod@beta --dry v4
# Preview v5 changes only
npx @ai-sdk/codemod@beta --dry v5
# Preview v6 changes only
npx @ai-sdk/codemod@beta --dry v6
# Show verbose output for specific codemod
npx @ai-sdk/codemod@beta --verbose v4/remove-experimental-ai-fn-exports src/
# Print transformed code for specific codemod
npx @ai-sdk/codemod@beta --print v4/replace-baseurl src/config.ts
最佳做法
在运行代码前
- 备份您的代码 - 将所有更改提交版本控制
- 审查当前贬值警告 - 先解决任何明显的问题
- 更新依赖关系 - 确保你进入目标AI SDK版本
运行代码后
- 审查变化 - 检查diff 了解什么被改变
- 测试您的应用程序 - 确保一切如所料
- 处理边缘大小写 - 一些复杂的模式可能需要人工修正
- 运行类型检查 - 纠正任何仍然存在的类型脚本错误
解决问题
如果一个代码没有改变一些代码:
- 检查文件扩展名 - 代码在工作
.ts, (中文(简体) ),.tsx, (中文(简体) ),.js, (中文(简体) ),.jsx文件 - 审查模式 - 复杂或不寻常的代码模式可能需要人工更新
- 运行特定的代码 - 尝试运行个人代码以进行目标修正
- 检查文档 - 有些修改可能没有自动编码器
捐款
添加新代码
- 在
src/codemods/ - 在
src/test/__testfixtures__/ - 创建测试在
src/test/ - 更新捆绑
src/lib/upgrade.ts
测试代码
首先,导航到编码器目录:
cd packages/codemod
然后进行测试:
# Run all tests
pnpm test
# Run specific codemod tests
pnpm test <codemod-name>
# Test in development
pnpm test:watch
支助
- 文档数字 : AI SDK 迁移指南
- 问题数字 : GitHub 问题
- 社区数字 : 解析器
版本兼容性
- AI SDK 6.0: 此软件包中的所有代码
- AI SDK 5.0: 使用 v4 + v5 编码器
- AI SDK 4.x 软件: 使用
@ai-sdk/[email protected] - 大赦国际 SDK 3.x需要人工迁移
更详细的移徙信息见: