Merge pull request #2317 from Yidadaa/bugfix-0709-2

fix: #2303 should be able to select custom models
This commit is contained in:
Yifei Zhang 2023-07-09 22:12:04 +08:00 committed by GitHub
commit e668e17655
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 16 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

@ -286,7 +286,9 @@
&-content {
.list {
overflow: hidden;
max-height: 90vh;
overflow-x: hidden;
overflow-y: auto;
.list-item {
cursor: pointer;

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,16 @@ export const useAppConfig = create<ChatConfigStore>()(
models: Object.values(modelMap),
}));
},
allModels() {
const customModels = get()
.customModels.split(",")
.filter((v) => !!v && v.length > 0)
.map((m) => ({ name: m, available: true }));
const models = get().models.concat(customModels);
return models;
},
}),
{
name: StoreKey.Config,