Gemini API 服务器怎么搭建?Gemini API 服务器搭建方法?

需求场景描述
假如你现在正在借助AI撰写一篇长篇小说,需要把前因背景几十万字作为上下文输入AI,亦或者你正在进行学术文献梳理,需要把几十篇文献输入AI,亦或者你正在撰写一篇深度研究报告,需要将海量参考资料输入AI等,此时你需要具有很大上下文的模型,那么这种情况下,Gemini 是比较合适的,Gemini 使用的场景是:
- • 需要很长的上下文;
- • 尽量的节省成本;
- • 个人低频使用,不商用。
但是 Gemini API 有个最大的问题,就是需要特殊的网络环境,我们希望可以在正常的网络环境下调用Gemini API,从而可以低成本使用其超长上下文的能力。
Github 上这个项目 xixu-me/Xget 给我了很大的启发,这是项目的技术文档:深入剖析 Xget:一个高性能、多协议、高安全性的开发者资源加速引擎。我们普通人不需要复现这么复杂的项目,我们只需要借鉴他的思路:在 Cloudflare 上新建 Worker (代理服务器),把本地请求通过 Cloudflare 转发给 Gemini 官方服务器,并把 Worker 通过 DNS 绑定到自己的域名。
本文介绍两种方式:一是使用 Cloudflare 边缘网络实现转发;二是在 Railway 服务器上建一个 Express.js 服务。不过要注意的是:这两种方式都需要先购买域名。
Cloudflare 边缘网络的配置方式
Step 1:编写 Worker 代码
本地新建文件 gemini_proxy.js
// 定义 Gemini API 的官方主机地址constGEMINI_API_HOST = "generativelanguage.googleapis.com";exportdefault {asyncfetch(request, env, ctx) {// 从原始请求中复制 URL,以便我们能修改它const requestUrl = newURL(request.url);// 如果用户直接访问根路径,返回一个友好的提示信息if (requestUrl.pathname === "/") {returnnewResponse(JSON.stringify({message: "Gemini API Proxy is running.",usage: "Append the original Gemini API path to this URL.",example: `${requestUrl.protocol}//${requestUrl.hostname}/v1/models/gemini-2.5-pro:generateContent` }), {status: 200,headers: { 'Content-Type': 'application/json' }, } ); }// 创建目标 API 的 URLconst targetUrl = newURL(requestUrl.pathname, `https://${GEMINI_API_HOST}`);// 将原始请求中的查询参数(除了我们自己的 key)复制到目标 URL requestUrl.searchParams.forEach((value, key) => { targetUrl.searchParams.append(key, value); });// 从 Cloudflare 的环境变量中安全地获取你的 API 密钥const apiKey = env.GEMINI_API_KEY;// 检查密钥是否存在if (!apiKey) {returnnewResponse(JSON.stringify({ error: "GEMINI_API_KEY is not set in the worker's environment variables." }), { status: 500 }); }// 将密钥作为查询参数添加到目标 URL 中,这是 Gemini API 要求的方式 targetUrl.searchParams.append("key", apiKey);// 复制原始请求的 Headers,并确保 Host 被正确设置const headers = newHeaders(request.headers); headers.set("Host", GEMINI_API_HOST);// 构建并发送转发请求// 我们直接传递原始请求的 method, headers, 和 bodyconst response = awaitfetch(targetUrl.toString(), {method: request.method,headers: headers,body: request.body, });// 将从 Gemini API 收到的响应原封不动地返回给客户端return response; },};Step 2:部署到 Cloudflare Workers
登录Cloudflare控制台:dash.cloudflare.com
左侧:BUILD - Compute & AI - Workers & Pages
右上角:Create Application - Drag and drop your files,Worker name 使用默认,Upload file - gemini_proxy.js,Deploy
Step3:设置 Cloudflare Workers
进入新建的 Cloudflare Workers - Settings
Domains & Routes - Add - Custom domain,填入 你设定的域名,Add domain,然后进入 DNS 页面,可以看到新建的 Worker 记录
跳出如下窗口即成功
Cloudflare will add the following DNS record to ricknote.net and provision a new certificate to enable HTTPS.Step4:设置 环境变量 API Key
进入新建的 Cloudflare Workers - Settings - Variables and Secrets - Add
Type 选择 Text,Variable name 填入 GEMINI_API_KEY,Value 填入 Gemini Key
Railway 配置方式
大概原理是:使用 Express.js 和 http-proxy-middleware 创建的 Node.js 代理服务器脚本,用于转发请求到 Google 的 Gemini API
Step 1:新建 index.js 脚本
const express = require('express');const { createProxyMiddleware } = require('http-proxy-middleware');const app = express();// Gemini API 的官方基础 URLconst geminiApiUrl = 'https://generativelanguage.googleapis.com';// 创建代理中间件app.use('/', createProxyMiddleware({ target: geminiApiUrl, changeOrigin:true,// 必须设置为 true,否则 many API 会拒绝请求// 重写路径,移除我们自定义的基础路径(如果你的域名后面有特定路径的话)// 在这个简单场景下,我们让所有请求都直接转发 pathRewrite: (path, req) => { return path;}, onProxyReq: (proxyReq, req, res) => {// 将请求的主机头也修改为目标API的,增强代理的“透明度” proxyReq.setHeader('Host', new URL(geminiApiUrl).host);}}));// 从 Railway 提供的环境变量中获取端口,如果未提供则默认为 3000const port = process.env.PORT || 3000;app.listen(port, () => { console.log(`Gemini proxy server listening on port ${port}`);});Step 2:新建 package.json
{"name":"my-gemini-proxy","version":"1.0.0","description":"A simple proxy for Gemini API on Railway","main":"index.js","scripts":{"start":"node index.js"},"dependencies":{"express":"^4.19.2","http-proxy-middleware":"^3.0.0"}}Step 3:上传 Github 仓库
Step 4:部署到 Railway
登录 Railway - Create - GitHub Repo - 选择这个仓库
Step 5:配置 Domain
进入 Railway 部署的项目,进入项目设置 Settings
Custom Domain
Add Custom Domain - 设置自定义域名,port 选择默认的 8080,Add Domain
弹出 Configure DNS Records,记录 Value
Step 6:配置 Cloudflare DNS
进入 Cloudflare DNS - Add Record
实际应用
部署好 Gemini API 转发服务器后,我们再搭建一个前端,就可以自定义我们个性化的应用了,比如可以写小学生作文,自己设定系统提示词,用户提示词,以及老师发的范文。
如果老师发的范文是照片,我们可以上传照片,然后使用 OCR 转换成文本,来录入系统。等一会儿,作文就写好了。
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。



