mirror of
https://github.com/Yidadaa/ChatGPT-Next-Web.git
synced 2025-09-04 14:36:54 +08:00
feat: 1) Present 'maxtokens' as properties tied to a single model. 2) Remove the original author's implementation of the send verification logic and replace it with a user input validator. Pre-verification 3) Provides the ability to pull the 'User Visible modellist' provided by 'provider' 4) Provider-related parameters are passed in the constructor of 'providerClient'. Not passed in the 'chat' method
This commit is contained in:
@@ -9,22 +9,37 @@ import {
|
||||
import { StoreKey } from "../constant";
|
||||
import { createPersistStore } from "../utils/store";
|
||||
|
||||
export const DEFAULT_CONFIG = {
|
||||
lastUpdate: Date.now(), // timestamp, to merge state
|
||||
const firstUpdate = Date.now();
|
||||
|
||||
providers: ProviderClient.getProviderTemplateList()
|
||||
.filter((p) => p !== NextChatProvider)
|
||||
.map((p) => createProvider(p)),
|
||||
};
|
||||
function getDefaultConfig() {
|
||||
const providers = Object.values(ProviderClient.ProviderTemplates)
|
||||
.filter((t) => !(t instanceof NextChatProvider))
|
||||
.map((t) => createProvider(t, true));
|
||||
|
||||
export type ProvidersConfig = typeof DEFAULT_CONFIG;
|
||||
const initProvider = providers[0];
|
||||
|
||||
const currentModel =
|
||||
initProvider.models.find((m) => m.isDefaultSelected) ||
|
||||
initProvider.models[0];
|
||||
|
||||
return {
|
||||
lastUpdate: firstUpdate, // timestamp, to merge state
|
||||
|
||||
currentModel: currentModel.name,
|
||||
currentProvider: initProvider.name,
|
||||
|
||||
providers,
|
||||
};
|
||||
}
|
||||
|
||||
export type ProvidersConfig = ReturnType<typeof getDefaultConfig>;
|
||||
|
||||
export const useProviders = createPersistStore(
|
||||
{ ...DEFAULT_CONFIG },
|
||||
{ ...getDefaultConfig() },
|
||||
(set, get) => {
|
||||
const methods = {
|
||||
reset() {
|
||||
set(() => ({ ...DEFAULT_CONFIG }));
|
||||
set(() => getDefaultConfig());
|
||||
},
|
||||
|
||||
addProvider(provider: Provider) {
|
||||
@@ -53,10 +68,14 @@ export const useProviders = createPersistStore(
|
||||
return get().providers.find((p) => p.name === providerName);
|
||||
},
|
||||
|
||||
addModel(model: Omit<Model, "providerTemplateName">, provider: Provider) {
|
||||
addModel(
|
||||
model: Omit<Model, "providerTemplateName" | "customized">,
|
||||
provider: Provider,
|
||||
) {
|
||||
const newModel: Model = {
|
||||
providerTemplateName: provider.providerTemplateName,
|
||||
...model,
|
||||
providerTemplateName: provider.providerTemplateName,
|
||||
customized: true,
|
||||
};
|
||||
return methods.updateProvider({
|
||||
...provider,
|
||||
@@ -80,6 +99,13 @@ export const useProviders = createPersistStore(
|
||||
});
|
||||
},
|
||||
|
||||
switchModel(model: Model, provider: Provider) {
|
||||
set(() => ({
|
||||
currentModel: model.name,
|
||||
currentProvider: provider.name,
|
||||
}));
|
||||
},
|
||||
|
||||
getModel(
|
||||
modelName: string,
|
||||
providerName: string,
|
||||
|
Reference in New Issue
Block a user