47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
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);
|
|
}
|