适用场景
Vercel AI SDK 是 TypeScript AI 应用工具集,常用于 Next.js、React、Vue、Svelte 和 Node.js 项目。它提供 OpenAI Compatible provider,可以把天池 Token 接入到 generateText、streamText、工具调用和聊天接口中。
接入值如下:
| 配置项 | 值 |
|---|---|
| package | @ai-sdk/openai-compatible |
| baseURL | https://a.skypool.xyz/v1 |
| apiKey | Consumer API Key,例如 stc-... |
| model | 平台模型名,例如 gemma4:26b |
安装依赖
pnpm add ai @ai-sdk/openai-compatiblenpm:
npm install ai @ai-sdk/openai-compatible配置环境变量
在 .env.local 中写入:
SKYPOOL_API_KEY=stc-...不要把真实 API Key 提交到仓库。
非流式调用
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";import { generateText } from "ai"; const skypool = createOpenAICompatible({ name: "skypool", baseURL: "https://a.skypool.xyz/v1", apiKey: process.env.SKYPOOL_API_KEY,}); const { text, usage, finishReason } = await generateText({ model: skypool.chatModel("gemma4:26b"), prompt: "请用一句话说明 Vercel AI SDK 已经接入天池 Token。", maxOutputTokens: 128,}); console.log(text);console.log(usage);console.log(finishReason);如果你的 AI SDK 版本支持直接调用 provider,也可以把模型写成 skypool("gemma4:26b")。为减少版本差异,本文示例使用显式的 chatModel。
流式调用
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";import { streamText } from "ai"; const skypool = createOpenAICompatible({ name: "skypool", baseURL: "https://a.skypool.xyz/v1", apiKey: process.env.SKYPOOL_API_KEY,}); const result = streamText({ model: skypool.chatModel("gemma4:26b"), prompt: "请分三点介绍天池 Token。", maxOutputTokens: 512,}); for await (const textPart of result.textStream) { process.stdout.write(textPart);}Next.js Route Handler 示例
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";import { streamText } from "ai"; const skypool = createOpenAICompatible({ name: "skypool", baseURL: "https://a.skypool.xyz/v1", apiKey: process.env.SKYPOOL_API_KEY,}); export async function POST(request: Request) { const { messages } = await request.json(); const result = streamText({ model: skypool.chatModel("gemma4:26b"), messages, maxOutputTokens: 1024, }); return result.toUIMessageStreamResponse();}工具调用建议
Vercel AI SDK 会把工具定义转换为模型调用参数。使用天池 Token 时,建议先用支持工具调用的模型验证一个最小工具,再接入复杂工作流。
如果遇到结构化输出或工具调用参数不兼容,先确认:
- 目标模型是否支持工具调用
- 请求是否通过
https://a.skypool.xyz/v1/chat/completions - 是否发送了模型不支持的 provider 专属参数
先用 curl 验证
curl -X POST "https://a.skypool.xyz/v1/chat/completions" \ -H "Authorization: Bearer <consumer_api_key>" \ -H "Content-Type: application/json" \ --data-raw '{ "model": "gemma4:26b", "messages": [ { "role": "user", "content": "请返回一句简短的接入成功提示。" } ], "max_tokens": 64, "stream": false }'排查清单
| 现象 | 处理方式 |
|---|---|
| 环境变量为空 | 确认 .env.local 已设置 SKYPOOL_API_KEY,并重启开发服务器 |
401 | 检查 Consumer API Key 是否有效 |
404 | 检查 baseURL 是否为 https://a.skypool.xyz/v1,模型 ID 是否正确 |
| 流式接口无输出 | 先用 generateText 非流式验证,再切换 streamText |
| 工具调用失败 | 换用支持工具调用的模型,并减少 provider 专属参数 |