Merge pull request #3190 from M0ch0/staging Update for Latest Google AI Studio
Signed| @@ -3025,34 +3025,30 @@ | ||
| 3025 | 3025 | <optgroup label="Primary"> |
| 3026 | 3026 | <option value="gemini-1.5-pro">Gemini 1.5 Pro</option> |
| 3027 | 3027 | <option value="gemini-1.5-flash">Gemini 1.5 Flash</option> |
| 3028 | 3028 | <option value="gemini-1.0-pro">Gemini 1.0 Pro (Deprecated)</option> |
| 3029 | 3029 | <option value="gemini-pro">Gemini Pro (1.0) (Deprecated)</option> |
| 3030 | - <option value="gemini-pro-vision">Gemini Pro Vision (1.0)</option> | |
| 3031 | 3030 | <option value="gemini-ultra">Gemini Ultra (1.0)</option> |
| 3032 | 3031 | <option value="gemini-1.0-ultra-latest">Gemini 1.0 Ultra</option> |
| 3033 | - <option value="text-bison-001">PaLM 2 (Legacy)</option> | |
| 3034 | - <option value="chat-bison-001">PaLM 2 Chat (Legacy)</option> | |
| 3035 | 3032 | </optgroup> |
| 3036 | 3033 | <optgroup label="Subversions"> |
| 3037 | 3034 | <option value="gemini-2.0-flash-exp">Gemini 2.0 Flash ExperimentExperimental</option> |
| 3038 | 3035 | <option value="gemini-exp-1114">Gemini Experimental 2024-11-14</option> |
| 3039 | 3036 | <option value="gemini-exp-1121">Gemini Experimental 2024-11-21</option> |
| 3040 | 3037 | <option value="gemini-exp-1206">Gemini Experimental 2024-12-06</option> |
| 3041 | 3038 | <option value="gemini-1.5-pro-exp-0801">Gemini 1.5 Pro ExperimentExperimental 2024-08-01</option> |
| 3042 | 3039 | <option value="gemini-1.5-pro-exp-0827">Gemini 1.5 Pro ExperimentExperimental 2024-08-27</option> |
| 3043 | 3040 | <option value="gemini-1.5-pro-latest">Gemini 1.5 Pro [latest]</option> |
| 3044 | 3041 | <option value="gemini-1.5-pro-001">Gemini 1.5 Pro [001]</option> |
| 3045 | 3042 | <option value="gemini-1.5-pro-002">Gemini 1.5 Pro [002]</option> |
| 3046 | 3043 | <option value="gemini-1.5-flash-8b">Gemini 1.5 Flash 8B</option> |
| 3047 | 3044 | <option value="gemini-1.5-flash-exp-0827">Gemini 1.5 Flash ExperimentExperimental 2024-08-27</option> |
| 3048 | 3045 | <option value="gemini-1.5-flash-8b-exp-0827">Gemini 1.5 Flash 8B ExperimentExperimental 2024-08-27</option> |
| 3049 | 3046 | <option value="gemini-1.5-flash-8b-exp-0924">Gemini 1.5 Flash 8B ExperimentExperimental 2024-09-24</option> |
| 3050 | 3047 | <option value="gemini-1.5-flash-latest">Gemini 1.5 Flash [latest]</option> |
| 3051 | 3048 | <option value="gemini-1.5-flash-001">Gemini 1.5 Flash [001]</option> |
| 3052 | 3049 | <option value="gemini-1.5-flash-002">Gemini 1.5 Flash [002]</option> |
| 3053 | 3050 | <option value="gemini-1.0-pro-latest">Gemini 1.0 Pro [latest] (Deprecated)</option> |
| 3054 | 3051 | <option value="gemini-1.0-pro-001">Gemini 1.0 Pro (Tuning) [001] (Deprecated)</option> |
| 3055 | - <option value="gemini-1.0-pro-vision-latest">Gemini 1.0 Pro Vision [latest]</option> | |
| 3056 | 3052 | </optgroup> |
| 3057 | 3053 | </select> |
| 3058 | 3054 | </div> |
| @@ -70,7 +70,6 @@ | ||
| 70 | 70 | <option data-type="google" value="gemini-1.5-pro-002">gemini-1.5-pro-002</option> |
| 71 | 71 | <option data-type="google" value="gemini-1.5-pro-exp-0801">gemini-1.5-pro-exp-0801</option> |
| 72 | 72 | <option data-type="google" value="gemini-1.5-pro-exp-0827">gemini-1.5-pro-exp-0827</option> |
| 73 | - <option data-type="google" value="gemini-pro-vision">gemini-pro-vision</option> | |
| 74 | 73 | <option data-type="groq" value="llama-3.2-11b-vision-preview">llama-3.2-11b-vision-preview</option> |
| 75 | 74 | <option data-type="groq" value="llama-3.2-90b-vision-preview">llama-3.2-90b-vision-preview</option> |
| 76 | 75 | <option data-type="groq" value="llava-v1.5-7b-4096-preview">llava-v1.5-7b-4096-preview</option> |
| @@ -4087,13 +4087,8 @@ async function onModelChange() { | ||
| 4087 | 4087 | $('#openai_max_context').attr('max', max_2mil); |
| 4088 | 4088 | } else if (value.includes('gemini-1.5-flash') || value.includes('gemini-2.0-flash-exp')) { |
| 4089 | 4089 | $('#openai_max_context').attr('max', max_1mil); |
| 4090 | - } else if (value.includes('gemini-1.0-pro-vision') || value === 'gemini-pro-vision') { | |
| 4091 | - $('#openai_max_context').attr('max', max_16k); | |
| 4092 | 4090 | } else if (value.includes('gemini-1.0-pro') || value === 'gemini-pro') { |
| 4093 | 4091 | $('#openai_max_context').attr('max', max_32k); |
| 4094 | - } else if (value === 'text-bison-001') { | |
| 4095 | - $('#openai_max_context').attr('max', max_8k); | |
| 4096 | - // The ultra endpoints are possibly dead: | |
| 4097 | 4092 | } else if (value.includes('gemini-1.0-ultra') || value === 'gemini-ultra') { |
| 4098 | 4093 | $('#openai_max_context').attr('max', max_32k); |
| 4099 | 4094 | } else { |
| @@ -4776,7 +4771,6 @@ export function isImageInliningSupported() { | ||
| 4776 | 4771 | 'gemini-1.5-pro-002', |
| 4777 | 4772 | 'gemini-1.5-pro-exp-0801', |
| 4778 | 4773 | 'gemini-1.5-pro-exp-0827', |
| 4779 | - 'gemini-pro-vision', | |
| 4780 | 4774 | 'claude-3', |
| 4781 | 4775 | 'claude-3-5', |
| 4782 | 4776 | 'gpt-4-turbo', |
| @@ -159,33 +159,6 @@ export const GEMINI_SAFETY = [ | ||
| 159 | 159 | }, |
| 160 | 160 | ]; |
| 161 | 161 | |
| 162 | -export const BISON_SAFETY = [ | |
| 163 | - { | |
| 164 | - category: 'HARM_CATEGORY_DEROGATORY', | |
| 165 | - threshold: 'BLOCK_NONE', | |
| 166 | - }, | |
| 167 | - { | |
| 168 | - category: 'HARM_CATEGORY_TOXICITY', | |
| 169 | - threshold: 'BLOCK_NONE', | |
| 170 | - }, | |
| 171 | - { | |
| 172 | - category: 'HARM_CATEGORY_VIOLENCE', | |
| 173 | - threshold: 'BLOCK_NONE', | |
| 174 | - }, | |
| 175 | - { | |
| 176 | - category: 'HARM_CATEGORY_SEXUAL', | |
| 177 | - threshold: 'BLOCK_NONE', | |
| 178 | - }, | |
| 179 | - { | |
| 180 | - category: 'HARM_CATEGORY_MEDICAL', | |
| 181 | - threshold: 'BLOCK_NONE', | |
| 182 | - }, | |
| 183 | - { | |
| 184 | - category: 'HARM_CATEGORY_DANGEROUS', | |
| 185 | - threshold: 'BLOCK_NONE', | |
| 186 | - }, | |
| 187 | -]; | |
| 188 | - | |
| 189 | 162 | export const CHAT_COMPLETION_SOURCES = { |
| 190 | 163 | OPENAI: 'openai', |
| 191 | 164 | WINDOWAI: 'windowai', |
| @@ -6,7 +6,6 @@ import { jsonParser } from '../../express-common.js'; | ||
| 6 | 6 | import { |
| 7 | 7 | CHAT_COMPLETION_SOURCES, |
| 8 | 8 | GEMINI_SAFETY, |
| 9 | - BISON_SAFETY, | |
| 10 | 9 | OPENROUTER_HEADERS, |
| 11 | 10 | } from '../../constants.js'; |
| 12 | 11 | import { |
| @@ -262,9 +261,7 @@ async function sendMakerSuiteRequest(request, response) { | ||
| 262 | 261 | } |
| 263 | 262 | |
| 264 | 263 | const model = String(request.body.model); |
| 265 | 264 | const isGeministream = model.includesBoolean('gemini'request.body.stream); |
| 266 | - const isText = model.includes('text'); | |
| 267 | - const stream = Boolean(request.body.stream) && isGemini; | |
| 268 | 265 | |
| 269 | 266 | const generationConfig = { |
| 270 | 267 | stopSequences: request.body.stop, |
| @@ -301,39 +298,7 @@ async function sendMakerSuiteRequest(request, response) { | ||
| 301 | 298 | return body; |
| 302 | 299 | } |
| 303 | 300 | |
| 304 | - function getBisonBody() { | |
| 301 | + const body = getGeminiBody(); | |
| 305 | - const prompt = isText | |
| 306 | - ? ({ text: convertTextCompletionPrompt(request.body.messages) }) | |
| 307 | - : ({ messages: convertGooglePrompt(request.body.messages, model).contents }); | |
| 308 | - | |
| 309 | - /** @type {any} Shut the lint up */ | |
| 310 | - const bisonBody = { | |
| 311 | - ...generationConfig, | |
| 312 | - safetySettings: BISON_SAFETY, | |
| 313 | - candidate_count: 1, // lewgacy spelling | |
| 314 | - prompt: prompt, | |
| 315 | - }; | |
| 316 | - | |
| 317 | - if (!isText) { | |
| 318 | - delete bisonBody.stopSequences; | |
| 319 | - delete bisonBody.maxOutputTokens; | |
| 320 | - delete bisonBody.safetySettings; | |
| 321 | - | |
| 322 | - if (Array.isArray(prompt.messages)) { | |
| 323 | - for (const msg of prompt.messages) { | |
| 324 | - msg.author = msg.role; | |
| 325 | - msg.content = msg.parts[0].text; | |
| 326 | - delete msg.parts; | |
| 327 | - delete msg.role; | |
| 328 | - } | |
| 329 | - } | |
| 330 | - } | |
| 331 | - | |
| 332 | - delete bisonBody.candidateCount; | |
| 333 | - return bisonBody; | |
| 334 | - } | |
| 335 | - | |
| 336 | - const body = isGemini ? getGeminiBody() : getBisonBody(); | |
| 337 | 302 | console.log('Google AI Studio request:', body); |
| 338 | 303 | |
| 339 | 304 | try { |
| @@ -343,10 +308,8 @@ async function sendMakerSuiteRequest(request, response) { | ||
| 343 | 308 | controller.abort(); |
| 344 | 309 | }); |
| 345 | 310 | |
| 346 | 311 | const apiVersion = isGemini ? 'v1beta' : 'v1beta2'; |
| 347 | - const responseType = isGemini | |
| 312 | + const responseType = (stream ? 'streamGenerateContent' : 'generateContent'); | |
| 348 | - ? (stream ? 'streamGenerateContent' : 'generateContent') | |
| 349 | - : (isText ? 'generateText' : 'generateMessage'); | |
| 350 | 313 | |
| 351 | 314 | const generateResponse = await fetch(`${apiUrl.toString().replace(/\/$/, '')}/${apiVersion}/models/${model}:${responseType}?key=${apiKey}${stream ? '&alt=sse' : ''}`, { |
| 352 | 315 | body: JSON.stringify(body), |
| @@ -333,8 +333,6 @@ export function convertCohereMessages(messages, charName = '', userName = '') { | ||
| 333 | 333 | * @returns {{contents: *[], system_instruction: {parts: {text: string}}}} Prompt for Google MakerSuite models |
| 334 | 334 | */ |
| 335 | 335 | export function convertGooglePrompt(messages, model, useSysPrompt = false, charName = '', userName = '') { |
| 336 | - // This is a 1x1 transparent PNG | |
| 337 | - const PNG_PIXEL = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='; | |
| 338 | 336 | |
| 339 | 337 | const visionSupportedModels = [ |
| 340 | 338 | 'gemini-2.0-flash-exp', |
| @@ -355,13 +353,6 @@ export function convertGooglePrompt(messages, model, useSysPrompt = false, charN | ||
| 355 | 353 | 'gemini-1.5-pro-002', |
| 356 | 354 | 'gemini-1.5-pro-exp-0801', |
| 357 | 355 | 'gemini-1.5-pro-exp-0827', |
| 358 | - 'gemini-1.0-pro-vision-latest', | |
| 359 | - 'gemini-pro-vision', | |
| 360 | - ]; | |
| 361 | - | |
| 362 | - const dummyRequiredModels = [ | |
| 363 | - 'gemini-1.0-pro-vision-latest', | |
| 364 | - 'gemini-pro-vision', | |
| 365 | 356 | ]; |
| 366 | 357 | |
| 367 | 358 | const isMultimodal = visionSupportedModels.includes(model); |
| @@ -452,16 +443,6 @@ export function convertGooglePrompt(messages, model, useSysPrompt = false, charN | ||
| 452 | 443 | } |
| 453 | 444 | }); |
| 454 | 445 | |
| 455 | - // pro 1.5 doesn't require a dummy image to be attached, other vision models do | |
| 456 | - if (isMultimodal && dummyRequiredModels.includes(model) && !hasImage) { | |
| 457 | - contents[0].parts.push({ | |
| 458 | - inlineData: { | |
| 459 | - mimeType: 'image/png', | |
| 460 | - data: PNG_PIXEL, | |
| 461 | - }, | |
| 462 | - }); | |
| 463 | - } | |
| 464 | - | |
| 465 | 446 | return { contents: contents, system_instruction: system_instruction }; |
| 466 | 447 | } |
| 467 | 448 | |