
1. Gemini 多模态与代码生成到底能做什么Gemini 是 Google 推出的一系列多模态大模型能同时处理文本、图像、音频、视频输入并输出文本或代码。它适合三类人需要长文档分析的开发者、要做多模态应用的工程师、以及想用自然语言生成代码的编程新手。我实测下来Gemini 最突出的两个能力是超长上下文和跨模态理解——你可以把一份 200 页的 PDF 直接丢进去让它总结也可以上传一张架构图让它生成对应的接口代码。但很多人卡在第一步不知道选哪个版本、不知道怎么调 API、不知道多模态输入到底怎么传。这篇就按“选型 → 接入 → 验证 → 排障”的顺序把 Gemini 系列从版本差异到可复制配置一次讲清楚。先看版本差异。Gemini 目前主流分四条线Gemini 1 是基础多模态版本适合通用问答和摘要Gemini Pro 是高性能版本上下文窗口大、代码能力强适合长文档分析和复杂推理Gemini Ace 是轻量化版本延迟低、成本低适合实时对话和移动端Gemini 2 是 2024 年后的更新新增视频理解、增强推理和更快的代码生成。选型时核心看三个维度上下文长度、多模态类型、代码生成质量。版本上下文多模态代码能力典型场景Gemini 1中等文本图像基础通用问答、摘要Gemini Pro超长文本图像音频强长文档、复杂推理Gemini Ace中等文本图像基础实时对话、移动端Gemini 2超长文本图像音频视频强视频分析、Agent这张表可以直接当选型对照用。如果你要做的是“上传合同 → 提取条款 → 生成摘要”选 Pro如果是“手机助手实时问答”选 Ace如果要“分析视频内容并生成字幕”选 Gemini 2。接下来是接入。Gemini 官方通过 Google Cloud 的 Vertex AI 或 Gemini API 提供服务但对国内开发者来说直接调官方接口在支付和网络链路上经常遇到问题。我试过用 TaoToken 做统一接入层它兼容 OpenAI 风格的接口格式把 Gemini 的模型 ID 映射成标准 chat completions 调用省去单独适配 SDK 的麻烦。下面给出完整配置。2. TaoToken 前置准备Key 与 Base URL 怎么拿TaoToken 是一个大模型 API 聚合网关支持 Gemini、Claude、GPT 等模型的统一调用。它的作用是让你用一套 OpenAI 兼容的接口格式调用不同厂商的模型不用为每个模型单独写适配代码。对 Gemini 来说你只需要把 Base URL 指向 TaoToken 的 API 地址把模型 ID 写成 Gemini 对应的名称就能用标准 chat completions 格式发请求。第一步打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册账号。注册流程很简单邮箱验证后进入控制台。第二步进入控制台创建 API Key。地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。在“API Keys”页面点击创建复制生成的 Key格式通常是sk-开头的一串字符。这个 Key 只显示一次务必保存好。第三步确认 Base URL。TaoToken 的 API 根地址是 https://taotoken.net/api 注意这个地址不带 UTM 参数直接用于代码里的base_url字段。如果你用的是 OpenAI SDK填https://taotoken.net/api/v1即可。第四步确认模型 ID。Gemini 系列在 TaoToken 上的模型 ID 通常写成gemini-pro、gemini-1.5-pro、gemini-2.0-flash这类格式。具体可用的模型列表在控制台的“模型”页面查看或者调用/v1/models接口获取。这里有一个关键点TaoToken 的接口是 OpenAI 兼容的所以你的请求体里model字段填 Gemini 的模型 IDmessages字段用标准的 role/content 结构。多模态输入时content 可以是一个数组里面放 text 和 image_url 对象。下面给出可复制的配置。如果你需要长期做编码或 Agent 任务可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它适合需要稳定调用、批量任务的场景。3. 可复制配置JSON、Python SDK 与多模态请求体这一节给出三份可直接复制的配置一份是环境变量文件一份是 Python SDK 调用示例一份是多模态请求的 JSON 结构。你按自己的技术栈选一份用就行。先看环境变量配置。把下面内容保存为.env文件放在项目根目录TAOTOKEN_API_KEYsk-你的实际Key TAOTOKEN_BASE_URLhttps://taotoken.net/api/v1 GEMINI_MODELgemini-1.5-pro注意 Base URL 末尾要带/v1因为 OpenAI SDK 会在后面拼接/chat/completions。如果你用 curl 直接调完整地址是https://taotoken.net/api/v1/chat/completions。接下来是 Python SDK 调用示例。先安装依赖pip install openai python-dotenv然后写调用脚本import os from dotenv import load_dotenv from openai import OpenAI load_dotenv() client OpenAI( api_keyos.getenv(TAOTOKEN_API_KEY), base_urlos.getenv(TAOTOKEN_BASE_URL) ) response client.chat.completions.create( modelos.getenv(GEMINI_MODEL), messages[ {role: system, content: 你是一个代码助手只输出可运行的代码。}, {role: user, content: 写一个 Python 函数计算斐波那契数列第 n 项要求用迭代实现。} ], temperature0.3, max_tokens1024 ) print(response.choices[0].message.content)这段代码的关键参数model填 Gemini 的模型 IDtemperature控制随机性代码生成建议 0.2–0.4max_tokens限制输出长度。运行后你会看到模型返回的 Python 函数。多模态输入的请求体结构稍有不同。content 不再是字符串而是一个数组{ model: gemini-1.5-pro, messages: [ { role: user, content: [ { type: text, text: 这张图里是什么架构请用文字描述并生成对应的接口定义代码。 }, { type: image_url, image_url: { url: data:image/png;base64,你的图片base64编码 } } ] } ], max_tokens: 2048 }图片可以用 base64 内联也可以传公网可访问的 URL。如果用 URLurl字段直接填图片地址即可。注意 Gemini 对图片格式的支持PNG、JPEG、WebP 都行单张图片建议不超过 4MB。如果你用 Claude Code 或 Cline 这类工具配置方式类似把 Base URL 和 Key 填进工具的 API 设置里模型 ID 选 Gemini 对应项。CC Switch 用户可以在配置里写[providers.taotoken] base_url https://taotoken.net/api/v1 api_key sk-你的Key model gemini-1.5-proCodex 用户如果走auth.json结构是{ api_key: sk-你的Key, base_url: https://taotoken.net/api/v1, model: gemini-1.5-pro }这三件套——Base URL、Key、Model ID——是任何工具接入的核心缺一不可。4. 验证请求多模态与代码生成任务实测配置写好后先做一次最小验证确认链路通。用 curl 发一个纯文本请求curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的Key \ -d { model: gemini-1.5-pro, messages: [ {role: user, content: 用一句话解释什么是多模态模型。} ] }如果返回 JSON 里有choices[0].message.content说明 Key 和 Base URL 都正确。如果返回 401说明 Key 有问题如果返回 404说明 Base URL 路径不对。接下来验证代码生成。用上面的 Python 脚本把 user 消息换成“写一个快速排序函数带注释”。正常返回应该是一段完整的 Python 代码包含def quicksort(arr):和递归逻辑。我实测下来Gemini Pro 在代码生成上对 Python、JavaScript、Go 的支持都不错生成的代码基本能直接跑。再验证多模态。准备一张简单的流程图或架构图转成 base64用上面的 JSON 结构发请求。如果模型能描述图片内容并生成对应代码说明多模态链路通了。这里有个小技巧图片 base64 编码后字符串很长建议用脚本生成请求体不要手动拼接。import base64 with open(arch.png, rb) as f: img_b64 base64.b64encode(f.read()).decode() payload { model: gemini-1.5-pro, messages: [{ role: user, content: [ {type: text, text: 描述这张架构图并生成接口代码。}, {type: image_url, image_url: {url: fdata:image/png;base64,{img_b64}}} ] }] }长上下文验证也很重要。Gemini Pro 支持超长上下文你可以把一份长文档拆成多个段落一次性放进 messages 里让它做摘要或问答。测试时注意 token 消耗长上下文请求的计费按输入 token 算建议先用小文档试。验证成功后你会看到模型返回结构化的描述和代码。如果代码生成任务返回的是自然语言解释而不是代码检查 system prompt 是否明确要求“只输出代码”。如果多模态请求返回“invalid content type”检查 content 数组里的 type 字段是否写成了image_url而不是image。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节列出接入 Gemini 时最常遇到的四类报错每个都给出原因和修复方法。401 Unauthorized。返回体通常是{error: {message: Invalid API key}}。原因有三种Key 复制时多了空格、Key 已过期或被删除、请求头里Authorization格式不对。修复重新在控制台生成 Key确保请求头是Bearer sk-xxx注意 Bearer 和 Key 之间有一个空格。如果你用的是环境变量检查.env文件里有没有引号包裹导致 Key 被当成字符串。local proxy failed。这个报错通常出现在本地开发环境原因是你的 HTTP 客户端走了系统代理而代理配置指向了一个不可用的地址。修复检查环境变量HTTP_PROXY和HTTPS_PROXY如果不需要代理就清空它们。在 Python 里可以显式设置proxies{http: None, https: None}。注意这里说的是本地网络配置问题不是让你去搭什么通道直接把代理关掉即可。reading choices 报错。典型信息是KeyError: choices或list index out of range。原因是返回体结构和你预期的不一样通常是请求失败但代码没检查状态码。修复在解析前先打印response.status_code和response.text确认返回的是正常 JSON 而不是错误信息。如果返回的是{error: ...}说明请求本身失败了先解决请求问题再解析。OAuth 相关报错。如果你用 Google 官方 SDK 而不是 OpenAI 兼容接口可能会遇到OAuth token expired或invalid_grant。原因是官方 SDK 需要服务账号或 OAuth 流程token 过期后没刷新。修复如果你走 TaoToken 的 OpenAI 兼容接口就不需要 OAuth直接用 API Key 即可。检查你的代码是不是混用了官方 SDK 和兼容接口统一成一种方式。另外如果你在 Claude Code 里配置 Gemini遇到model not found检查模型 ID 是否写对。TaoToken 控制台的模型列表里Gemini 的 ID 可能是gemini-1.5-pro或gemini-pro不同版本命名有差异。Codex 的auth.json里如果base_url末尾多了/chat/completions也会导致 404正确写法是只写到/v1。排障时有一个通用方法先用 curl 发最小请求确认链路通再逐步加参数。不要一上来就调多模态或长上下文那样出错时很难定位是配置问题还是请求体问题。6. 选型建议与接入入口回到选型。如果你做的是长文档分析、复杂代码生成、多模态理解选 Gemini Pro 或 Gemini 2如果是实时对话、移动端、成本敏感场景选 Gemini Ace如果只是通用问答和摘要Gemini 1 够用。上下文长度和代码能力是 Gemini 系列的核心差异点选型时优先看这两个指标。接入方面TaoToken 提供了统一的 OpenAI 兼容接口你不需要为 Gemini 单独写 SDK 适配。API Key 在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 创建接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 查看。如果你想先在线试一下 Gemini 的对话效果可以用模型对话页面https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。长期做编码或 Agent 任务的Coding Plan 更划算https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。Claude Code 用户如果需要 Anthropic 兼容配置参考https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-code-anthropicutm_campaignrewrite 。最后给一个实用技巧调 Gemini 做代码生成时在 system prompt 里明确指定语言和框架比如“你是一个 Python 后端工程师只输出 FastAPI 代码”这样生成结果更贴合你的项目。多模态任务里图片分辨率不要太高1024px 宽度通常够用太大反而增加 token 消耗。长上下文请求前先用小样本测一下 token 用量避免账单超预期。