想搞个反向代理服务帮我调用gemini服务。
🛠️ 第一步:准备代码
新建一个文件夹,名字叫 gemini-proxy。 创建2 个文件。
文件 1:package.json (告诉 Vercel 这是一个项目)
新建一个文件命名为 package.json,粘贴以下内容:
{
"name": "gemini-proxy",
"version": "1.0.0",
"scripts": {
"start": "echo 'Proxy is running'"
}
}
文件 2:api/index.js (核心代理逻辑)
注意: 在 gemini-proxy 文件夹里,先新建一个叫 api 的文件夹。 然后进入 api 文件夹,新建 index.js,粘贴以下代码。 (这段代码的作用是:把发给你的请求,伪装一下,转发给 Google,再把 Google 的回复转发给你。)
export const config = {
runtime: 'edge', // 使用边缘节点,速度最快
};
export default async function handler(request) {
const url = new URL(request.url);
// 1. 定义目标:我们要去访问 Google 的 Gemini
// 只要路径对,参数对,我们就原样转发
const targetUrl = new URL('https://generativelanguage.googleapis.com' + url.pathname + url.search);
// 2. 处理请求头:我们要伪装成是直接访问 Google
const headers = new Headers(request.headers);
headers.set('host', 'generativelanguage.googleapis.com');
// 有些请求头可能会导致问题,可以选择性删除,但通常覆盖 host 就够了
// 3. 发起转发请求
const response = await fetch(targetUrl, {
method: request.method,
headers: headers,
body: request.body,
});
// 4. 把 Google 的回复直接返回
return response;
}
💻 第二步:像黑客一样部署 (Deploy)
我们要用最帅的方式部署——命令行 (CLI) 。这比拖拽上传更像高手,而且方便以后更新。
-
安装 Vercel 工具:
- 打开终端(CMD 或 PowerShell)。
- 输入指令:
npm install -g vercel并回车。(前提是电脑装了 Node.js,如果没有,去官网下个 Node.js 安装包一路下一步就行,这是建站基础)。
-
登录:
- 输入指令:
vercel login。 - 它会跳出浏览器让登录 Vercel 账号,点一下确认,终端里就会显示“Success”。
- 输入指令:
-
一键发布:
- 在终端里,通过
cd命令进入刚才建的文件夹(或者直接在文件夹里右键“在终端打开”)。 - 输入核心指令:
vercel --prod - 接下来一路按回车(它问你 Set up and deploy? 选 Y。问你 Which scope? 默认回车...)。
- 在终端里,通过
等待大概 30 秒,当屏幕上出现一行绿色的 URL(类似 https://gemini-proxy-five.vercel.app)时……
🛠️ 添加“路标”文件 (vercel.json)
我们需要在文件夹里加一个配置文件,把所有的流量都导向那个代理脚本。
1. 新建文件
在您的 gemini-proxy 文件夹根目录下,新建一个文件,命名为 vercel.json。
2. 粘贴代码
把下面这段代码粘贴进去:
{
"rewrites": [
{ "source": "/(.*)", "destination": "/api/index.js" }
]
}
(这段话的意思是:不管访问什么路径 /(.*),全部转发给 /api/index.js 处理。)
3. 重新发布
打开终端,输入: vercel --prod (一路回车)
🧪 怎么验证它成功了?
重新发布完后,不要直接访问主页了(那还是会 404,因为 Google 主页就是 404)。
我们要模拟一次**“真实的 API 调用”**。
最简单的验证方法:
在浏览器地址栏里,输入你的Vercel 域名,后面加上这段测试路径: /v1beta/models/gemini-flash-latest?key=【这里填API_KEY】
完整的看起来像这样: https://gemini-proxy-five.vercel.app/v1beta/models/gemini-flash-latest?key=AIzaSyDxxxxxxxxx
如果看到屏幕上出现了一串 JSON 文字(虽然可能是报错说 Method Not Allowed,或者显示模型信息),只要不是 Vercel 的 404 页面,而是白底黑字的代码,那就说明:
隧道通了! 🎉
返回的json
{
"name": "models/gemini-flash-latest",
"version": "Gemini Flash Latest",
"displayName": "Gemini Flash Latest",
"description": "Latest release of Gemini Flash",
"inputTokenLimit": 1048576,
"outputTokenLimit": 65536,
"supportedGenerationMethods": [
"generateContent",
"countTokens",
"createCachedContent",
"batchGenerateContent"
],
"temperature": 1,
"topP": 0.95,
"topK": 64,
"maxTemperature": 2,
"thinking": true
-
你的请求成功从国内发到了 Vercel。
-
Vercel 成功转发给了 Google。
-
Google 成功把它的模型信息(
Gemini Flash Latest)传回给了你。
为啥是反向代理?
客户端(脚本)不知道真正的目标是 Google,它以为是Vercel,而Vercal把请求转发给了Google。