Gemini SDK直连DeepSeek:DS2API generateContent流式接口全支持实测指南
2026/9/2 11:35:48 网站建设 项目流程

Gemini SDK直连DeepSeek:DS2API generateContent流式接口全支持实测指南

【免费下载链接】ds2apiDeepSeek-Compatible Middleware Interface: A technical exploration project in Go, focusing on high-concurrency protocol adaptation. It serves as a reference implementation for converting diverse web protocols into standardized formats.项目地址: https://gitcode.com/GitHub_Trending/ds/ds2api

DS2API 是一个 DeepSeek 兼容的中间件接口(Go 语言实现,专注高并发协议适配),内置完整的 Gemini 兼容协议层——generateContentstreamGenerateContent均开箱即用。本文带你把 Gemini SDK 指向 DS2API,实测非流式、流式、工具调用与思考模式,看看 DeepSeek 如何"伪装"成 Gemini 供任意 Google 生态客户端使用。

📌 为什么值得接入 Gemini 协议

ds2api 把 OpenAI、Claude、Gemini 三套协议统一挂在同一路由树上,由 router.go 负责装配。对使用者来说这意味着:

  • 零改造迁移:原本调用 Gemini 的 SDK / 脚本,只需改 base URL 和 key
  • 双版本路径:同时支持/v1beta官方路径与/v1兼容路径
  • 协议保真:响应严格遵循 Gemini 结构,SDK 的candidateusageMetadata、SSE chunk 解析逻辑全部可复用

🚀 快速部署 DS2API

克隆仓库并启动(仓库地址:https://gitcode.com/GitHub_Trending/ds/ds2api):

git clone https://gitcode.com/GitHub_Trending/ds/ds2api cd ds2api docker compose up -d

服务默认监听5001端口。详细的开发部署说明见 docs/DEVELOPMENT.md 与 docs/DEPLOY.md。

🔗 支持的 Gemini 接口一览

路由注册见 handler_routes.go:

方法路径说明
POST/v1beta/models/{model}:generateContent官方路径,非流式
POST/v1beta/models/{model}:streamGenerateContent官方路径,流式
POST/v1/models/{model}:generateContent兼容路径
POST/v1/models/{model}:streamGenerateContent兼容路径

💡鉴权三选一Authorization: Bearer <token>x-goog-api-key: <token>,或查询参数?key=/?api_key=——Gemini SDK 惯用的x-goog-api-key完全可用。

🧪 实测一:非流式 generateContent

以 curl 模拟 Gemini SDK 的一次generateContent调用(完整示例见 API.md):

curl "http://localhost:5001/v1beta/models/gemini-2.5-pro:generateContent" \ -H "Authorization: Bearer your-api-key" \ -H "Content-Type: application/json" \ -d '{"contents":[{"role":"user","parts":[{"text":"用三句话介绍 Go 语言"}]}]}'

响应是标准 Gemini 结构(组装逻辑见 handler_generate.go):

  • candidates[0].content.parts[].text:正文
  • parts[].thought=true:思考内容(thinking 开启时)
  • parts[].functionCall:工具调用
  • usageMetadatapromptTokenCount/candidatesTokenCount/totalTokenCount
  • modelVersion:回显你请求的模型名

请求归一化在 convert_request.go 完成:模型别名自动映射到 DeepSeek 模型,generationConfig中的temperaturetopPmaxOutputTokensstopSequences会被透传(见 convert_passthrough.go)。

⚡ 实测二:流式 streamGenerateContent

curl "http://localhost:5001/v1beta/models/gemini-2.5-flash:streamGenerateContent" \ -H "x-goog-api-key: your-api-key" \ -H "Content-Type: application/json" \ -d '{"contents":[{"role":"user","parts":[{"text":"写一个简短摘要"}]}]}'

流式运行时会话与重试见 handler_stream_runtime.go,实测行为:

  1. 响应头为text/event-stream,每个事件形如data: <json>
  2. 常规文本:持续返回增量 chunk,SDK 端streamGenerateContent逐块拼接无压力
  3. 思考模式thought=true的增量 chunk 先行推送
  4. 工具场景:内容会被缓冲,结束时一次性输出完整functionCall结构,避免参数 JSON 被截断
  5. 结束 chunk:携带finishReason: "STOP"usageMetadata,token 计数优先透传上游,缺失时回退本地估算

🛡️ 稳定性方面,流式链路内置最多 3 次自动重试(completionruntime.ExecuteStreamWithRetry),上游偶发空响应时对客户端完全透明。

🪄 深度解析:请求与响应如何互转

消息转换(convert_messages.go):

  • systemInstruction→ system 消息
  • role: modelassistantrole: useruser
  • assistant 的thought标记 part →reasoning_content,思考历史不丢失
  • functionCall/functionResponse→ 标准tool_calls/tool消息,call ID 自动补齐

工具转换(convert_tools.go):functionDeclarations自动转成 function 工具,同时兼容 OpenAI 风格的tools直通写法。

思考开关:支持在generationConfig.thinkingConfig.thinkingBudget中显式控制,-nothinking后缀模型名会强制映射到无思考模型。

模型别名gemini-2.5-progemini-2.5-flashgemini-3.1-progemini-pro-vision等别名均可直接写入 URL(见 API.md),实际映射到哪个 DeepSeek 模型由配置决定。

⚠️ 错误处理与排坑

Gemini 路由采用 Google 风格错误结构(见 handler_errors.go 与 API.md):

{"error": {"code": 401, "message": "...", "status": "UNAUTHENTICATED"}}

常见status值:UNAUTHENTICATED(key 错误)、PERMISSION_DENIEDRESOURCE_EXHAUSTED(限流)、NOT_FOUND(模型别名未配置)。流式请求出错时也会以errorchunk 形式发出,SDK 端可按标准错误分支处理。

✅ 小结

能力支持情况
generateContent 非流式✅ 完整 Gemini 响应结构
streamGenerateContent 流式✅ SSE 增量 + 结束 chunk
thinking 思考内容thought=true独立通道
functionCall 工具调用✅ 流式缓冲完整输出
模型别名 / thinkingBudget✅ 自动映射与透传
鉴权✅ Bearer / x-goog-api-key / 查询参数

一句话总结:只要你的代码是面向 Gemini 协议写的,把 base URL 换成 DS2API,DeepSeek 立刻变成你的"Gemini"。更多接口细节与测试脚本参考 tests/scripts/run-live.sh 和 docs/ARCHITECTURE.md。

【免费下载链接】ds2apiDeepSeek-Compatible Middleware Interface: A technical exploration project in Go, focusing on high-concurrency protocol adaptation. It serves as a reference implementation for converting diverse web protocols into standardized formats.项目地址: https://gitcode.com/GitHub_Trending/ds/ds2api

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询