33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { Mem0ProviderSettings } from "./mem0-provider";
|
|
import Mem0AITextGenerator, { ProviderSettings } from "./provider-response-provider";
|
|
import { LanguageModelV1 } from "ai";
|
|
|
|
class Mem0ClassSelector {
|
|
modelId: string;
|
|
provider_wrapper: string;
|
|
config: Mem0ProviderSettings;
|
|
provider_config?: ProviderSettings;
|
|
static supportedProviders = ["openai", "anthropic", "cohere", "groq"];
|
|
|
|
constructor(modelId: string, config: Mem0ProviderSettings, provider_config?: ProviderSettings) {
|
|
this.modelId = modelId;
|
|
this.provider_wrapper = config.provider || "openai";
|
|
this.provider_config = provider_config;
|
|
if(config) this.config = config;
|
|
else this.config = {
|
|
provider: this.provider_wrapper,
|
|
};
|
|
|
|
// Check if provider_wrapper is supported
|
|
if (!Mem0ClassSelector.supportedProviders.includes(this.provider_wrapper)) {
|
|
throw new Error(`Model not supported: ${this.provider_wrapper}`);
|
|
}
|
|
}
|
|
|
|
createProvider(): LanguageModelV1 {
|
|
return new Mem0AITextGenerator(this.modelId, this.config , this.provider_config || {});
|
|
}
|
|
}
|
|
|
|
export { Mem0ClassSelector };
|