diff --git a/public/index.html b/public/index.html index b7f19799d..82ab25778 100644 --- a/public/index.html +++ b/public/index.html @@ -3075,8 +3075,11 @@ - + + + + diff --git a/public/scripts/extensions/caption/settings.html b/public/scripts/extensions/caption/settings.html index 3f344da0c..2dab71817 100644 --- a/public/scripts/extensions/caption/settings.html +++ b/public/scripts/extensions/caption/settings.html @@ -53,6 +53,12 @@ + + + + + + diff --git a/public/scripts/openai.js b/public/scripts/openai.js index ed42d1554..0a0d67ada 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -4239,9 +4239,9 @@ async function onModelChange() { $('#openai_max_context').attr('max', max_2mil); } else if (value.includes('gemini-exp-1114') || value.includes('gemini-exp-1121') || value.includes('gemini-2.0-flash-thinking-exp-1219')) { $('#openai_max_context').attr('max', max_32k); - } else if (value.includes('gemini-1.5-pro') || value.includes('gemini-exp-1206')) { + } else if (value.includes('gemini-1.5-pro') || value.includes('gemini-exp-1206') || value.includes('gemini-2.0-pro')) { $('#openai_max_context').attr('max', max_2mil); - } else if (value.includes('gemini-1.5-flash') || value.includes('gemini-2.0-flash-exp') || value.includes('gemini-2.0-flash-thinking-exp')) { + } else if (value.includes('gemini-1.5-flash') || value.includes('gemini-2.0-flash')) { $('#openai_max_context').attr('max', max_1mil); } else if (value.includes('gemini-1.0-pro') || value === 'gemini-pro') { $('#openai_max_context').attr('max', max_32k); @@ -4934,6 +4934,12 @@ export function isImageInliningSupported() { // gultra just isn't being offered as multimodal, thanks google. const visionSupportedModels = [ 'gpt-4-vision', + 'gemini-2.0-pro-exp', + 'gemini-2.0-pro-exp-02-05', + 'gemini-2.0-flash-lite-preview', + 'gemini-2.0-flash-lite-preview-02-05', + 'gemini-2.0-flash', + 'gemini-2.0-flash-001', 'gemini-2.0-flash-thinking-exp-1219', 'gemini-2.0-flash-thinking-exp-01-21', 'gemini-2.0-flash-thinking-exp', diff --git a/src/constants.js b/src/constants.js index cf5f45fbc..30f6f2da0 100644 --- a/src/constants.js +++ b/src/constants.js @@ -139,19 +139,19 @@ export const UNSAFE_EXTENSIONS = [ export const GEMINI_SAFETY = [ { category: 'HARM_CATEGORY_HARASSMENT', - threshold: 'BLOCK_NONE', + threshold: 'OFF', }, { category: 'HARM_CATEGORY_HATE_SPEECH', - threshold: 'BLOCK_NONE', + threshold: 'OFF', }, { category: 'HARM_CATEGORY_SEXUALLY_EXPLICIT', - threshold: 'BLOCK_NONE', + threshold: 'OFF', }, { category: 'HARM_CATEGORY_DANGEROUS_CONTENT', - threshold: 'BLOCK_NONE', + threshold: 'OFF', }, { category: 'HARM_CATEGORY_CIVIC_INTEGRITY', diff --git a/src/endpoints/backends/chat-completions.js b/src/endpoints/backends/chat-completions.js index 22926925a..195158bcb 100644 --- a/src/endpoints/backends/chat-completions.js +++ b/src/endpoints/backends/chat-completions.js @@ -316,9 +316,15 @@ async function sendMakerSuiteRequest(request, response) { const prompt = convertGooglePrompt(request.body.messages, model, should_use_system_prompt, getPromptNames(request)); let safetySettings = GEMINI_SAFETY; - if (model.includes('gemini-2.0-flash-exp')) { + // These old models do not support setting the threshold to OFF at all. + if (['gemini-1.5-pro-001', 'gemini-1.5-flash-001', 'gemini-1.0-pro-001'].includes(model)) { + safetySettings = GEMINI_SAFETY.map(setting => ({ ...setting, threshold: 'BLOCK_NONE' })); + } + // Interestingly, Gemini 2.0 Flash does support setting the threshold for HARM_CATEGORY_CIVIC_INTEGRITY to OFF. + else if (['gemini-2.0-flash', 'gemini-2.0-flash-001', 'gemini-2.0-flash-exp'].includes(model)) { safetySettings = GEMINI_SAFETY.map(setting => ({ ...setting, threshold: 'OFF' })); } + // Most of the other models allow for setting the threshold of filters, except for HARM_CATEGORY_CIVIC_INTEGRITY, to OFF. let body = { contents: prompt.contents, diff --git a/src/prompt-converters.js b/src/prompt-converters.js index 49afc1f2f..4389b7199 100644 --- a/src/prompt-converters.js +++ b/src/prompt-converters.js @@ -360,6 +360,12 @@ export function convertCohereMessages(messages, names) { */ export function convertGooglePrompt(messages, model, useSysPrompt, names) { const visionSupportedModels = [ + 'gemini-2.0-pro-exp', + 'gemini-2.0-pro-exp-02-05', + 'gemini-2.0-flash-lite-preview', + 'gemini-2.0-flash-lite-preview-02-05', + 'gemini-2.0-flash', + 'gemini-2.0-flash-001', 'gemini-2.0-flash-thinking-exp', 'gemini-2.0-flash-thinking-exp-01-21', 'gemini-2.0-flash-thinking-exp-1219',