@ai-stats/ai-sdk-provider

中文文档
1.0.1发布于 2026/02/12MITTypeScriptES Module构建来源已验证近 30 天下载 2864

Vercel AI SDK的 AI Stats 网关提供者

此软件包已被标记为弃用

AI Stats is now Phaseo. Please migrate to @phaseo/ai-sdk-provider.

中文使用文档
文档目录45 节
  1. 特征
  2. 安装
  3. 快速启动
  4. 基本用途
  5. 流线
  6. 工具调用
  7. 结构化输出
  8. 嵌入层
  9. 图像生成
  10. 音频译名( 语音对文本)
  11. 文字对语言
  12. 配置
  13. 环境变量
  14. 自定义配置
  15. 模型设置
  16. 支持供应商
  17. 主要供应商
  18. 开源模型
  19. 专业供应商
  20. 模式标识格式
  21. API 参考
  22. createAIStats(settings?)
  23. aiStats(modelId, settings?)
  24. 实例
  25. 测试
  26. 运行 Moc 测试( 免费 - 没有 API 呼叫)
  27. 运行集成测试( 需要 API 密钥)
  28. 测试范围
  29. 高级使用
  30. 自定义获取执行
  31. 处理错误
  32. 用法跟踪
  33. 如何运作
  34. 使用AI Stats网关的好处
  35. 解决问题
  36. "AI Stats API 键是需要的"
  37. "盖特威请求失败: 401"
  38. "盖特威请求失败:429"
  39. 流出不工作
  40. 未执行的工具调用
  41. 类型脚本支持
  42. 捐款
  43. 许可证
  44. 链接
  45. 支助

AI Stats Gateway 为Vercel AI SDK提供商

公务 维塞尔 AI SDK 提供方 AI Stats 网关,允许进入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) - 文字对语言和语音对文字的能力 ⚡ 流线 - 实时代币流与使用情况跟踪 🔐 类型安全 - 严格类型的全类型脚本支持 🌐 提供者路线 - 自动认识健康的路由和故障

安装

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

快速启动

基本用途

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);

流线

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);
}

工具调用

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",
            }),
        },
    },
});

结构化输出

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",
});

嵌入层

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"],
});

图像生成

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

音频译名( 语音对文本)

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

文字对语言

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 密钥设定为环境变量 :

export AI_STATS_API_KEY=your_api_key_here

然后使用默认实例:

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

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

自定义配置

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
    },
});

模型设置

配置特定模型参数 :

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的超快推论
  • 大赦国际: 有快速推论的开源模型
  • 烟花: 开放模型的最佳推论
  • 心管: 极快的推论

查看所有支持的模型 {}

模式标识格式

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

// 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/ 完整工作示例目录 :

文本语言( L) :

嵌入搜索( S) :

图像 :

音频 :

多服务:

测试

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

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

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

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

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

AI_STATS_API_KEY=your_key pnpm test

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

测试范围

pnpm test -- --coverage

测试文件 :

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

高级使用

自定义获取执行

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;
    },
});

处理错误

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);
    }
}

用法跟踪

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 写成, 并提供完整的类型定义 :

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

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

捐款

欢迎捐款! 请看 捐款额 准则.

许可证

麻省理工学院执照 - 看 自由主义 详细情况.

支助


由AI Stats团队制作

版本与发布记录

@ai-stats/ai-sdk-provider 共发布 1 个版本,首次发布于 2026/02/12;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.1latest2026/02/128 个月前

关于 @ai-stats/ai-sdk-provider 的常见问题

@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。作者已将其标记为弃用,新项目建议寻找替代方案。