fix: #2303 should select custom models

This commit is contained in:
Yidadaa 2023-07-09 21:56:49 +08:00
parent 8e4743e719
commit 09b05cde7f
3 changed files with 18 additions and 15 deletions

View File

@ -414,8 +414,12 @@ export function ChatActions(props: {
// switch model
const currentModel = chatStore.currentSession().mask.modelConfig.model;
const models = useMemo(
() => config.models.filter((m) => m.available).map((m) => m.name),
[config.models],
() =>
config
.allModels()
.filter((m) => m.available)
.map((m) => m.name),
[config],
);
const [showModelSelector, setShowModelSelector] = useState(false);

View File

@ -9,10 +9,6 @@ export function ModelConfigList(props: {
updateConfig: (updater: (config: ModelConfig) => void) => void;
}) {
const config = useAppConfig();
const customModels = config.customModels
.split(",")
.map((m) => ({ name: m, available: true }));
const models = config.models.concat(customModels);
return (
<>
@ -28,7 +24,7 @@ export function ModelConfigList(props: {
);
}}
>
{models.map((v, i) => (
{config.allModels().map((v, i) => (
<option value={v.name} key={i} disabled={!v.available}>
{v.name}
</option>

View File

@ -57,6 +57,7 @@ export type ChatConfigStore = ChatConfig & {
reset: () => void;
update: (updater: (config: ChatConfig) => void) => void;
mergeModels: (newModels: LLMModel[]) => void;
allModels: () => LLMModel[];
};
export type ModelConfig = ChatConfig["modelConfig"];
@ -74,16 +75,9 @@ export function limitNumber(
return Math.min(max, Math.max(min, x));
}
export function limitModel(name: string) {
const allModels = useAppConfig.getState().models;
return allModels.some((m) => m.name === name && m.available)
? name
: "gpt-3.5-turbo";
}
export const ModalConfigValidator = {
model(x: string) {
return limitModel(x) as ModelType;
return x as ModelType;
},
max_tokens(x: number) {
return limitNumber(x, 0, 32000, 2000);
@ -139,6 +133,15 @@ export const useAppConfig = create<ChatConfigStore>()(
models: Object.values(modelMap),
}));
},
allModels() {
const customModels = get()
.customModels.split(",")
.map((m) => ({ name: m, available: true }));
const models = get().models.concat(customModels);
return models;
},
}),
{
name: StoreKey.Config,