这是一个用 Go 语言重写的 Gemini API 代理服务器,具有强大的流式重试和标准化错误响应功能。它可以处理模型的"思考"过程,并在重试后过滤思考内容以保持干净的输出流。
- 流式响应处理: 支持 Server-Sent Events (SSE)流式响应
- 智能重试机制: 当流被中断时自动重试,最多支持 100 次连续重试
- 思考内容过滤: 可以在重试后过滤模型的思考过程,保持输出的整洁
- 标准化错误响应: 提供符合 Google API 标准的错误响应格式
- CORS 支持: 完整的跨域资源共享支持
- 环境变量配置: 通过环境变量进行灵活配置
- 详细日志记录: 支持调试模式和详细的操作日志
- Go 1.21 或更高版本
go mod download- 复制环境变量示例文件:
cp .env.example .env- 编辑
.env文件配置你的设置:
# Gemini API基础URL
UPSTREAM_URL_BASE=https://generativelanguage.googleapis.com
# 最大连续重试次数
MAX_CONSECUTIVE_RETRIES=100
# 启用调试模式
DEBUG_MODE=true
# 重试延迟(毫秒)
RETRY_DELAY_MS=750
# 重试后是否吞掉思考内容
SWALLOW_THOUGHTS_AFTER_RETRY=true
# 服务器端口
PORT=8080go run main.go或者编译后运行:
go build -o gemini-antiblock
./gemini-antiblock服务器将在指定端口启动(默认 8080)。
| 变量名 | 默认值 | 描述 |
|---|---|---|
UPSTREAM_URL_BASE |
https://generativelanguage.googleapis.com |
Gemini API 的基础 URL |
MAX_CONSECUTIVE_RETRIES |
100 |
流中断时的最大连续重试次数 |
DEBUG_MODE |
true |
是否启用调试日志 |
RETRY_DELAY_MS |
750 |
重试间隔时间(毫秒) |
SWALLOW_THOUGHTS_AFTER_RETRY |
true |
重试后是否过滤思考内容 |
PORT |
8080 |
服务器监听端口 |
代理服务器启动后,你可以将 Gemini API 的请求发送到这个代理服务器。代理会自动:
- 转发请求到上游 Gemini API
- 处理流式响应
- 在流中断时自动重试
- 注入系统提示确保响应以
[done]结尾 - 过滤重试后的思考内容(如果启用)
curl "http://127.0.0.1:8080/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse" -H "x-goog-api-key: $GEMINI_API_KEY" -H 'Content-Type: application/json' -X POST --no-buffer -d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Hello"
}
]
}
],
"generationConfig": {
"thinkingConfig": {
"includeThoughts": true
}
}
}'gemini-antiblock-go/
├── main.go # 主程序入口
├── config/
│ └── config.go # 配置管理
├── logger/
│ └── logger.go # 日志记录
├── handlers/
│ ├── errors.go # 错误处理和CORS
│ └── proxy.go # 代理处理逻辑
├── streaming/
│ ├── sse.go # SSE流处理
│ └── retry.go # 重试逻辑
├── go.mod # Go模块文件
├── go.sum # 依赖校验和
├── .env.example # 环境变量示例
└── README.md # 项目文档
当检测到以下情况时,代理会自动重试:
- 流中断: 流意外结束而没有完成标记
- 内容被阻止: 检测到内容被过滤或阻止
- 思考中完成: 在思考块中检测到完成标记(无效状态)
- 异常完成原因: 非正常的完成原因
- 不完整响应: 响应看起来不完整
重试时会:
- 保留已生成的文本作为上下文
- 构建继续对话的新请求
- 在达到最大重试次数后返回错误
代理提供三个级别的日志:
- DEBUG: 详细的调试信息(仅在调试模式下显示)
- INFO: 一般信息和操作状态
- ERROR: 错误信息和异常
MIT License
这是基于 Cloudflare Worker 版本的 Go 语言重写版本。原始 JavaScript 版本提供了相同的功能,但运行在 Cloudflare Workers 平台上。