From 81c88196c2436e7f372deb5786452d6a9a57f5c8 Mon Sep 17 00:00:00 2001 From: Kevin Cui Date: Mon, 5 Jan 2026 17:12:10 +0800 Subject: [PATCH 1/2] feat(error-rules): add Gemini non-streaming error rule MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 部分服务商仅支持流式的 gemini 请求, 这种情况下需要返回 400 状态码, 以便 gemini 检测到 generateContent 不可用时, 自动切换到 streamGenerateContent Signed-off-by: Kevin Cui --- src/repository/error-rules.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/repository/error-rules.ts b/src/repository/error-rules.ts index 2ba4c5031..09c9ba0d5 100644 --- a/src/repository/error-rules.ts +++ b/src/repository/error-rules.ts @@ -290,6 +290,22 @@ export async function deleteErrorRule(id: number): Promise { * 默认错误规则定义 */ const DEFAULT_ERROR_RULES = [ + { + pattern: "Missing or invalid 'alt' query parameter. Expected 'alt=sse'", + category: "parameter_error", + description: "Not supported non-streaming request", + matchType: "contains" as const, + isDefault: true, + isEnabled: true, + priority: 105, + overrideResponse: { + error: { + code: 400, + status: "INVALID_ARGUMENT", + message: "当前中转站不支持 Gemini generateContent 端点" + } + }, + }, { pattern: "prompt is too long.*(tokens.*maximum|maximum.*tokens)", category: "prompt_limit", From 95f9bb42eda463925eab6f8b2b349a9c9267bbe5 Mon Sep 17 00:00:00 2001 From: Kevin Cui Date: Mon, 5 Jan 2026 17:17:10 +0800 Subject: [PATCH 2/2] fix: lint Signed-off-by: Kevin Cui --- src/repository/error-rules.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/repository/error-rules.ts b/src/repository/error-rules.ts index 09c9ba0d5..1dadae986 100644 --- a/src/repository/error-rules.ts +++ b/src/repository/error-rules.ts @@ -302,8 +302,8 @@ const DEFAULT_ERROR_RULES = [ error: { code: 400, status: "INVALID_ARGUMENT", - message: "当前中转站不支持 Gemini generateContent 端点" - } + message: "当前中转站不支持 Gemini generateContent 端点", + }, }, }, {