# Vercel

> 用一个包为 Vercel AI SDK 智能体提供网页搜索和完整页面读取，或通过 Vercel Connect 调用 Search1API，无需存储 API 密钥。

Canonical URL: https://s1.dev/zh/docs/integrations/vercel

Search1API 能为 Vercel 应用带来：

- **一个 API 完成搜索与阅读。** 你的智能体可以搜索 Google、Reddit、GitHub、YouTube、arXiv 等，读取搜索结果对应的完整页面，并引用所用的 URL。无需第二个抓取服务。
- **只要内容，不要页面外壳。** 针对 Reddit、GitHub、YouTube 等站点的[专用站点解析器](https://s1.dev/zh/docs/guides/site-parsers)会返回帖子及其评论、仓库 README 或视频字幕，而不是导航和广告。
- **无需管理 API 密钥。** 使用 Vercel Connect 时，用户授权其 Search1API 账户，你的代码在运行时请求令牌。

Search1API 提供两种 Vercel 集成：**AI SDK 工具包**和 **Vercel Connect 连接器**。

## 选择集成方式

| | AI SDK 工具包 | Vercel Connect |
| --- | --- | --- |
| 用途 | 为 AI SDK 智能体添加搜索、新闻、页面读取和智能搜索 | 在运行时获取 Search1API 凭证 |
| 包 | `@search1api/ai-sdk` | `@vercel/connect` |
| 认证 | 服务器上的 Search1API API 密钥 | 通过 Connect 授权的 Search1API 账户 |
| 运行环境 | 兼容的服务端 JavaScript 运行时，包括 Next.js | 已关联该连接器的 Vercel 项目 |

如果使用 `generateText` 或 `streamText` 工作流，请选择工具包。如果需要通过 Vercel 管理对用户 Search1API 账户的访问，请选择 Connect。

## AI SDK 工具包

安装工具包：

```bash
npm install @search1api/ai-sdk ai zod
export SEARCH1API_API_KEY="your-api-key"
```

将 `search1apiTools()` 传给 AI SDK 调用的 `tools` 选项。它提供 `search`、`news`、`crawl` 和 `ask`；你可以在应用代码中选择要包含哪些工具并设置搜索参数。

[AI SDK 指南](https://s1.dev/zh/docs/integrations/vercel-ai-sdk)介绍了工具调用、流式输出、配置和错误处理。组织仓库中提供了一个完整的 [Next.js 示例](https://github.com/superagents-lab/search1api-ai-sdk/tree/main/examples/nextjs)。请将模型提供商的凭证与 Search1API API 密钥分开配置。

## Vercel Connect

打开 [Vercel Connect 上的 Search1API](https://vercel.com/connect/search1api) 创建连接器，或在已登录 Vercel CLI 的情况下，于使用方项目中运行以下命令：

```bash
npm install @vercel/connect
vercel link
vercel connect create search1api --name acme-search1api
vercel env pull
```

完成账户授权，并为项目的目标环境启用该连接。在服务端代码中请求令牌：

```ts
import { getToken } from '@vercel/connect';

// 传入服务端认证中已登录用户的 ID。
export async function searchForUser(userId: string, query: string) {
  const token = await getToken('search1api/acme-search1api', {
    subject: { type: 'user', id: userId },
  });

  const response = await fetch('https://api.search1api.com/search', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${token}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ query, max_results: 5, crawl_results: 0 }),
  });

  if (!response.ok) throw new Error(`Search1API returned ${response.status}`);
  return response.json();
}
```

`getToken` 返回一个凭证字符串。请将其保留在服务端，并在调用 Search1API 时使用。将 `acme-search1api` 替换为你的连接器名称。设置步骤请参阅 [Connect 快速入门](https://vercel.com/docs/connect/quickstart)，用户授权和令牌错误请参阅 [SDK 参考](https://vercel.com/docs/connect/ts-sdk-reference)。

Connect 负责管理运行时凭证，AI SDK 包提供工具 schema 和执行逻辑。如果你需要其他 API 能力（例如站点地图发现），请参阅 [REST API 参考](https://s1.dev/api)。

## 验证配置

- **AI SDK 工具包：** 让智能体搜索某个主题并读取一条结果。检查它是否调用了预期的工具并返回来源 URL。
- **Connect：** 从已关联的项目和环境中，为已授权用户请求令牌。如果提示需要授权，请先完成该用户的连接再重试。

## 计费

Search1API 请求使用凭证所属 Search1API 账户的积分。详见[积分与限制](https://s1.dev/zh/docs/essentials/credits-and-limits)。模型用量和 Vercel 服务按各自提供商的方式计费。

## 资源

- [AI SDK 工具指南](https://s1.dev/zh/docs/integrations/vercel-ai-sdk)
- [Vercel Connect 上的 Search1API](https://vercel.com/connect/search1api)
- [npm 上的工具包](https://www.npmjs.com/package/@search1api/ai-sdk)
- [工具包源码](https://github.com/superagents-lab/search1api-ai-sdk)