From afdf3a5cd435e250fa1e2fd184171328b36b915f Mon Sep 17 00:00:00 2001 From: Noctiro <49872497+Noctiro@users.noreply.github.com> Date: Tue, 4 Feb 2025 11:20:54 +0800 Subject: [PATCH] Add DEFAULT_COMPRESS_MODEL configuration --- .env.template | 5 +++++ README.md | 5 ++++- README_CN.md | 4 ++++ README_JA.md | 4 ++++ app/api/config/route.ts | 1 + app/components/model-config.tsx | 16 +++++++++------- app/config/server.ts | 6 ++++++ app/store/access.ts | 12 +++++++++++- app/store/chat.ts | 9 ++++++++- 9 files changed, 52 insertions(+), 10 deletions(-) diff --git a/.env.template b/.env.template index 907ec9dfe..78ae7d182 100644 --- a/.env.template +++ b/.env.template @@ -64,6 +64,11 @@ CUSTOM_MODELS= # Change default model DEFAULT_MODEL= +# (optional) +# Default: Empty +# Change default compress model +DEFAULT_COMPRESS_MODEL= + # anthropic claude Api Key.(optional) ANTHROPIC_API_KEY= diff --git a/README.md b/README.md index d6e99fca9..548d2e94c 100644 --- a/README.md +++ b/README.md @@ -321,6 +321,10 @@ For ByteDance: use `modelName@bytedance=deploymentName` to customize model name Change default model +### `DEFAULT_COMPRESS_MODEL` (optional) + +Change default summary model + ### `VISION_MODELS` (optional) > Default: Empty @@ -347,7 +351,6 @@ Stability API key. Customize Stability API url. - ### `ENABLE_MCP` (optional) Enable MCP(Model Context Protocol)Feature diff --git a/README_CN.md b/README_CN.md index b23ea790d..474669bff 100644 --- a/README_CN.md +++ b/README_CN.md @@ -244,6 +244,10 @@ DeepSeek Api Url. 更改默认模型 +### `DEFAULT_COMPRESS_MODEL` (可选) + +更改默认对话摘要模型 + ### `VISION_MODELS` (可选) > 默认值:空 diff --git a/README_JA.md b/README_JA.md index 29eb0d275..0739a66ac 100644 --- a/README_JA.md +++ b/README_JA.md @@ -217,6 +217,10 @@ ByteDance モードでは、`modelName@bytedance=deploymentName` 形式でモデ デフォルトのモデルを変更します。 +### `DEFAULT_COMPRESS_MODEL` (オプション) + +デフォルトの圧縮モデルを変更します。 + ### `VISION_MODELS` (オプション) > デフォルト:空 diff --git a/app/api/config/route.ts b/app/api/config/route.ts index 855a5db01..f04790485 100644 --- a/app/api/config/route.ts +++ b/app/api/config/route.ts @@ -14,6 +14,7 @@ const DANGER_CONFIG = { disableFastLink: serverConfig.disableFastLink, customModels: serverConfig.customModels, defaultModel: serverConfig.defaultModel, + defaultCompressModel: serverConfig.defaultCompressModel, visionModels: serverConfig.visionModels, }; diff --git a/app/components/model-config.tsx b/app/components/model-config.tsx index e845bfeac..11fa28aff 100644 --- a/app/components/model-config.tsx +++ b/app/components/model-config.tsx @@ -259,13 +259,15 @@ export function ModelConfigList(props: { }); }} > - {allModels - .filter((v) => v.available) - .map((v, i) => ( - - ))} + {Object.keys(groupModels).map((providerName, index) => ( + + {groupModels[providerName].map((v, i) => ( + + ))} + + ))} diff --git a/app/config/server.ts b/app/config/server.ts index 1166805b5..b57c8ba0d 100644 --- a/app/config/server.ts +++ b/app/config/server.ts @@ -23,6 +23,7 @@ declare global { DISABLE_FAST_LINK?: string; // disallow parse settings from url or not CUSTOM_MODELS?: string; // to control custom models DEFAULT_MODEL?: string; // to control default model in every new chat window + DEFAULT_COMPRESS_MODEL?: string; // to control default compress model VISION_MODELS?: string; // to control vision models // stability only @@ -131,6 +132,7 @@ export const getServerSideConfig = () => { const disableGPT4 = !!process.env.DISABLE_GPT4; let customModels = process.env.CUSTOM_MODELS ?? ""; let defaultModel = process.env.DEFAULT_MODEL ?? ""; + let defaultCompressModel = process.env.DEFAULT_COMPRESS_MODEL ?? ""; let visionModels = process.env.VISION_MODELS ?? ""; if (disableGPT4) { @@ -141,6 +143,9 @@ export const getServerSideConfig = () => { if (defaultModel && isGPT4Model(defaultModel)) { defaultModel = ""; } + if (defaultCompressModel && isGPT4Model(defaultCompressModel)) { + defaultCompressModel = ""; + } } const isStability = !!process.env.STABILITY_API_KEY; @@ -253,6 +258,7 @@ export const getServerSideConfig = () => { disableFastLink: !!process.env.DISABLE_FAST_LINK, customModels, defaultModel, + defaultCompressModel, visionModels, allowedWebDavEndpoints, enableMcp: process.env.ENABLE_MCP === "true", diff --git a/app/store/access.ts b/app/store/access.ts index 1fed5dfed..e2b0a84b8 100644 --- a/app/store/access.ts +++ b/app/store/access.ts @@ -131,6 +131,7 @@ const DEFAULT_ACCESS_STATE = { disableFastLink: false, customModels: "", defaultModel: "", + defaultCompressModel: "", visionModels: "", // tts config @@ -241,12 +242,21 @@ export const useAccessStore = createPersistStore( .then((res) => res.json()) .then((res) => { const defaultModel = res.defaultModel ?? ""; - if (defaultModel !== "") { + if (defaultModel) { const [model, providerName] = getModelProvider(defaultModel); DEFAULT_CONFIG.modelConfig.model = model; DEFAULT_CONFIG.modelConfig.providerName = providerName as any; } + const defaultCompressModel = res.defaultCompressModel ?? ""; + if (defaultCompressModel) { + const [model, providerName] = + getModelProvider(defaultCompressModel); + DEFAULT_CONFIG.modelConfig.compressModel = model; + DEFAULT_CONFIG.modelConfig.compressProviderName = + providerName as any; + } + return res; }) .then((res: DangerConfig) => { diff --git a/app/store/chat.ts b/app/store/chat.ts index 87c1a8beb..6ab7b14be 100644 --- a/app/store/chat.ts +++ b/app/store/chat.ts @@ -123,9 +123,16 @@ function getSummarizeModel( currentModel: string, providerName: string, ): string[] { + const configStore = useAppConfig.getState(); + if (configStore.modelConfig.compressModel) { + return [ + configStore.modelConfig.compressModel, + configStore.modelConfig.compressProviderName, + ]; + } + // if it is using gpt-* models, force to use 4o-mini to summarize if (currentModel.startsWith("gpt") || currentModel.startsWith("chatgpt")) { - const configStore = useAppConfig.getState(); const accessStore = useAccessStore.getState(); const allModel = collectModelsWithDefaultModel( configStore.models,