# @ai-stats/ai-sdk-provider 中文文档

规范地址：https://npmcn.com/package/%40ai-stats/ai-sdk-provider/

版本：1\.0\.1
npm 元数据更新时间：2026-07-04T10:44:15.724Z
中文译文更新时间：2026-11-06T15:42:05.286Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ai-stats/ai-sdk-provider
原文对照：https://npmcn.com/package/%40ai-stats/ai-sdk-provider/?lang=original
项目主页：https://github.com/AI-Stats/AI-Stats#readme
源码仓库：https://github.com/AI-Stats/AI-Stats

弃用说明：AI Stats is now Phaseo\. Please migrate to @phaseo/ai-sdk-provider\.

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：116 kB，70 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18\.0\.0
- 运行依赖：2 个
- peer 依赖：ai ^6\.0\.0
- 首次发布：2026-02-12T15:52:03.359Z
- 最新版本发布：2026-02-12T15:52:03.639Z
- 近 30 天下载量：2864（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 1 个）

## 中文简介

Vercel AI SDK的 AI Stats 网关提供者

## 安装

```sh
npm install @ai-stats/ai-sdk-provider
```

也可以使用：`pnpm add @ai-stats/ai-sdk-provider`、`yarn add @ai-stats/ai-sdk-provider`、`bun add @ai-stats/ai-sdk-provider`

## README

# AI Stats Gateway 为Vercel AI SDK提供商

公务 [维塞尔 AI SDK](https://sdk.vercel.ai/docs) 提供方 [AI Stats 网关](https://ai-stats.phaseo.app/),允许进入55+ AI供应商通过统一的接口.

## 特征

✨ **统一访问** - 通过单一的SDK使用55+AI供应商(OpenAI、Anthropic、Google、Mistral、DeepSeek等) 🔄 **完整 AI SDK v6 支持** - 与所有Vercel AI SDK原始人合作:

-   文本 : `generateText`, (中文(简体) ), `streamText`, (中文(简体) ), `generateObject`, (中文(简体) ), `streamObject`
-   嵌入: `embed`, (中文(简体) ), `embedMany`
-   图像 : `generateImage`
-   音频 : `transcribe` (STT), (中文(简体) ), `speak` (TTS) (韩语) 🛠️ **工具调用** - 对功能/工具的完整支持,并行执行 📦 **结构化输出** - 以 JSON 计划生成打出的对象 🔢 **嵌入层** - 生成用于语义搜索和类似性的矢量嵌入 🖼️ **图像生成** - 从文本提示创建图像( DALL- E, Flux等) 🎙️ **语音译名( T)** - 文字对语言和语音对文字的能力 ⚡ **流线** - 实时代币流与使用情况跟踪 🔐 **类型安全** - 严格类型的全类型脚本支持 🌐 **提供者路线** - 自动认识健康的路由和故障

## 安装

```bash
npm install @ai-stats/ai-sdk-provider ai@^6
```

## 快速启动

### 基本用途

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { generateText } from "ai";

const result = await generateText({
    model: aiStats("openai/gpt-4o"),
    prompt: "Explain quantum computing in simple terms",
});

console.log(result.text);
```

### 流线

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { streamText } from "ai";

const { textStream } = await streamText({
    model: aiStats("anthropic/claude-3-5-sonnet"),
    prompt: "Write a poem about TypeScript",
});

for await (const chunk of textStream) {
    process.stdout.write(chunk);
}
```

### 工具调用

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { generateText } from "ai";
import { z } from "zod";

const result = await generateText({
    model: aiStats("openai/gpt-4o"),
    prompt: "What is the weather in San Francisco?",
    tools: {
        getWeather: {
            description: "Get weather for a location",
            parameters: z.object({
                location: z.string(),
            }),
            execute: async ({ location }) => ({
                temperature: 72,
                conditions: "sunny",
            }),
        },
    },
});
```

### 结构化输出

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { generateObject } from "ai";
import { z } from "zod";

const { object } = await generateObject({
    model: aiStats("openai/gpt-4o"),
    schema: z.object({
        name: z.string(),
        age: z.number(),
        email: z.string().email(),
    }),
    prompt: "Generate a sample user profile",
});
```

### 嵌入层

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { embed, embedMany } from "ai";

// Single embedding
const { embedding } = await embed({
    model: aiStats.textEmbeddingModel("openai/text-embedding-3-small"),
    value: "Hello, world!",
});

// Batch embeddings
const { embeddings } = await embedMany({
    model: aiStats.textEmbeddingModel("openai/text-embedding-3-small"),
    values: ["First text", "Second text", "Third text"],
});
```

### 图像生成

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { generateImage } from "ai";

const { images } = await generateImage({
    model: aiStats.imageModel("openai/dall-e-3"),
    prompt: "A serene landscape with mountains at sunset",
    size: "1024x1024",
});

console.log(images[0].url); // Image URL or base64
```

### 音频译名( 语音对文本)

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { transcribe } from "ai";
import { readFileSync } from "fs";

const audioData = readFileSync("./audio.mp3");

const { text, segments } = await transcribe({
    model: aiStats.transcriptionModel("openai/whisper-1"),
    audioData: new Blob([audioData], { type: "audio/mp3" }),
    language: "en", // optional
});

console.log(text); // Transcribed text
```

### 文字对语言

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { speak } from "ai";
import { writeFileSync } from "fs";

const { audio } = await speak({
    model: aiStats.speechModel("openai/tts-1"),
    text: "Hello, this is text to speech!",
    voice: "alloy", // alloy, echo, fable, onyx, nova, shimmer
    outputFormat: "mp3",
});

writeFileSync("./speech.mp3", audio);
```

## 配置

### 环境变量

将您的 API 密钥设定为环境变量 :

```bash
export AI_STATS_API_KEY=your_api_key_here
```

然后使用默认实例:

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";

const result = await generateText({
    model: aiStats("openai/gpt-4o"),
    prompt: "Hello!",
});
```

### 自定义配置

```typescript
import { createAIStats } from "@ai-stats/ai-sdk-provider";

const aiStats = createAIStats({
    apiKey: "your_api_key",
    baseURL: "https://api.phaseo.app/v1", // optional
    headers: {
        "X-Custom-Header": "value", // optional
    },
});
```

### 模型设置

配置特定模型参数 :

```typescript
const result = await generateText({
    model: aiStats("openai/gpt-4o"),
    prompt: "Hello!",
    temperature: 0.7,
    maxTokens: 1000,
    topP: 0.9,
    frequencyPenalty: 0.5,
    presencePenalty: 0.5,
    seed: 12345, // for deterministic output
});
```

## 支持供应商

通过网关访问55+AI供应商 :

### 主要供应商

-   **开放AI**数字 : `openai/gpt-4o`, (中文(简体) ), `openai/gpt-4-turbo`, (中文(简体) ), `openai/gpt-3.5-turbo`
-   **安东尼**数字 : `anthropic/claude-3-5-sonnet`, (中文(简体) ), `anthropic/claude-3-opus`, (中文(简体) ), `anthropic/claude-3-haiku`
-   **谷歌**数字 : `google/gemini-2.5-pro-latest`, (中文(简体) ), `google/gemini-2.5-flash-latest`
-   **迷雾**数字 : `mistral/mistral-large`, (中文(简体) ), `mistral/mistral-small`
-   **十.AI. 联合国**数字 : `x-ai/grok-3`, (中文(简体) ), `x-ai/grok-2`

### 开源模型

-   **深层搜索**数字 : `deepseek/deepseek-chat`, (中文(简体) ), `deepseek/deepseek-coder`
-   **问**数字 : `qwen/qwen-3-235b`, (中文(简体) ), `qwen/qwen-3-32b`
-   **元数据**数字 : `meta/llama-3.3-70b`, (中文(简体) ), `meta/llama-3.1-405b`

### 专业供应商

-   **格罗克**: 对Llama、Mixtral、Gemma的超快推论
-   **大赦国际**: 有快速推论的开源模型
-   **烟花**: 开放模型的最佳推论
-   **心管**: 极快的推论

[查看所有支持的模型 {}](https://ai-stats.phaseo.app/api-providers)

## 模式标识格式

模型使用格式 `provider/model-id`数字 :

```typescript
// OpenAI models
aiStats("openai/gpt-4o");
aiStats("openai/gpt-4-turbo");

// Anthropic models
aiStats("anthropic/claude-3-5-sonnet");
aiStats("anthropic/claude-3-opus");

// Google models
aiStats("google/gemini-2.5-pro-latest");

// DeepSeek models
aiStats("deepseek/deepseek-chat");
```

## API 参考

### `createAIStats(settings?)`

创建新的 AI Stats 提供者实例 .

**参数:**

-   `settings.apiKey` (字符串,可选) - API 密钥用于认证. 默认为 `AI_STATS_API_KEY` (原始内容存档于2018-10-21). env var.
-   `settings.baseURL` (字符串,可选) - Gateway base URL. 默认 : `https://api.phaseo.app/v1`
-   `settings.headers` (对象,可选) - 请求中包含的额外标题
-   `settings.fetch` (函数,可选) - 自定义获取执行

**回返情况:** 提供者函数 `(modelId: string, settings?: ModelSettings) => LanguageModelV3`

### `aiStats(modelId, settings?)`

使用默认提供者实例 `AI_STATS_API_KEY` 环境变量.

**参数:**

-   `modelId` (字符串,要求) - 格式的型号ID `provider/model`
-   `settings` (对象,可选) - 模式特定设置

**模型设置 :**

-   `temperature` (数量) - 采样温度 (0-2)
-   `maxTokens` (数字) - 要生成的最大符号
-   `topP` (数目) - 核心取样阈值 (0-1)
-   `topK` (数目) - 最大K取样阈值
-   `frequencyPenalty` (数目) - 频率处罚(-2.0至2.0)
-   `presencePenalty` (数目) - 在场处罚(-2.0至2.0)
-   `seed` (数量) - 确定产出的随机种子
-   `user` (字符串) - 用于跟踪的用户标识符

## 实例

见 [`examples/`](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples) 完整工作示例目录 :

**文本语言( L) :**

-   [基础文本.ts](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/basic-text.ts) - 简单的文本生成
-   [流出中.ts](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/streaming.ts) - 文本流生成
-   [工具( ts)](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/tools.ts) - 函数/工具呼叫
-   [结构化输出.ts](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/structured-output.ts) - 生成结构化数据

**嵌入搜索( S) :**

-   [嵌入( t)](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/embeddings.ts) - 病媒嵌入和相似性

**图像 :**

-   [图像生成.ts](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/image-generation.ts) - 从文本生成图像

**音频 :**

-   [音频描述.ts](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/audio-transcription.ts) - 发言与文字
-   [文本对语音.ts](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/text-to-speech.ts) - 文字对语音

**多服务:**

-   [多提供者.ts](https://npmcn.com/package/%40ai-stats/ai-sdk-provider/examples/multi-provider.ts) - 比较多个供应商

## 测试

该套装包括使用Vitest和AI SDK模拟模型的全面测试覆盖:

### 运行 Moc 测试( 免费 - 没有 API 呼叫)

```bash
cd packages/integrations/ai-sdk-ai-stats
pnpm test
```

模拟测试的使用 `MockLanguageModelV3` 财务报告和审定财务报表 `MockEmbeddingModelV3` 从 `ai/test` 以验证功能,而无需实际调用 API.

### 运行集成测试( 需要 API 密钥)

```bash
AI_STATS_API_KEY=your_key pnpm test
```

集成测试对AI Stats Gateway进行真实的调用,并在存在API密钥时自动启用.

### 测试范围

```bash
pnpm test -- --coverage
```

**测试文件 :**

-   `tests/language-model.test.ts` - 文本生成、流出、工具、结构输出(混合)
-   `tests/embedding-model.test.ts` - 嵌入的生成和相似性(混合)
-   `tests/gateway-integration.test.ts` - 真正的网关测试(需要API密钥)

## 高级使用

### 自定义获取执行

```typescript
import { createAIStats } from "@ai-stats/ai-sdk-provider";

const aiStats = createAIStats({
    fetch: async (url, init) => {
        console.log("Request:", url);
        const response = await fetch(url, init);
        console.log("Response:", response.status);
        return response;
    },
});
```

### 处理错误

```typescript
import { aiStats } from "@ai-stats/ai-sdk-provider";
import { generateText } from "ai";

try {
    const result = await generateText({
        model: aiStats("openai/gpt-4o"),
        prompt: "Hello!",
    });
} catch (error: any) {
    if (error.status === 401) {
        console.error("Invalid API key");
    } else if (error.status === 429) {
        console.error("Rate limit exceeded");
    } else if (error.status >= 500) {
        console.error("Server error, will retry");
    } else {
        console.error("Error:", error.message);
    }
}
```

### 用法跟踪

```typescript
const result = await generateText({
    model: aiStats("openai/gpt-4o"),
    prompt: "Hello!",
});

console.log("Prompt tokens:", result.usage.promptTokens);
console.log("Completion tokens:", result.usage.completionTokens);
console.log(
    "Total tokens:",
    result.usage.promptTokens + result.usage.completionTokens
);
```

## 如何运作

1.  **提供者选择**: 您指定使用 `provider/model` 格式
2.  **网关运行**: AI Stats Gateway 将您的请求传递给合适的提供者
3.  **健康意识失败**: 如果提供者失败, 网关会自动尝试选项
4.  **反应正常化**: 答复与AI SDK格式正常化
5.  **用法跟踪**:自动跟踪托肯的使用和费用

## 使用AI Stats网关的好处

-   **统一计费**:一次付款,使用多个提供者
-   **自动失败**: 供应商冗余,可用性高
-   **成本优化**: 通往最具成本效益的供应商的网关路线
-   **用法分析**: 详细分析和使用情况跟踪
-   **费率限制管理**: 网关处理速度在提供者之间受到限制
-   **模式异形**: 使用映射到真实模型的虚拟模型名称

## 解决问题

### "AI Stats API 键是需要的"

确定你已经设置 `AI_STATS_API_KEY` 环境变量或通过 `apiKey` 改为 `createAIStats()`。 。 。 .

### "盖特威请求失败: 401"

您的 API 密钥无效 。 请检查date=中的日期值 (帮助).

### "盖特威请求失败:429"

你已经超过你的极限。 等一下,再试一次,或提升你的计划.

### 流出不工作

确保您使用 `streamText` 或者说 `streamObject` 从AI SDK,不是 `generateText` 或者说 `generateObject`。 。 。 .

### 未执行的工具调用

确保你已经提供了 `execute` 函数在工具定义中。 AI SDK自动处理执行.

## 类型脚本支持

此软件包以 TypeScript 写成, 并提供完整的类型定义 :

```typescript
import type {
    AIStatsSettings,
    AIStatsModelSettings,
} from "@ai-stats/ai-sdk-provider";

const settings: AIStatsSettings = {
    apiKey: "your_key",
    baseURL: "https://api.phaseo.app/v1",
};
```

## 捐款

欢迎捐款! 请看 [捐款额](https://npmcn.com/package/CONTRIBUTING.md) 准则.

## 许可证

麻省理工学院执照 - 看 [自由主义](https://npmcn.com/package/LICENSE) 详细情况.

## 链接

-   [AI Stats 网关](https://ai-stats.phaseo.app/)
-   [维塞尔 AI SDK](https://sdk.vercel.ai/docs)
-   [文档](https://ai-stats.phaseo.app/docs)
-   [API 参考](https://ai-stats.phaseo.app/docs/api)
-   [GitHub 图像](https://github.com/ai-stats/ai-stats)

## 支助

-   **文档**数字 : [https://ai-stats.phaseo.app/docs. 互联网档案馆的存檔,存档日期2013-12-21](https://ai-stats.phaseo.app/docs)
-   **解析器**:加入我们的社区
-   **电子邮件**数字 : [支持@ai-stats.histano.app](mailto:support@ai-stats.phaseo.app)

* * *

由AI Stats团队制作

## 常见问题

### @ai-stats/ai-sdk-provider 是什么？

Vercel AI SDK的 AI Stats 网关提供者注意：该包已被作者标记为弃用——AI Stats is now Phaseo\. Please migrate to @phaseo/ai-sdk-provider\.

### 如何安装 @ai-stats/ai-sdk-provider？

在项目目录运行 npm install @ai-stats/ai-sdk-provider，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：ai（^6\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @ai-stats/ai-sdk-provider 支持 TypeScript 吗？

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

### @ai-stats/ai-sdk-provider 支持 ESM 还是 CommonJS？

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

### @ai-stats/ai-sdk-provider 需要什么版本的 Node\.js？

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

### @ai-stats/ai-sdk-provider 可以商用吗？

@ai-stats/ai-sdk-provider 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ai-stats/ai-sdk-provider 的下载量有多少？

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

### @ai-stats/ai-sdk-provider 还在维护吗？

最新版本 1\.0\.1 发布于 2026/02/12（8 个月前）；至今共发布 1 个版本，其中过去 12 个月发布了 1 个；首次发布于 2026/02/12。作者已将其标记为弃用，新项目建议寻找替代方案。

