@ai-sdk-tool/parser

中文文档
5.1.6发布于 2026/07/26Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 3.6万

用于工具调用的AI SDK 中间软件

中文使用文档
文档目录12 节
  1. 安装
  2. AI SDK 兼容性
  3. 升级到 v7
  4. 工具结果介质(图像/文件)
  5. 软件包映射
  6. 快开始
  7. 选择中间软件
  8. 构建自定义中间软件
  9. 工具选择
  10. 流出语义
  11. 地方发展
  12. 此回购中的例子
AI SDK Tool monorepo banner

npm - parser npm downloads - parser codecov

用于解析非本地支持的模型中的工具调用 AI SDK 中间软件 tools。 。 。 .

这一一揽子措施仅限无害环境管理。 使用 import 或动态 import()页:1 require() 不被支持.

安装

# Current stable line (v5.x) — built for AI SDK v7
pnpm add @ai-sdk-tool/parser

如果您还需要 AI SDK v6 线, 请将上一条主线 :

pnpm add @ai-sdk-tool/parser@4

AI SDK 兼容性

从这回扣中查清了事实 CHANGELOG.md npm发布元数据(截至2026-06-25).

@ai-sdk-tool/parser 主要AI SDK 专业维持现状
v1.xv4.x遗产(未积极保留)
v2.xv5.x遗产(未积极保留)
v3.xv6.x遗产(未积极保留)
v4.xv6.x上一条稳定线
v5.xv7.x活动( 当前) latest 线条)

注:在发布/更改日志中,没有单独正式的EOL公告 v1- 说吧v3;"legacy"此处指非流出行.

升级到 v7

这个 5.0.0 目标 大赦国际SDK v7 (提供方规格v4). 是现在 latest 线 v4.x 线条仍然可供AI SDK v6使用.

pnpm add @ai-sdk-tool/parser

打破更改与 v4.x 线条:

  • 要求数 ai@^7 编号 : @ai-sdk/provider@^4。 。 。 . 此行为 没有 兼容 AI SDK v6 线. 中间软件声明 specificationVersion: "v4" 并使用 LanguageModelV4* 提供者类型.
  • @ai-sdk/provider 财务报告和审定财务报表 @ai-sdk/provider-utils 现在属于同伴依赖关系. 他们通常通过 ai@7,因此大多数应用程序不需要额外安装. 如果您的软件包管理器没有自动安装对等器,请明确添加:
    pnpm add @ai-sdk/provider@^4 @ai-sdk/provider-utils@^5
    
  • 节点.js >=22 需要时间 (节点18为去生.
  • 工具结果文件部分现在使用被标记为 v4 文件形状({ type: "data", data }而不是赤裸裸的 data 绳子。 这只影响直接构建工具结果文件部件的代码.

工具结果介质(图像/文件)

当一个工具返回多模式时 output: { type: "content", value: [...] },中间的软件项目, 变成下一个模型:

mediaStrategy.mode行为
model (单位:千美元)默认(中文(简体) )前进峡谷 { type: "file", data } 内容为模型文件部分。 协议包装器为相邻 text。 。 。 .
placeholder仅文本后退( E)[Image: image/png], (中文(简体) ), [File URL: ...],.)用于非视觉模型.
auto当 capabilities 启用该介质类型; 否则将占位符 .
import {
  createHermesToolResponseFormatter,
  createToolMiddleware,
  hermesProtocol,
  hermesSystemPromptTemplate,
} from "@ai-sdk-tool/parser";

// Default preconfigured middleware already uses model media mode.
// For text-only models, opt into placeholders:
const textOnlyMiddleware = createToolMiddleware({
  protocol: hermesProtocol(),
  toolSystemPromptTemplate: hermesSystemPromptTemplate,
  toolResponsePromptTemplate: createHermesToolResponseFormatter({
    mediaStrategy: { mode: "placeholder" },
  }),
});

// YAML XML tool *responses* reuse Morph's response formatter — use the Morph
// factory when you need mediaStrategy options with yamlXmlProtocol.

仅 http: 编号 : https: 文件 URL 作为模型文件部分转发;其他方案成为占位符。 将 JSON 数据化工具结果的字符串 URL 重排为 URL 故意的物体.

用户信息图像没有变化——它们通过现在.

状态 : 5.0.0 是稳定释放线。 如果您需要再生产安装, 请按精确的版本 .

软件包映射

导入目的
@ai-sdk-tool/parser主要中间软件厂,预配置的中间软件,协议出口
@ai-sdk-tool/parser/community社区中间软件(Sijawara,UI-TARS)

快开始

import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { morphXmlToolMiddleware } from "@ai-sdk-tool/parser";
import { stepCountIs, streamText, wrapLanguageModel } from "ai";
import { z } from "zod";

const model = createOpenAICompatible({
  name: "openrouter",
  apiKey: process.env.OPENROUTER_API_KEY,
  baseURL: "https://openrouter.ai/api/v1",
})("arcee-ai/trinity-large-preview:free");

const result = streamText({
  model: wrapLanguageModel({
    model,
    middleware: morphXmlToolMiddleware,
  }),
  stopWhen: stepCountIs(4),
  prompt: "What is the weather in Seoul?",
  tools: {
    get_weather: {
      description: "Get weather by city name",
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, condition: "sunny", celsius: 23 }),
    },
  },
});

for await (const part of result.fullStream) {
  // text-delta / tool-input-start / tool-input-delta / tool-input-end / tool-call / tool-result
}

选择中间软件

使用预配置的中间软件导出 src/preconfigured-middleware.ts数字 :

中间软件最好还是
hermesToolMiddlewareJSON型工具有效载荷
morphXmlToolMiddleware具有有计划意识的XML型有效载荷
yamlXmlToolMiddlewareXML 工具标记 + YAML 机构
qwen3CoderToolMiddlewareQuen/UI-TARS 风格 <tool_call> 标记

构建自定义中间软件

import { createToolMiddleware, qwen3CoderProtocol } from "@ai-sdk-tool/parser";

export const myToolMiddleware = createToolMiddleware({
  protocol: qwen3CoderProtocol,
  toolSystemPromptTemplate: (tools) =>
    `Use these tools and emit <tool_call> blocks only: ${JSON.stringify(tools)}`,
});

工具选择

  • toolChoice: "auto" (默认)解析工具调出模型文本 .
  • toolChoice: "required" 财务报告和审定财务报表 toolChoice: { type: "tool", toolName } 通过 JSON 复制 responseFormat 限制.
  • toolChoice: "none" 跳过工具即时插入和工具调用解析;对话中的工具调用历史仍然被序列化为文本.

流出语义

  • 流出解析器 tool-input-start, (中文(简体) ), tool-input-delta,以及 tool-input-end 当工具输入可以被渐进重建时.
  • tool-input-start.id, (中文(简体) ), tool-input-end.id,以及最终 tool-call.toolCallId 调和到同一个身份.
  • emitRawToolCallTextOnError 默认为 false; 错误的工具调用标记被压制 text-delta 除非明确启用.
  • 由赤色组成的文本块 {"name": ..., "arguments": ...} 已知工具的有效载荷(或有栅栏的qqjson块)在生成道和流道中被回收为工具调用 finishReason 改为 tool-calls 当工具呼叫被解析时.

通过配置解析错误行为 providerOptions.toolCallMiddleware数字 :

const result = streamText({
  // ...
  providerOptions: {
    toolCallMiddleware: {
      onError: (message, metadata) => {
        console.warn(message, metadata);
      },
      emitRawToolCallTextOnError: false,
    },
  },
});

地方发展

pnpm build
pnpm test
pnpm check:biome
pnpm check:types
pnpm check

此回购中的例子

  • 解析中间软件示例 : examples/parser-core/README.md
  • RXML 示例 : examples/rxml-core/README.md

从 repo 根中运行一个示例 :

pnpm dlx tsx examples/parser-core/src/01-stream-tool-call.ts

版本与发布记录

@ai-sdk-tool/parser 共发布 82 个版本,首次发布于 2025/04/20;过去 12 个月发布了 54 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.1.6latest2026/07/263 个月前
5.1.52026/07/263 个月前
5.1.42026/07/133 个月前
5.1.32026/07/133 个月前
5.1.22026/07/093 个月前
5.1.12026/07/064 个月前

其他发布通道:canary → 3.0.0-canary.3,beta → 5.0.0-beta.1。

关于 @ai-sdk-tool/parser 的常见问题

@ai-sdk-tool/parser 是什么?

用于工具调用的AI SDK 中间软件

如何安装 @ai-sdk-tool/parser?

在项目目录运行 npm install @ai-sdk-tool/parser,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@ai-sdk/provider(^4.0.0)、@ai-sdk/provider-utils(^5.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@ai-sdk-tool/parser 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ai-sdk-tool/parser 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ai-sdk-tool/parser 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ai-sdk-tool/parser 可以商用吗?

@ai-sdk-tool/parser 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@ai-sdk-tool/parser 的下载量有多少?

根据 npm 官方下载统计,@ai-sdk-tool/parser 在 2026/10/05 – 2026/11/03 这 30 天内被下载 35,797 次,日均约 1,193 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ai-sdk-tool/parser 还在维护吗?

最新版本 5.1.6 发布于 2026/07/26(3 个月前);至今共发布 82 个版本,其中过去 12 个月发布了 54 个;首次发布于 2025/04/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。