Skip to content

x19990416/gemini-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gemini Proxy (Netlify Edge)

一个零密钥、全功能透传的 Google Gemini API 代理。 通过 Netlify Edge Functions 部署,支持 generateContentstreamGenerateContent、文件上传/删除、Resumable 上传、SSE 等所有官方能力。

🚀 一键部署

可直接部署到netlify上


✨ 特性

  • 🔐 无服务端密钥:调用方自带 X-Goog-Api-Key?key=,代理不保存 Key
  • 🔁 零改写透传:路径、参数、方法、头、Body 全部原样转发
  • 🌀 流式支持…:streamGenerateContent SSE 原样透传
  • 📦 文件上传:直传小文件 + Resumable 大文件分块上传
  • 🌍 跨域友好:默认 CORS *,生产可改为白名单域名

🔌 使用方法

把官方的

https://generativelanguage.googleapis.com

换成你的 Netlify 域名并加上 /api/gemini 前缀即可。

URL 映射示例

功能 官方 URL 代理 URL
列模型 .../v1beta/models https://<your-site>.netlify.app/api/gemini/v1beta/models
生成内容 .../v1beta/models/{model}:generateContent https://<your-site>.netlify.app/api/gemini/v1beta/models/{model}:generateContent
流式生成 .../v1beta/models/{model}:streamGenerateContent https://<your-site>.netlify.app/api/gemini/v1beta/models/{model}:streamGenerateContent
上传文件 .../upload/v1beta/files https://<your-site>.netlify.app/api/gemini/upload/v1beta/files
文件列表 .../v1beta/files https://<your-site>.netlify.app/api/gemini/v1beta/files
文件详情 / 删除 .../v1beta/files/{id} https://<your-site>.netlify.app/api/gemini/v1beta/files/{id}

🧪 示例请求 (curl)

列模型

curl -H "X-Goog-Api-Key: YOUR_KEY" \
  "https://<your-site>.netlify.app/api/gemini/v1beta/models"

生成内容

curl -X POST "https://<your-site>.netlify.app/api/gemini/v1beta/models/gemini-2.5-flash:generateContent" \
  -H "Content-Type: application/json" \
  -H "X-Goog-Api-Key: YOUR_KEY" \
  -d '{"contents":[{"parts":[{"text":"Say hi in 10 words"}]}]}'

流式生成 (SSE)

curl -N -X POST "https://<your-site>.netlify.app/api/gemini/v1beta/models/gemini-2.5-flash:streamGenerateContent" \
  -H "Content-Type: application/json" \
  -H "X-Goog-Api-Key: YOUR_KEY" \
  -d '{"contents":[{"parts":[{"text":"Count 1..5"}]}]}'

文件直传 (小文件)

curl -X POST "https://<your-site>.netlify.app/api/gemini/upload/v1beta/files" \
  -H "X-Goog-Api-Key: YOUR_KEY" \
  -H "Content-Type: application/pdf" \
  --data-binary @doc.pdf

删除文件

curl -X DELETE "https://<your-site>.netlify.app/api/gemini/v1beta/files/{fileId}" \
  -H "X-Goog-Api-Key: YOUR_KEY"

🐍 Python 使用方法

安装官方 Gemini SDK:

pip install google-generativeai

1. 使用官方 SDK (直连)

import google.generativeai as genai

genai.configure(api_key="YOUR_KEY")
model = genai.GenerativeModel("gemini-2.5-flash")

resp = model.generate_content("Say hi in 10 words")
print(resp.text)

2. 使用代理 (requests)

import requests

API_KEY = "YOUR_KEY"
BASE_URL = "https://<your-site>.netlify.app/api/gemini/v1beta"

url = f"{BASE_URL}/models/gemini-2.5-flash:generateContent"
headers = {
    "Content-Type": "application/json",
    "X-Goog-Api-Key": API_KEY,
}
payload = {
    "contents": [{"parts": [{"text": "Say hi in 10 words"}]}]
}

resp = requests.post(url, headers=headers, json=payload)
print(resp.json())

3. 流式输出 (SSE)

import requests

API_KEY = "YOUR_KEY"
BASE_URL = "https://<your-site>.netlify.app/api/gemini/v1beta"

url = f"{BASE_URL}/models/gemini-2.5-flash:streamGenerateContent"
headers = {
    "Content-Type": "application/json",
    "X-Goog-Api-Key": API_KEY,
}
payload = {
    "contents": [{"parts": [{"text": "Count 1..5, one per line"}]}]
}

with requests.post(url, headers=headers, json=payload, stream=True) as r:
    for line in r.iter_lines():
        if line:
            print(line.decode("utf-8"))

4. 文件上传 (小文件)

import requests

API_KEY = "YOUR_KEY"
BASE_URL = "https://<your-site>.netlify.app/api/gemini"

url = f"{BASE_URL}/upload/v1beta/files"
headers = {
    "X-Goog-Api-Key": API_KEY,
    "Content-Type": "application/pdf",
}

with open("doc.pdf", "rb") as f:
    resp = requests.post(url, headers=headers, data=f)

print(resp.json())

🛡️ 注意事项

  • API Key:请求必须带 X-Goog-Api-Key: <your_key>?key=
  • CORS:默认 *,生产建议改为指定域名
  • Windows CMD JSON:请注意引号转义,推荐使用 --data-binary @payload.json

📄 许可证

MIT

About

gemini代理

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors