Perplexica/src/lib/providers/index.ts

53 lines
1.6 KiB
TypeScript
Raw Normal View History

import { loadGroqChatModels } from './groq';
2024-07-08 15:39:27 +05:30
import { loadOllamaChatModels, loadOllamaEmbeddingsModels } from './ollama';
import { loadOpenAIChatModels, loadOpenAIEmbeddingsModels } from './openai';
2024-07-15 21:20:16 +05:30
import { loadAnthropicChatModels } from './anthropic';
2024-07-08 15:39:27 +05:30
import { loadTransformersEmbeddingsModels } from './transformers';
2024-11-28 20:47:18 +05:30
import { loadGeminiChatModels, loadGeminiEmbeddingsModels } from './gemini';
import { loadLMStudioChatModels, loadLMStudioEmbeddingsModels } from './lmstudio';
const chatModelProviders = {
openai: loadOpenAIChatModels,
groq: loadGroqChatModels,
ollama: loadOllamaChatModels,
2024-07-15 21:20:16 +05:30
anthropic: loadAnthropicChatModels,
2024-11-28 20:47:18 +05:30
gemini: loadGeminiChatModels,
lm_studio: loadLMStudioChatModels,
};
const embeddingModelProviders = {
2024-07-08 15:39:27 +05:30
openai: loadOpenAIEmbeddingsModels,
local: loadTransformersEmbeddingsModels,
ollama: loadOllamaEmbeddingsModels,
2024-11-28 20:47:18 +05:30
gemini: loadGeminiEmbeddingsModels,
lm_studio: loadLMStudioEmbeddingsModels,
};
export const getAvailableChatModelProviders = async () => {
const models = {};
for (const provider in chatModelProviders) {
2024-07-08 15:39:27 +05:30
const providerModels = await chatModelProviders[provider]();
if (Object.keys(providerModels).length > 0) {
2024-07-15 21:20:16 +05:30
models[provider] = providerModels;
2024-07-08 15:39:27 +05:30
}
}
2024-07-15 21:20:16 +05:30
models['custom_openai'] = {};
2024-07-08 15:24:45 +05:30
return models;
};
export const getAvailableEmbeddingModelProviders = async () => {
const models = {};
for (const provider in embeddingModelProviders) {
2024-07-08 15:39:27 +05:30
const providerModels = await embeddingModelProviders[provider]();
if (Object.keys(providerModels).length > 0) {
2024-07-15 21:20:16 +05:30
models[provider] = providerModels;
2024-07-08 15:39:27 +05:30
}
}
return models;
};