修正 nanobanana 端点空模型的回落值

nanobanana_generate_content_url 空模型回落到 nanobanana 模型

新增空模型路径的单元测试
This commit is contained in:
2026-09-21 19:12:55 +08:00
parent ef34e0ed64
commit 4dc199cf33
2 changed files with 23 additions and 5 deletions
@@ -286,11 +286,13 @@ pub fn nanobanana_generate_content_url(settings: &ImageProviderSettings, model:
.base_url
.trim_end_matches("/v1")
.trim_end_matches('/');
format!(
"{}/v1beta/models/{}:generateContent",
base_url,
normalize_image_model(model)
)
// 中文注释:nanobanana endpoint 只服务 Gemini 模型,空模型字符串应回落到
// nanobanana 模型,而不是 normalize_image_model 默认的 GPT 生成模型。
let model = match model.trim() {
"" => NANOBANANA_2_MODEL,
value => value,
};
format!("{}/v1beta/models/{}:generateContent", base_url, model)
}
pub(crate) fn build_image_edit_request_log_params(
@@ -211,6 +211,22 @@ fn nanobanana_generate_content_url_uses_model_path() {
);
}
#[test]
fn nanobanana_generate_content_url_blank_model_falls_back_to_nanobanana_model() {
let settings = ImageProviderSettings {
provider: ImageProvider::VectorEngine,
base_url: "https://vector.example".to_string(),
api_key: "test-key".to_string(),
request_timeout_ms: 1_000,
request_deadline: None,
};
assert_eq!(
nanobanana_generate_content_url(&settings, " "),
"https://vector.example/v1beta/models/gemini-3.1-flash-image-preview:generateContent"
);
}
#[tokio::test]
async fn image_edit_retries_send_timeout_once_and_succeeds() {
let listener = TcpListener::bind("127.0.0.1:0")