mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-11-17 14:33:41 +08:00
feat: model provider refactor done
This commit is contained in:
46
app/client/core/modelClient.ts
Normal file
46
app/client/core/modelClient.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { ChatRequestPayload, Model, ModelConfig, ChatHandlers } from "./types";
|
||||
import { ProviderClient, ProviderTemplateName } from "./providerClient";
|
||||
|
||||
export class ModelClient {
|
||||
static getAllProvidersDefaultModels = () => {
|
||||
return ProviderClient.getAllProvidersDefaultModels();
|
||||
};
|
||||
|
||||
constructor(
|
||||
private model: Model,
|
||||
private modelConfig: ModelConfig,
|
||||
private providerClient: ProviderClient,
|
||||
) {}
|
||||
|
||||
chat(payload: ChatRequestPayload, handlers: ChatHandlers) {
|
||||
try {
|
||||
return this.providerClient.streamChat(
|
||||
{
|
||||
...payload,
|
||||
modelConfig: this.modelConfig,
|
||||
model: this.model.name,
|
||||
},
|
||||
handlers,
|
||||
);
|
||||
} catch (e) {
|
||||
handlers.onError(e as Error);
|
||||
}
|
||||
}
|
||||
|
||||
summerize(payload: ChatRequestPayload) {
|
||||
try {
|
||||
return this.providerClient.chat({
|
||||
...payload,
|
||||
modelConfig: this.modelConfig,
|
||||
model: this.model.name,
|
||||
});
|
||||
} catch (e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function ModelClientFactory(model: Model, modelConfig: ModelConfig) {
|
||||
const providerClient = new ProviderClient(model.providerTemplateName);
|
||||
return new ModelClient(model, modelConfig, providerClient);
|
||||
}
|
||||
Reference in New Issue
Block a user