Gemini ↔︎ OpenAI 代理
通过 OpenAI 兼容的 API 提供 Google Gemini 1.5 Pro (或 Flash) 服务。
与已经支持 OpenAI 的客户端即插即用,例如 SillyTavern、llama.cpp、LangChain、VS Code 的 Cline 扩展等。
✨ 特性
/v1/chat/completions | 非流式 & 流式 (SSE) | 支持 curl、ST、LangChain… |
/v1/messages | Anthropic 格式支持 | 完整的 Claude API 兼容 |
/v1/gemini/generate | 原生 Gemini 格式 | 直接传递 Gemini API 请求 |
| 视觉支持 | image_url → Gemini inlineData | |
| 函数 / 工具调用 | OpenAI "functions" → Gemini 工具注册表 | |
| 推理 / 思维链 | 发送 enable_thoughts:true,流式传输 <think> 区块 | ST 显示灰色气泡 |
| 100万 token 上下文 | 代理自动解除 Gemini CLI 默认的 20万 上限 | |
| CORS | 默认启用 (*) | 可用于浏览器应用 |
| 无外部依赖 | 仅需 Node 22 + TypeScript | 无 Express |
🚀 快速入门 (本地)
git clone https://huggingface.co/engineofperplexity/gemini-openai-proxy
cd gemini-openai-proxy
npm ci
npx ts-node src/server.ts
可选环境变量
PORT=3000 更改监听端口
GEMINI_API_KEY=<key> 使用你自己的密钥
最小化 curl 测试
OpenAI 格式
curl -X POST http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-1.5-pro-latest",
"messages":[{"role":"user","content":"Hello Gemini!"}]
}'
Anthropic 格式
curl -X POST http://localhost:11434/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-sonnet",
"max_tokens": 1024,
"messages":[{"role":"user","content":"Hello Claude!"}]
}'
原生 Gemini 格式
curl -X POST http://localhost:11434/v1/gemini/generate \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "Hello Gemini!"}]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}'
SillyTavern 设置
| API 基础 URL | http://127.0.0.1:11434/v1 |
| 模型 | gemini-1.5-pro-latest |
| 流式传输 | 开 |
| 推理 | 开 → 出现灰色 <think> 行 |
🐳 Docker
docker build -t gemini-openai-proxy .
docker run -p 11434:11434 \
-e GEMINI_API_KEY=$GEMINI_API_KEY \
gemini-openai-proxy
🗂 项目结构
src/
server.ts – 极简 HTTP 服务器
mapper.ts – OpenAI ⇄ Gemini 转换
chatwrapper.ts – @google/genai 的轻量级封装
remoteimage.ts – 用于视觉的 fetch + base64
package.json – 依赖 & 脚本
Dockerfile
README.md
📜 许可证
MIT – 个人和商业用途免费。