From 9d8fd92dd31628552feb1757fd7df0aa018cac7e Mon Sep 17 00:00:00 2001 From: Aman <17457975+achhabra2@users.noreply.github.com> Date: Wed, 22 May 2024 07:20:35 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=87=AC=20refactor:=20Update=20default=20G?= =?UTF-8?q?oogle=20Models=20and=20Parameters=20(#2782)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update Google default model and parameters * Update .env.example Vertex AI Models to reflect latest version and deprecate bison family * Update Vertex AI model list in .env.example --- .env.example | 2 +- .../components/Endpoints/Settings/Google.tsx | 32 ++++--------------- packages/data-provider/src/generate.ts | 14 +------- packages/data-provider/src/schemas.ts | 28 ++++------------ 4 files changed, 15 insertions(+), 61 deletions(-) diff --git a/.env.example b/.env.example index 7800677e25..fcc7c944fa 100644 --- a/.env.example +++ b/.env.example @@ -119,7 +119,7 @@ GOOGLE_KEY=user_provided # GOOGLE_MODELS=gemini-1.5-flash-latest,gemini-1.0-pro,gemini-1.0-pro-001,gemini-1.0-pro-latest,gemini-1.0-pro-vision-latest,gemini-1.5-pro-latest,gemini-pro,gemini-pro-vision # Vertex AI -# GOOGLE_MODELS=gemini-1.5-flash-preview-0514,gemini-1.5-pro-preview-0409,gemini-1.0-pro-vision-001,gemini-pro,gemini-pro-vision,chat-bison,chat-bison-32k,codechat-bison,codechat-bison-32k,text-bison,text-bison-32k,text-unicorn,code-gecko,code-bison,code-bison-32k +# GOOGLE_MODELS=gemini-1.5-flash-preview-0514,gemini-1.5-pro-preview-0514,gemini-1.0-pro-vision-001,gemini-1.0-pro-002,gemini-1.0-pro-001,gemini-pro-vision,gemini-1.0-pro # Google Gemini Safety Settings # NOTE (Vertex AI): You do not have access to the BLOCK_NONE setting by default. diff --git a/client/src/components/Endpoints/Settings/Google.tsx b/client/src/components/Endpoints/Settings/Google.tsx index f16fb567dd..f1f62066aa 100644 --- a/client/src/components/Endpoints/Settings/Google.tsx +++ b/client/src/components/Endpoints/Settings/Google.tsx @@ -1,4 +1,3 @@ -import { useEffect } from 'react'; import TextareaAutosize from 'react-textarea-autosize'; import { EModelEndpoint, endpointSettings } from 'librechat-data-provider'; import type { TModelSelectProps, OnInputNumberChange } from '~/common'; @@ -31,25 +30,6 @@ export default function Settings({ conversation, setOption, models, readonly }: maxOutputTokens, } = conversation ?? {}; - const isGemini = model?.toLowerCase()?.includes('gemini'); - - const maxOutputTokensMax = isGemini - ? google.maxOutputTokens.maxGemini - : google.maxOutputTokens.max; - const maxOutputTokensDefault = isGemini - ? google.maxOutputTokens.defaultGemini - : google.maxOutputTokens.default; - - useEffect( - () => { - if (model) { - setOption('maxOutputTokens')(Math.min(Number(maxOutputTokens) ?? 0, maxOutputTokensMax)); - } - }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [model], - ); - const [setMaxContextTokens, maxContextTokensValue] = useDebouncedInput( { setOption, @@ -281,15 +261,15 @@ export default function Settings({ conversation, setOption, models, readonly }: setMaxOutputTokens(value ?? maxOutputTokensDefault)} - max={maxOutputTokensMax} + onChange={(value) => setMaxOutputTokens(Number(value))} + max={google.maxOutputTokens.max} min={google.maxOutputTokens.min} step={google.maxOutputTokens.step} controls={false} @@ -304,10 +284,10 @@ export default function Settings({ conversation, setOption, models, readonly }: setMaxOutputTokens(value[0])} - doubleClickHandler={() => setMaxOutputTokens(maxOutputTokensDefault)} - max={maxOutputTokensMax} + doubleClickHandler={() => setMaxOutputTokens(google.maxOutputTokens.default)} + max={google.maxOutputTokens.max} min={google.maxOutputTokens.min} step={google.maxOutputTokens.step} className="flex h-4 w-full" diff --git a/packages/data-provider/src/generate.ts b/packages/data-provider/src/generate.ts index fcb088473e..42024fda75 100644 --- a/packages/data-provider/src/generate.ts +++ b/packages/data-provider/src/generate.ts @@ -555,18 +555,6 @@ export const generateGoogleSchema = (customGoogle: GoogleSettings) => { maxContextTokens: true, }) .transform((obj) => { - const isGemini = obj?.model?.toLowerCase()?.includes('gemini'); - - const maxOutputTokensMax = isGemini - ? defaults.maxOutputTokens.maxGemini - : defaults.maxOutputTokens.max; - const maxOutputTokensDefault = isGemini - ? defaults.maxOutputTokens.defaultGemini - : defaults.maxOutputTokens.default; - - let maxOutputTokens = obj.maxOutputTokens ?? maxOutputTokensDefault; - maxOutputTokens = Math.min(maxOutputTokens, maxOutputTokensMax); - return { ...obj, model: obj.model ?? defaults.model.default, @@ -574,7 +562,7 @@ export const generateGoogleSchema = (customGoogle: GoogleSettings) => { promptPrefix: obj.promptPrefix ?? null, examples: obj.examples ?? [{ input: { content: '' }, output: { content: '' } }], temperature: obj.temperature ?? defaults.temperature.default, - maxOutputTokens, + maxOutputTokens: obj.maxOutputTokens ?? defaults.maxOutputTokens.default, topP: obj.topP ?? defaults.topP.default, topK: obj.topK ?? defaults.topK.default, maxContextTokens: obj.maxContextTokens ?? undefined, diff --git a/packages/data-provider/src/schemas.ts b/packages/data-provider/src/schemas.ts index 0b4c3dca52..91b03ce7f1 100644 --- a/packages/data-provider/src/schemas.ts +++ b/packages/data-provider/src/schemas.ts @@ -128,27 +128,25 @@ export const openAISettings = { export const googleSettings = { model: { - default: 'chat-bison', + default: 'gemini-1.5-flash-latest', }, maxOutputTokens: { min: 1, - max: 2048, + max: 8192, step: 1, - default: 1024, - maxGemini: 8192, - defaultGemini: 8192, + default: 8192, }, temperature: { min: 0, - max: 1, + max: 2, step: 0.01, - default: 0.2, + default: 1, }, topP: { min: 0, max: 1, step: 0.01, - default: 0.8, + default: 0.95, }, topK: { min: 1, @@ -484,18 +482,6 @@ export const googleSchema = tConversationSchema maxContextTokens: true, }) .transform((obj) => { - const isGemini = obj?.model?.toLowerCase()?.includes('gemini'); - - const maxOutputTokensMax = isGemini - ? google.maxOutputTokens.maxGemini - : google.maxOutputTokens.max; - const maxOutputTokensDefault = isGemini - ? google.maxOutputTokens.defaultGemini - : google.maxOutputTokens.default; - - let maxOutputTokens = obj.maxOutputTokens ?? maxOutputTokensDefault; - maxOutputTokens = Math.min(maxOutputTokens, maxOutputTokensMax); - return { ...obj, model: obj.model ?? google.model.default, @@ -503,7 +489,7 @@ export const googleSchema = tConversationSchema promptPrefix: obj.promptPrefix ?? null, examples: obj.examples ?? [{ input: { content: '' }, output: { content: '' } }], temperature: obj.temperature ?? google.temperature.default, - maxOutputTokens, + maxOutputTokens: obj.maxOutputTokens ?? google.maxOutputTokens.default, topP: obj.topP ?? google.topP.default, topK: obj.topK ?? google.topK.default, iconURL: obj.iconURL ?? undefined,