diff --git a/app/masks/index.ts b/app/masks/index.ts index 07c6a3e8..b9cb23f2 100644 --- a/app/masks/index.ts +++ b/app/masks/index.ts @@ -9,7 +9,7 @@ export const BUILTIN_MASK_ID = 100000; export const BUILTIN_MASK_STORE = { buildinId: BUILTIN_MASK_ID, - masks: {} as Record, + masks: {} as Record, get(id?: number) { if (!id) return undefined; return this.masks[id] as Mask | undefined; @@ -21,6 +21,6 @@ export const BUILTIN_MASK_STORE = { }, }; -export const BUILTIN_MASKS: Mask[] = [...CN_MASKS, ...EN_MASKS].map((m) => - BUILTIN_MASK_STORE.add(m), +export const BUILTIN_MASKS: BuiltinMask[] = [...CN_MASKS, ...EN_MASKS].map( + (m) => BUILTIN_MASK_STORE.add(m), ); diff --git a/app/masks/typing.ts b/app/masks/typing.ts index 510d94a2..1ded6a90 100644 --- a/app/masks/typing.ts +++ b/app/masks/typing.ts @@ -1,5 +1,7 @@ +import { ModelConfig } from "../store"; import { type Mask } from "../store/mask"; -export type BuiltinMask = Omit & { - builtin: true; +export type BuiltinMask = Omit & { + builtin: Boolean; + modelConfig: Partial; }; diff --git a/app/store/chat.ts b/app/store/chat.ts index 2a826b6b..d311c88f 100644 --- a/app/store/chat.ts +++ b/app/store/chat.ts @@ -5,7 +5,7 @@ import { trimTopic } from "../utils"; import Locale, { getLang } from "../locales"; import { showToast } from "../components/ui-lib"; -import { ModelConfig, ModelType } from "./config"; +import { ModelConfig, ModelType, useAppConfig } from "./config"; import { createEmptyMask, Mask } from "./mask"; import { DEFAULT_INPUT_TEMPLATE, StoreKey } from "../constant"; import { api, RequestMessage } from "../client/api"; @@ -181,7 +181,16 @@ export const useChatStore = create()( session.id = get().globalId; if (mask) { - session.mask = { ...mask }; + const config = useAppConfig.getState(); + const globalModelConfig = config.modelConfig; + + session.mask = { + ...mask, + modelConfig: { + ...globalModelConfig, + ...mask.modelConfig, + }, + }; session.topic = mask.name; } diff --git a/app/store/mask.ts b/app/store/mask.ts index ed45241f..6d6377c3 100644 --- a/app/store/mask.ts +++ b/app/store/mask.ts @@ -3,7 +3,7 @@ import { persist } from "zustand/middleware"; import { BUILTIN_MASKS } from "../masks"; import { getLang, Lang } from "../locales"; import { DEFAULT_TOPIC, ChatMessage } from "./chat"; -import { ModelConfig, ModelType, useAppConfig } from "./config"; +import { ModelConfig, useAppConfig } from "./config"; import { StoreKey } from "../constant"; export type Mask = { @@ -89,7 +89,18 @@ export const useMaskStore = create()( const userMasks = Object.values(get().masks).sort( (a, b) => b.id - a.id, ); - return userMasks.concat(BUILTIN_MASKS); + const config = useAppConfig.getState(); + const buildinMasks = BUILTIN_MASKS.map( + (m) => + ({ + ...m, + modelConfig: { + ...config.modelConfig, + ...m.modelConfig, + }, + } as Mask), + ); + return userMasks.concat(buildinMasks); }, search(text) { return Object.values(get().masks);