用 google-genai 0.3 调 gemini-2.0-flash,按文档写 model 参数,返回 404,原文 models/gemini-2.0-flash is not found for API version v1beta,换成 v1 又是另一种错。
把日志和配置对完,能解释这个现象的基本就这几处。REST 路径里的模型名要带 models/ 前缀,SDK 会自己拼;API 版本 v1 与 v1beta 支持的模型集合不同;区域端点写成了全球端点,模型在该区域未上线;模型名里混了版本后缀,与真实 id 不完全一致。
先列出当前 key 可见的模型
curl -sS "https://generativelanguage.googleapis.com/v1beta/models?key=$GEMINI_API_KEY" | jq -r '.models[].name'
带前缀直接发一次 REST 请求
curl -sS "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" -H 'content-type: application/json' -d '{"contents":[{"parts":[{"text":"hi"}]}]}'
末了确认 SDK 里传的是裸名还是全名
python -c "from google import genai;c=genai.Client();print([m.name for m in c.models.list()][:5])"
这台环境是别人交接的,不少默认值被动过,只能一项项核。
同事提醒我看一下最近一次发布,时间点确实对得上。
命令输出我都留了记录,免得改完记不清原来的值。
改完先别撤,确认这几项。模型列表里能查到目标名,generateContent 返回 200 并在 candidates 里给出内容,404 消失。
这里还有个坑。REST 要全名、SDK 要裸名,这是两套约定,混着抄文档最容易出现 404,先看用的是哪一层。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
