- localization-svc: defaultLocale ru, resolveLocale only by geo - web-svc: DEFAULT_LOCALE ru, layout lang=ru, embeddedTranslations fallback ru - countryToLocale: default ru when no country or unknown country Co-authored-by: Cursor <cursoragent@cursor.com>
89 lines
2.3 KiB
TypeScript
89 lines
2.3 KiB
TypeScript
import { UIConfigField } from '../../../config/types.js';
|
|
import { getConfiguredModelProviderById } from '../../../config/serverRegistry.js';
|
|
import { Model, ModelList, ProviderMetadata } from '../../types.js';
|
|
import BaseModelProvider from '../../base/provider.js';
|
|
import BaseLLM from '../../base/llm.js';
|
|
import BaseEmbedding from '../../base/embedding.js';
|
|
import TransformerEmbedding from './transformerEmbedding.js';
|
|
|
|
interface TransformersConfig {}
|
|
|
|
const defaultEmbeddingModels: Model[] = [
|
|
{
|
|
name: 'all-MiniLM-L6-v2',
|
|
key: 'Xenova/all-MiniLM-L6-v2',
|
|
},
|
|
{
|
|
name: 'mxbai-embed-large-v1',
|
|
key: 'mixedbread-ai/mxbai-embed-large-v1',
|
|
},
|
|
{
|
|
name: 'nomic-embed-text-v1',
|
|
key: 'Xenova/nomic-embed-text-v1',
|
|
},
|
|
];
|
|
|
|
const providerConfigFields: UIConfigField[] = [];
|
|
|
|
class TransformersProvider extends BaseModelProvider<TransformersConfig> {
|
|
constructor(id: string, name: string, config: TransformersConfig) {
|
|
super(id, name, config);
|
|
}
|
|
|
|
async getDefaultModels(): Promise<ModelList> {
|
|
return {
|
|
embedding: [...defaultEmbeddingModels],
|
|
chat: [],
|
|
};
|
|
}
|
|
|
|
async getModelList(): Promise<ModelList> {
|
|
const defaultModels = await this.getDefaultModels();
|
|
const configProvider = getConfiguredModelProviderById(this.id)!;
|
|
|
|
return {
|
|
embedding: [
|
|
...defaultModels.embedding,
|
|
...configProvider.embeddingModels,
|
|
],
|
|
chat: [],
|
|
};
|
|
}
|
|
|
|
async loadChatModel(key: string): Promise<BaseLLM<any>> {
|
|
throw new Error('Transformers Provider does not support chat models.');
|
|
}
|
|
|
|
async loadEmbeddingModel(key: string): Promise<BaseEmbedding<any>> {
|
|
const modelList = await this.getModelList();
|
|
const exists = modelList.embedding.find((m) => m.key === key);
|
|
|
|
if (!exists) {
|
|
throw new Error(
|
|
'Error Loading OpenAI Embedding Model. Invalid Model Selected.',
|
|
);
|
|
}
|
|
|
|
return new TransformerEmbedding({
|
|
model: key,
|
|
});
|
|
}
|
|
|
|
static parseAndValidate(raw: any): TransformersConfig {
|
|
return {};
|
|
}
|
|
|
|
static getProviderConfigFields(): UIConfigField[] {
|
|
return providerConfigFields;
|
|
}
|
|
|
|
static getProviderMetadata(): ProviderMetadata {
|
|
return {
|
|
key: 'transformers',
|
|
name: 'Transformers',
|
|
};
|
|
}
|
|
}
|
|
|
|
export default TransformersProvider;
|