Gemini File API 是一个完全独立的模块,与其他 API 逻辑完全隔离,不会相互干扰。
支持的功能:
注意:本模块仅实现了文件上传和列表功能,这是使用 Gemini File API 的核心功能。如需获取单个文件信息或删除文件,可以通过列表接口获取所有文件信息。
router/gemini_file_router.goGET /v1beta/files - 列出文件POST /upload/v1beta/files - 上传文件middleware/gemini_file_auth.gocontroller/relay_gemini_file.goRelayGeminiFileList - 列出文件RelayGeminiFileUpload - 上传文件relay/channel/gemini/file_helper.gocurl -X POST "http://your-api.com/upload/v1beta/files?key=YOUR_API_KEY" \
-F "file=@/path/to/file.pdf" \
-F "display_name=My Document"
curl "http://your-api.com/v1beta/files?key=YOUR_API_KEY"
响应示例:
{
"files": [
{
"name": "files/abc-123",
"displayName": "My Document",
"mimeType": "application/pdf",
"sizeBytes": "12345",
"createTime": "2024-01-20T10:00:00Z",
"updateTime": "2024-01-20T10:00:00Z",
"uri": "https://generativelanguage.googleapis.com/v1beta/files/abc-123"
}
]
}
支持以下任意一种认证方式:
Authorization Header
-H "Authorization: Bearer YOUR_API_KEY"
bash
-H "x-goog-api-key: YOUR_API_KEY"
Query Parameter
?key=YOUR_API_KEY
如果需要支持大文件上传(超过默认限制),可以在 docker-compose.yml 或环境变量中配置:
environment:
- MAX_REQUEST_BODY_MB=500 # 支持最大 500MB 文件
或在启动时设置环境变量:
export MAX_REQUEST_BODY_MB=500
解决方案:
解决方案:
解决方案:
MAX_REQUEST_BODY_MB 配置controller/relay_gemini_file.go 中添加新的处理函数router/gemini_file_router.go 中注册新的路由relay/channel/gemini/file_helper.go 中添加辅助函数编辑 middleware/gemini_file_auth.go 中的 GeminiFileAuth 函数。
修改 middleware/gemini_file_auth.go 中的 findGeminiFileChannel 函数。