Merge pull request #3190 from M0ch0/staging Update for Latest Google AI Studio

0819588e7a6b6bdda8b06320145b606598abb35f

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

Signed
6 files changed, +14 -108Showing whitespace changes
public/index.html+10 -14
@@ -3025,34 +3025,30 @@
30253025 <optgroup label="Primary">
30263026 <option value="gemini-1.5-pro">Gemini 1.5 Pro</option>
30273027 <option value="gemini-1.5-flash">Gemini 1.5 Flash</option>
30283028 <option value="gemini-1.0-pro">Gemini 1.0 Pro (Deprecated)</option>
30293029 <option value="gemini-pro">Gemini Pro (1.0) (Deprecated)</option>
3030- <option value="gemini-pro-vision">Gemini Pro Vision (1.0)</option>
30313030 <option value="gemini-ultra">Gemini Ultra (1.0)</option>
30323031 <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>
30353032 </optgroup>
30363033 <optgroup label="Subversions">
30373034 <option value="gemini-2.0-flash-exp">Gemini 2.0 Flash ExperimentExperimental</option>
30383035 <option value="gemini-exp-1114">Gemini Experimental 2024-11-14</option>
30393036 <option value="gemini-exp-1121">Gemini Experimental 2024-11-21</option>
30403037 <option value="gemini-exp-1206">Gemini Experimental 2024-12-06</option>
30413038 <option value="gemini-1.5-pro-exp-0801">Gemini 1.5 Pro ExperimentExperimental 2024-08-01</option>
30423039 <option value="gemini-1.5-pro-exp-0827">Gemini 1.5 Pro ExperimentExperimental 2024-08-27</option>
30433040 <option value="gemini-1.5-pro-latest">Gemini 1.5 Pro [latest]</option>
30443041 <option value="gemini-1.5-pro-001">Gemini 1.5 Pro [001]</option>
30453042 <option value="gemini-1.5-pro-002">Gemini 1.5 Pro [002]</option>
30463043 <option value="gemini-1.5-flash-8b">Gemini 1.5 Flash 8B</option>
30473044 <option value="gemini-1.5-flash-exp-0827">Gemini 1.5 Flash ExperimentExperimental 2024-08-27</option>
30483045 <option value="gemini-1.5-flash-8b-exp-0827">Gemini 1.5 Flash 8B ExperimentExperimental 2024-08-27</option>
30493046 <option value="gemini-1.5-flash-8b-exp-0924">Gemini 1.5 Flash 8B ExperimentExperimental 2024-09-24</option>
30503047 <option value="gemini-1.5-flash-latest">Gemini 1.5 Flash [latest]</option>
30513048 <option value="gemini-1.5-flash-001">Gemini 1.5 Flash [001]</option>
30523049 <option value="gemini-1.5-flash-002">Gemini 1.5 Flash [002]</option>
30533050 <option value="gemini-1.0-pro-latest">Gemini 1.0 Pro [latest] (Deprecated)</option>
30543051 <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>
30563052 </optgroup>
30573053 </select>
30583054 </div>
public/scripts/extensions/caption/settings.html+0 -1
@@ -70,7 +70,6 @@
7070 <option data-type="google" value="gemini-1.5-pro-002">gemini-1.5-pro-002</option>
7171 <option data-type="google" value="gemini-1.5-pro-exp-0801">gemini-1.5-pro-exp-0801</option>
7272 <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>
7473 <option data-type="groq" value="llama-3.2-11b-vision-preview">llama-3.2-11b-vision-preview</option>
7574 <option data-type="groq" value="llama-3.2-90b-vision-preview">llama-3.2-90b-vision-preview</option>
7675 <option data-type="groq" value="llava-v1.5-7b-4096-preview">llava-v1.5-7b-4096-preview</option>
public/scripts/openai.js+0 -6
@@ -4087,13 +4087,8 @@ async function onModelChange() {
40874087 $('#openai_max_context').attr('max', max_2mil);
40884088 } else if (value.includes('gemini-1.5-flash') || value.includes('gemini-2.0-flash-exp')) {
40894089 $('#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);
40924090 } else if (value.includes('gemini-1.0-pro') || value === 'gemini-pro') {
40934091 $('#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:
40974092 } else if (value.includes('gemini-1.0-ultra') || value === 'gemini-ultra') {
40984093 $('#openai_max_context').attr('max', max_32k);
40994094 } else {
@@ -4776,7 +4771,6 @@ export function isImageInliningSupported() {
47764771 'gemini-1.5-pro-002',
47774772 'gemini-1.5-pro-exp-0801',
47784773 'gemini-1.5-pro-exp-0827',
4779- 'gemini-pro-vision',
47804774 'claude-3',
47814775 'claude-3-5',
47824776 'gpt-4-turbo',
src/constants.js+0 -27
@@ -159,33 +159,6 @@ export const GEMINI_SAFETY = [
159159 },
160160];
161161
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-
189162export const CHAT_COMPLETION_SOURCES = {
190163 OPENAI: 'openai',
191164 WINDOWAI: 'windowai',
src/endpoints/backends/chat-completions.js+4 -41
@@ -6,7 +6,6 @@ import { jsonParser } from '../../express-common.js';
66import {
77 CHAT_COMPLETION_SOURCES,
88 GEMINI_SAFETY,
9- BISON_SAFETY,
109 OPENROUTER_HEADERS,
1110} from '../../constants.js';
1211import {
@@ -262,9 +261,7 @@ async function sendMakerSuiteRequest(request, response) {
262261 }
263262
264263 const model = String(request.body.model);
265264 const isGeministream = model.includesBoolean('gemini'request.body.stream);
266- const isText = model.includes('text');
267- const stream = Boolean(request.body.stream) && isGemini;
268265
269266 const generationConfig = {
270267 stopSequences: request.body.stop,
@@ -301,39 +298,7 @@ async function sendMakerSuiteRequest(request, response) {
301298 return body;
302299 }
303300
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();
337302 console.log('Google AI Studio request:', body);
338303
339304 try {
@@ -343,10 +308,8 @@ async function sendMakerSuiteRequest(request, response) {
343308 controller.abort();
344309 });
345310
346311 const apiVersion = isGemini ? 'v1beta' : 'v1beta2';
347- const responseType = isGemini
312+ const responseType = (stream ? 'streamGenerateContent' : 'generateContent');
348- ? (stream ? 'streamGenerateContent' : 'generateContent')
349- : (isText ? 'generateText' : 'generateMessage');
350313
351314 const generateResponse = await fetch(`${apiUrl.toString().replace(/\/$/, '')}/${apiVersion}/models/${model}:${responseType}?key=${apiKey}${stream ? '&alt=sse' : ''}`, {
352315 body: JSON.stringify(body),
src/prompt-converters.js+0 -19
@@ -333,8 +333,6 @@ export function convertCohereMessages(messages, charName = '', userName = '') {
333333 * @returns {{contents: *[], system_instruction: {parts: {text: string}}}} Prompt for Google MakerSuite models
334334 */
335335export function convertGooglePrompt(messages, model, useSysPrompt = false, charName = '', userName = '') {
336- // This is a 1x1 transparent PNG
337- const PNG_PIXEL = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
338336
339337 const visionSupportedModels = [
340338 'gemini-2.0-flash-exp',
@@ -355,13 +353,6 @@ export function convertGooglePrompt(messages, model, useSysPrompt = false, charN
355353 'gemini-1.5-pro-002',
356354 'gemini-1.5-pro-exp-0801',
357355 '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',
365356 ];
366357
367358 const isMultimodal = visionSupportedModels.includes(model);
@@ -452,16 +443,6 @@ export function convertGooglePrompt(messages, model, useSysPrompt = false, charN
452443 }
453444 });
454445
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-
465446 return { contents: contents, system_instruction: system_instruction };
466447}
467448