Merge pull request #3919 from cloak1505/gemini-patch Prune Google models

6fb664fe249d9e1b8b3b7a274f38b4dd9033312c

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
6 files changed, +112 -107Showing whitespace changes
default/config.yaml+4 -0
@@ -234,6 +234,10 @@ claude:
234234 # should be ideal for most use cases.
235235 # Any value other than a non-negative integer will be ignored and caching at depth will not be enabled.
236236 cachingAtDepth: -1
237+# -- GOOGLE GEMINI API CONFIGURATION --
238+gemini:
239+ # API endpoint version ("v1beta" or "v1alpha")
240+ apiVersion: 'v1beta'
237241# -- SERVER PLUGIN CONFIGURATION --
238242enableServerPlugins: false
239243# Attempt to automatically update server plugins on startup
public/index.html+41 -41
@@ -2025,7 +2025,7 @@
20252025 <input id="use_makersuite_sysprompt" type="checkbox" />
20262026 <span>
20272027 <span data-i18n="Use system prompt">Use system prompt</span>
20282028 <i class="opacity50p fa-solid fa-circle-info" title="Gemini 1.5/2.0+, Pro/FlashLearnLM"></i>
20292029 </span>
20302030 </label>
20312031 <div class="toggle-description justifyLeft marginBot5">
@@ -3146,49 +3146,49 @@
31463146 <div>
31473147 <h4 data-i18n="Google Model">Google Model</h4>
31483148 <select id="model_google_select">
31493149 <optgroup label="PrimaryGemini 2.5">
31503150 <option value="gemini-2.05-flashpro-preview-03-25">Gemini gemini-2.0 Flash5-pro-preview-03-25</option>
31513151 <option value="gemini-12.5-pro-exp-03-25">Gemini 1gemini-2.5 Pro-pro-exp-03-25</option>
31523152 <option value="gemini-12.5-flash-preview-04-17">Gemini 1gemini-2.5 Flash-flash-preview-04-17</option>
3153- <option value="gemini-1.0-pro">Gemini 1.0 Pro (Deprecated)</option>
3153+ </optgroup>
3154- <option value="gemini-pro">Gemini Pro (1.0) (Deprecated)</option>
3154+ <optgroup label="Gemini 2.0">
3155- <option value="gemini-ultra">Gemini Ultra (1.0)</option>
3155+ <option value="gemini-2.0-pro-exp-02-05">gemini-2.0-pro-exp-02-05 → 2.5-pro-exp-03-25</option>
31563156 <option value="gemini-12.0-ultrapro-latestexp">Gemini 1gemini-2.0-pro-exp Ultra→ 2.5-pro-exp-03-25</option>
3157+ <option value="gemini-exp-1206">gemini-exp-1206 → 2.5-pro-exp-03-25</option>
3158+ <option value="gemini-2.0-flash-001">gemini-2.0-flash-001</option>
3159+ <option value="gemini-2.0-flash-exp-image-generation">gemini-2.0-flash-exp-image-generation</option>
3160+ <option value="gemini-2.0-flash-exp">gemini-2.0-flash-exp</option>
3161+ <option value="gemini-2.0-flash">gemini-2.0-flash</option>
3162+ <option value="gemini-2.0-flash-thinking-exp-01-21">gemini-2.0-flash-thinking-exp-01-21 → 2.5-flash-preview-04-17</option>
3163+ <option value="gemini-2.0-flash-thinking-exp-1219">gemini-2.0-flash-thinking-exp-1219 → 2.5-flash-preview-04-17</option>
3164+ <option value="gemini-2.0-flash-thinking-exp">gemini-2.0-flash-thinking-exp → 2.5-flash-preview-04-17</option>
3165+ <option value="gemini-2.0-flash-lite-001">gemini-2.0-flash-lite-001</option>
3166+ <option value="gemini-2.0-flash-lite-preview-02-05">gemini-2.0-flash-lite-preview-02-05</option>
3167+ <option value="gemini-2.0-flash-lite-preview">gemini-2.0-flash-lite-preview</option>
3168+ </optgroup>
3169+ <optgroup label="Gemini 1.5">
3170+ <option value="gemini-1.5-pro-latest">gemini-1.5-pro-latest</option>
3171+ <option value="gemini-1.5-pro-002">gemini-1.5-pro-002</option>
3172+ <option value="gemini-1.5-pro-001">gemini-1.5-pro-001</option>
3173+ <option value="gemini-1.5-pro">gemini-1.5-pro</option>
3174+ <option value="gemini-1.5-flash-latest">gemini-1.5-flash-latest</option>
3175+ <option value="gemini-1.5-flash-002">gemini-1.5-flash-002</option>
3176+ <option value="gemini-1.5-flash-001">gemini-1.5-flash-001</option>
3177+ <option value="gemini-1.5-flash">gemini-1.5-flash</option>
3178+ <option value="gemini-1.5-flash-8b-001">gemini-1.5-flash-8b-001</option>
3179+ <option value="gemini-1.5-flash-8b-exp-0924">gemini-1.5-flash-8b-exp-0924</option>
3180+ <option value="gemini-1.5-flash-8b-exp-0827">gemini-1.5-flash-8b-exp-0827</option>
3181+ <option value="gemini-1.5-flash-8b">gemini-1.5-flash-8b</option>
31573182 </optgroup>
31583183 <optgroup label="Gemma">
31593184 <option value="gemma-3-27b-it">Gemma gemma-3 27B-27b-it</option>
3185+ <option value="gemma-3-12b-it">gemma-3-12b-it</option>
3186+ <option value="gemma-3-4b-it">gemma-3-4b-it</option>
3187+ <option value="gemma-3-1b-it">gemma-3-1b-it</option>
31603188 </optgroup>
31613189 <optgroup label="SubversionsLearnLM">
31623190 <option value="geminilearnlm-2.5-pro-preview0-03flash-25experimental">Gemini learnlm-2.5 Pro Preview 20250-03flash-25experimental</option>
31633191 <option value="geminilearnlm-21.5-pro-exp-03-25experimental">Gemini 2learnlm-1.5 Pro Experimental 2025-03pro-25experimental</option>
3164- <option value="gemini-2.0-pro-exp">Gemini 2.0 Pro Experimental</option>
3165- <option value="gemini-2.0-pro-exp-02-05">Gemini 2.0 Pro Experimental 2025-02-05</option>
3166- <option value="gemini-2.5-flash-preview-04-17">Gemini 2.5 Flash Preview 2025-04-17</option>
3167- <option value="gemini-2.0-flash-lite-preview">Gemini 2.0 Flash-Lite Preview</option>
3168- <option value="gemini-2.0-flash-lite-preview-02-05">Gemini 2.0 Flash-Lite Preview 2025-02-05</option>
3169- <option value="gemini-2.0-flash-001">Gemini 2.0 Flash [001]</option>
3170- <option value="gemini-2.0-flash-thinking-exp">Gemini 2.0 Flash Thinking Experimental</option>
3171- <option value="gemini-2.0-flash-thinking-exp-01-21">Gemini 2.0 Flash Thinking Experimental 2025-01-21</option>
3172- <option value="gemini-2.0-flash-thinking-exp-1219">Gemini 2.0 Flash Thinking Experimental 2024-12-19</option>
3173- <option value="gemini-2.0-flash-exp">Gemini 2.0 Flash Experimental</option>
3174- <option value="gemini-2.0-flash-exp-image-generation">Gemini 2.0 Flash (Image Generation) Experimental</option>
3175- <option value="gemini-exp-1114">Gemini Experimental 2024-11-14</option>
3176- <option value="gemini-exp-1121">Gemini Experimental 2024-11-21</option>
3177- <option value="gemini-exp-1206">Gemini Experimental 2024-12-06</option>
3178- <option value="gemini-1.5-pro-exp-0801">Gemini 1.5 Pro Experimental 2024-08-01</option>
3179- <option value="gemini-1.5-pro-exp-0827">Gemini 1.5 Pro Experimental 2024-08-27</option>
3180- <option value="gemini-1.5-pro-latest">Gemini 1.5 Pro [latest]</option>
3181- <option value="gemini-1.5-pro-001">Gemini 1.5 Pro [001]</option>
3182- <option value="gemini-1.5-pro-002">Gemini 1.5 Pro [002]</option>
3183- <option value="gemini-1.5-flash-8b">Gemini 1.5 Flash 8B</option>
3184- <option value="gemini-1.5-flash-exp-0827">Gemini 1.5 Flash Experimental 2024-08-27</option>
3185- <option value="gemini-1.5-flash-8b-exp-0827">Gemini 1.5 Flash 8B Experimental 2024-08-27</option>
3186- <option value="gemini-1.5-flash-8b-exp-0924">Gemini 1.5 Flash 8B Experimental 2024-09-24</option>
3187- <option value="gemini-1.5-flash-latest">Gemini 1.5 Flash [latest]</option>
3188- <option value="gemini-1.5-flash-001">Gemini 1.5 Flash [001]</option>
3189- <option value="gemini-1.5-flash-002">Gemini 1.5 Flash [002]</option>
3190- <option value="gemini-1.0-pro-latest">Gemini 1.0 Pro [latest] (Deprecated)</option>
3191- <option value="gemini-1.0-pro-001">Gemini 1.0 Pro (Tuning) [001] (Deprecated)</option>
31923192 </optgroup>
31933193 </select>
31943194 </div>
public/scripts/extensions/caption/settings.html+21 -22
@@ -79,34 +79,33 @@
7979 <option data-type="anthropic" value="claude-3-haiku-20240307">claude-3-haiku-20240307</option>
8080 <option data-type="google" value="gemini-2.5-pro-preview-03-25">gemini-2.5-pro-preview-03-25</option>
8181 <option data-type="google" value="gemini-2.5-pro-exp-03-25">gemini-2.5-pro-exp-03-25</option>
82- <option data-type="google" value="gemini-2.0-pro-exp">gemini-2.0-pro-exp</option>
83- <option data-type="google" value="gemini-2.0-pro-exp-02-05">gemini-2.0-pro-exp-02-05</option>
8482 <option data-type="google" value="gemini-2.5-flash-preview-04-17">gemini-2.5-flash-preview-04-17</option>
8583 <option data-type="google" value="gemini-2.0-flashpro-liteexp-preview02-05">gemini-2.0-flashpro-liteexp-preview02-05 → 2.5-pro-exp-03-25</option>
8684 <option data-type="google" value="gemini-2.0-flash-lite-preview-02pro-05exp">gemini-2.0-flashpro-liteexp → 2.5-previewpro-02exp-0503-25</option>
8785 <option data-type="google" value="gemini-2.0exp-flash1206">gemini-exp-1206 → 2.05-flashpro-exp-03-25</option>
8886 <option data-type="google" value="gemini-2.0-flash-001">gemini-2.0-flash-001</option>
89- <option data-type="google" value="gemini-2.0-flash-exp">gemini-2.0-flash-exp</option>
9087 <option data-type="google" value="gemini-2.0-flash-exp-image-generation">gemini-2.0-flash-exp-image-generation</option>
9188 <option data-type="google" value="gemini-2.0-flash-thinking-exp">gemini-2.0-flash-thinking-exp</option>
9289 <option data-type="google" value="gemini-2.0-flash-thinking-exp-01-21">gemini-2.0-flash-thinking-exp-01-21</option>
9390 <option data-type="google" value="gemini-2.0-flash-thinking-exp-121901-21">gemini-2.0-flash-thinking-exp-121901-21 → 2.5-flash-preview-04-17</option>
9491 <option data-type="google" value="gemini-12.50-flash-thinking-exp-1219">gemini-12.0-flash-thinking-exp-1219 → 2.5-flash-preview-04-17</option>
92+ <option data-type="google" value="gemini-2.0-flash-thinking-exp">gemini-2.0-flash-thinking-exp → 2.5-flash-preview-04-17</option>
93+ <option data-type="google" value="gemini-2.0-flash-lite-001">gemini-2.0-flash-lite-001</option>
94+ <option data-type="google" value="gemini-2.0-flash-lite-preview-02-05">gemini-2.0-flash-lite-preview-02-05</option>
95+ <option data-type="google" value="gemini-2.0-flash-lite-preview">gemini-2.0-flash-lite-preview</option>
96+ <option data-type="google" value="gemini-1.5-pro-latest">gemini-1.5-pro-latest</option>
97+ <option data-type="google" value="gemini-1.5-pro-002">gemini-1.5-pro-002</option>
98+ <option data-type="google" value="gemini-1.5-pro-001">gemini-1.5-pro-001</option>
99+ <option data-type="google" value="gemini-1.5-pro">gemini-1.5-pro</option>
95100 <option data-type="google" value="gemini-1.5-flash-latest">gemini-1.5-flash-latest</option>
96- <option data-type="google" value="gemini-1.5-flash-001">gemini-1.5-flash-001</option>
97101 <option data-type="google" value="gemini-1.5-flash-002">gemini-1.5-flash-002</option>
98102 <option data-type="google" value="gemini-1.5-flash-exp-0827001">gemini-1.5-flash-exp-0827001</option>
99103 <option data-type="google" value="gemini-1.5-flash-8b-exp-0827">gemini-1.5-flash-8b-exp-0827</option>
104+ <option data-type="google" value="gemini-1.5-flash-8b-001">gemini-1.5-flash-8b-001</option>
100105 <option data-type="google" value="gemini-1.5-flash-8b-exp-0924">gemini-1.5-flash-8b-exp-0924</option>
101106 <option data-type="google" value="gemini-1.5-flash-8b-exp-11140827">gemini-1.5-flash-8b-exp-11140827</option>
102107 <option data-type="google" value="geminilearnlm-exp2.0-1121flash-experimental">geminilearnlm-exp2.0-1121flash-experimental</option>
103108 <option data-type="google" value="geminilearnlm-exp1.5-1206pro-experimental">geminilearnlm-exp1.5-1206pro-experimental</option>
104- <option data-type="google" value="gemini-1.5-pro">gemini-1.5-pro</option>
105- <option data-type="google" value="gemini-1.5-pro-latest">gemini-1.5-pro-latest</option>
106- <option data-type="google" value="gemini-1.5-pro-001">gemini-1.5-pro-001</option>
107- <option data-type="google" value="gemini-1.5-pro-002">gemini-1.5-pro-002</option>
108- <option data-type="google" value="gemini-1.5-pro-exp-0801">gemini-1.5-pro-exp-0801</option>
109- <option data-type="google" value="gemini-1.5-pro-exp-0827">gemini-1.5-pro-exp-0827</option>
110109 <option data-type="groq" value="llama-3.2-11b-vision-preview">llama-3.2-11b-vision-preview</option>
111110 <option data-type="groq" value="llama-3.2-90b-vision-preview">llama-3.2-90b-vision-preview</option>
112111 <option data-type="groq" value="llava-v1.5-7b-4096-preview">llava-v1.5-7b-4096-preview</option>
public/scripts/openai.js+8 -13
@@ -4481,20 +4481,16 @@ async function onModelChange() {
44814481 if (oai_settings.chat_completion_source == chat_completion_sources.MAKERSUITE) {
44824482 if (oai_settings.max_context_unlocked) {
44834483 $('#openai_max_context').attr('max', max_2mil);
44844484 } else if (value.includes('gemini-exp-1114') || value.includes('gemini-exp-1121') || value.includes('gemini-21.0-flash-thinking-exp5-1219pro')) {
4485- $('#openai_max_context').attr('max', max_32k);
4486- } else if (value.includes('gemini-1.5-pro') || value.includes('gemini-exp-1206') || value.includes('gemini-2.0-pro')) {
44874485 $('#openai_max_context').attr('max', max_2mil);
44884486 } else if (value.includes('gemini-1.5-flash') || value.includes('gemini-2.0-flash') || value.includes('gemini-2.5-flash-preview0-04pro') || value.includes('gemini-17exp') || value.includes('gemini-2.5-pro-exp-03-25flash') || value.includes('gemini-2.5-pro-preview') || value.includes('learnlm-032.0-25flash')) {
44894487 $('#openai_max_context').attr('max', max_1mil);
44904488 } else if (value.includes('geminigemma-1.03-pro') || value === 'gemini27b-proit')) {
4491- $('#openai_max_context').attr('max', max_32k);
4492- } else if (value.includes('gemini-1.0-ultra') || value === 'gemini-ultra') {
4493- $('#openai_max_context').attr('max', max_32k);
4494- } else if (value.includes('gemma-3')) {
44954489 $('#openai_max_context').attr('max', max_128k);
4490+ } else if (value.includes('gemma-3') || value.includes('learnlm-1.5-pro-experimental')) {
4491+ $('#openai_max_context').attr('max', max_32k);
44964492 } else {
44974493 $('#openai_max_context').attr('max', max_4kmax_32k);
44984494 }
44994495 let makersuite_max_temp = (value.includes('vision') || value.includes('ultra') || value.includes('gemma')) ? 1.0 : 2.0;
45004496 oai_settings.temp_openai = Math.min(makersuite_max_temp, oai_settings.temp_openai);
@@ -5152,9 +5148,8 @@ export function isImageInliningSupported() {
51525148 'gemini-1.5',
51535149 'gemini-2.0',
51545150 'gemini-2.5',
5155- 'gemini-exp-1114',
5156- 'gemini-exp-1121',
51575151 'gemini-exp-1206',
5152+ 'learnlm',
51585153 // MistralAI
51595154 'mistral-small-2503',
51605155 'mistral-small-latest',
@@ -5168,7 +5163,7 @@ export function isImageInliningSupported() {
51685163 case chat_completion_sources.OPENAI:
51695164 return visionSupportedModels.some(model =>
51705165 oai_settings.openai_model.includes(model)
51715166 && ['gpt-4-turbo-preview', 'o1-mini', 'o3-mini'].some(x => !oai_settings.openai_model.includes(x)),
51725167 );
51735168 case chat_completion_sources.MAKERSUITE:
51745169 return visionSupportedModels.some(model => oai_settings.google_model.includes(model));
src/constants.js+1 -1
@@ -156,7 +156,7 @@ export const GEMINI_SAFETY = [
156156 },
157157 {
158158 category: 'HARM_CATEGORY_CIVIC_INTEGRITY',
159159 threshold: 'BLOCK_NONEOFF',
160160 },
161161];
162162
src/endpoints/backends/chat-completions.js+37 -30
@@ -343,8 +343,8 @@ async function sendMakerSuiteRequest(request, response) {
343343 const enableWebSearch = Boolean(request.body.enable_web_search);
344344 const requestImages = Boolean(request.body.request_images);
345345 const reasoningEffort = String(request.body.reasoning_effort);
346- const isThinking = model.includes('thinking');
347346 const isGemma = model.includes('gemma');
347+ const isLearnLM = model.includes('learnlm');
348348
349349 const generationConfig = {
350350 stopSequences: request.body.stop,
@@ -358,48 +358,60 @@ async function sendMakerSuiteRequest(request, response) {
358358 };
359359
360360 function getGeminiBody() {
361+ // #region UGLY MODEL LISTS AREA
362+ const imageGenerationModels = [
363+ 'gemini-2.0-flash-exp',
364+ 'gemini-2.0-flash-exp-image-generation',
365+ ];
366+
367+ // These models do not support setting the threshold to OFF at all.
368+ const blockNoneModels = [
369+ 'gemini-1.5-pro-001',
370+ 'gemini-1.5-flash-001',
371+ 'gemini-1.5-flash-8b-exp-0827',
372+ 'gemini-1.5-flash-8b-exp-0924',
373+ ];
374+
375+ const thinkingBudgetModels = [
376+ 'gemini-2.5-flash-preview-04-17',
377+ ];
378+
379+ const noSearchModels = [
380+ 'gemini-2.0-flash-lite',
381+ 'gemini-2.0-flash-lite-001',
382+ 'gemini-2.0-flash-lite-preview-02-05',
383+ 'gemini-1.5-flash-8b-exp-0924',
384+ 'gemini-1.5-flash-8b-exp-0827',
385+ ];
386+ // #endregion
387+
361388 if (!Array.isArray(generationConfig.stopSequences) || !generationConfig.stopSequences.length) {
362389 delete generationConfig.stopSequences;
363390 }
364391
365392 const useMultiModalenableImageModality = requestImages && ['gemini-2.0-flash-exp', 'gemini-2.0-flash-exp-image-generation']imageGenerationModels.includes(model);
366393 if (useMultiModalenableImageModality) {
367394 generationConfig.responseModalities = ['text', 'image'];
368395 }
369396
370397 const useSystemPrompt = !useMultiModalenableImageModality && (!isGemma && request.body.use_makersuite_sysprompt;
371- model.includes('gemini-2.5-pro') ||
372- model.includes('gemini-2.5-flash') ||
373- model.includes('gemini-2.0-pro') ||
374- model.includes('gemini-2.0-flash') ||
375- model.includes('gemini-2.0-flash-thinking-exp') ||
376- model.includes('gemini-1.5-flash') ||
377- model.includes('gemini-1.5-pro') ||
378- model.startsWith('gemini-exp')
379- ) && request.body.use_makersuite_sysprompt;
380398
381399 const tools = [];
382400 const prompt = convertGooglePrompt(request.body.messages, model, useSystemPrompt, getPromptNames(request));
383401 let safetySettings = GEMINI_SAFETY;
384402
385- // These models do not support setting the threshold to OFF at all.
403+ if (blockNoneModels.includes(model)) {
386- if (['gemini-1.5-pro-001', 'gemini-1.5-flash-001', 'gemini-1.5-flash-8b-exp-0827', 'gemini-1.5-flash-8b-exp-0924', 'gemini-pro', 'gemini-1.0-pro', 'gemini-1.0-pro-001', 'gemma-3-27b-it'].includes(model)) {
387404 safetySettings = GEMINI_SAFETY.map(setting => ({ ...setting, threshold: 'BLOCK_NONE' }));
388405 }
389- // Interestingly, Gemini 2.0 Flash does support setting the threshold for HARM_CATEGORY_CIVIC_INTEGRITY to OFF.
390- else if (['gemini-2.0-flash', 'gemini-2.0-flash-001', 'gemini-2.0-flash-exp', 'gemini-2.0-flash-exp-image-generation'].includes(model)) {
391- safetySettings = GEMINI_SAFETY.map(setting => ({ ...setting, threshold: 'OFF' }));
392- }
393- // Most of the other models allow for setting the threshold of filters, except for HARM_CATEGORY_CIVIC_INTEGRITY, to OFF.
394406
395407 if (enableWebSearch && !useMultiModalenableImageModality && !isGemma && !isLearnLM && !noSearchModels.includes(model)) {
396408 const searchTool = model.includes('1.5') || model.includes('1.0')
397409 ? ({ google_search_retrieval: {} })
398410 : ({ google_search: {} });
399411 tools.push(searchTool);
400412 }
401413
402414 if (Array.isArray(request.body.tools) && request.body.tools.length > 0 && !useMultiModalenableImageModality && !isGemma) {
403415 const functionDeclarations = [];
404416 for (const tool of request.body.tools) {
405417 if (tool.type === 'function') {
@@ -415,11 +427,6 @@ async function sendMakerSuiteRequest(request, response) {
415427 tools.push({ function_declarations: functionDeclarations });
416428 }
417429
418- // One more models list to maintain, yay
419- const thinkingBudgetModels = [
420- 'gemini-2.5-flash-preview-04-17',
421- ];
422-
423430 if (thinkingBudgetModels.includes(model)) {
424431 const thinkingBudget = calculateGoogleBudgetTokens(generationConfig.maxOutputTokens, reasoningEffort);
425432
@@ -455,7 +462,7 @@ async function sendMakerSuiteRequest(request, response) {
455462 controller.abort();
456463 });
457464
458465 const apiVersion = isThinking ? getConfigValue('v1alphagemini.apiVersion' :, 'v1beta');
459466 const responseType = (stream ? 'streamGenerateContent' : 'generateContent');
460467
461468 const generateResponse = await fetch(`${apiUrl.toString().replace(/\/$/, '')}/${apiVersion}/models/${model}:${responseType}?key=${apiKey}${stream ? '&alt=sse' : ''}`, {
@@ -466,7 +473,7 @@ async function sendMakerSuiteRequest(request, response) {
466473 },
467474 signal: controller.signal,
468475 });
469- // have to do this because of their busted ass streaming endpoint
476+
470477 if (stream) {
471478 try {
472479 // Pipe remote SSE stream to Express response