发布时间: 2026年10月1日更新时间: 2026年10月1日

Vercel AI 代理 IP 配置指南:模型 API 与请求转发

Vercel AI 代理 IP 配置指南:模型 API 与请求转发,覆盖 Serverless/Node.js Runtime、环境变量和超时排查。

在 Vercel 项目中,代理 IP 应配置在真正发起模型 API 请求的服务端函数中,而不是只在浏览器端设置。先验证服务端出口 IP,再检查 AI SDK、上游 API Key、运行时和函数超时。

Vercel AI 请求链路中代理 IP 应该放在哪里

完整链路可以写成:浏览器 → Vercel 函数 → HTTP 客户端或代理连接层 → 模型 API。代理配置应位于 Vercel 函数实际发出上游请求的位置,模型 API Key 也应保留在服务端环境变量中。

需要先确定请求是在浏览器、Vercel 函数还是上游模型服务端发出。代理 IP 必须配置在实际发起上游请求的那一层,浏览器端配置不会自动传递给服务端函数。

Node.js Runtime 中的模型 API 转发

下面以 Next.js App Router 的 app/api/chat/route.ts、Node.js Runtime、Node 20+ 和 Undici 6.x ProxyAgent 为例。先安装 undici,再通过 PROXY_URL 注入代理协议、主机、端口和认证信息。该入口不是所有 Vercel 框架的通用写法:

```ts
import { ProxyAgent, fetch as proxyFetch } from 'undici';

export const runtime = 'nodejs';

export async function POST(req: Request) {
if (req.headers.get('authorization') !== Bearer ${process.env.INTERNAL_TOKEN}) {
return new Response('Unauthorized', { status: 401 });
}
if (!process.env.PROXY_URL || !process.env.MODEL_API_KEY) {
return new Response('Server configuration missing', { status: 500 });
}
const dispatcher = new ProxyAgent(process.env.PROXY_URL);
const body = await req.json();
const upstream = await proxyFetch('https://api.example.ai/v1/chat/completions', {
method: 'POST',
dispatcher,
headers: {
'content-type': 'application/json',
authorization: Bearer ${process.env.MODEL_API_KEY},
},
body: JSON.stringify(body),
});
return new Response(upstream.body, {
status: upstream.status,
headers: { 'content-type': upstream.headers.get('content-type') ?? 'application/json' },
});
}
```

PROXY_URL、MODEL_API_KEY 和内部调用凭证都应保存在 Vercel 服务端环境变量中,不要写进前端代码。正式部署还应限制允许的模型、输入大小、频率和成本;本文示例只适合受控开发验证。模型 API Base URL 是上游服务地址,代理 URL 是出口 IP 配置,两者不能混用。当前示例绕过 AI SDK 直接使用 Undici;若标题要覆盖 AI SDK,应另补指定 Provider 的自定义 fetch、流式取消和超时测试,不能把裸 Undici 示例当作通用 SDK 配置。

Edge Runtime 为什么不能直接套用 Node.js 代理代码

Edge Runtime 与 Node.js Runtime 的网络库和代理能力不同,不能把 Node.js 的 Agent 或依赖直接假定为 Edge 可用。

部署验证和常见错误排查

Node.js Runtime 更适合需要 Node 网络库的代理场景;Edge Runtime 是否支持某个代理库,要以当前运行时能力为准。部署后先调用一个出口 IP 检测地址,再调用模型 API,记录函数日志、响应状态和总耗时。

正式验证至少包括:环境变量是否存在、服务端出口 IP 是否变化、模型 API 是否返回、流式响应是否完整、函数耗时是否接近平台限制。不要仅凭本地请求成功判断部署环境也已正确接入。

函数超时、407、429 和上游模型错误

  • 401/403:模型 API Key、权限或上游服务策略。
  • 407:代理 IP 认证。
  • 429:模型配额、并发或请求频率。
  • 504/函数超时:上游响应、代理链路、函数超时或流式响应处理。
  • 客户端成功、服务端失败:优先检查 Vercel Runtime 是否真正读取代理配置。

本地成功、Vercel 失败的常见原因

重点对比 Runtime、环境变量、部署区域、函数超时、流式响应和上游 API 权限,不要只更换代理 IP。

官方文档

Vercel Runtime、Undici 和 AI SDK 的能力可能更新,部署前可核对:

FAQ

Vercel AI 代理 IP 适合什么场景?

适合在 Vercel 服务端函数中为模型 API 请求提供指定出口 IP。它不能替代 API Key、模型权限或平台配额。

普通 fetch 是否代表已经接入代理 IP?

不是。还需要在实际发起上游请求的 HTTP 客户端中注入代理配置,并在部署环境验证出口 IP。

部署后先验证环境变量和服务端出口 IP,再测试模型 API、流式响应和函数耗时。需要核对基础代理参数时,可参考代理设置帮助。