Spaces:
Paused
Paused
| import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai'; | |
| import { ChatOllama } from '@langchain/community/chat_models/ollama'; | |
| import { OllamaEmbeddings } from '@langchain/community/embeddings/ollama'; | |
| import { | |
| getGroqApiKey, | |
| getOllamaApiEndpoint, | |
| getOpenaiApiKey, | |
| } from '../config'; | |
| import logger from '../utils/logger'; | |
| export const getAvailableChatModelProviders = async () => { | |
| const openAIApiKey = getOpenaiApiKey(); | |
| const groqApiKey = getGroqApiKey(); | |
| const ollamaEndpoint = getOllamaApiEndpoint(); | |
| const models = {}; | |
| if (openAIApiKey) { | |
| try { | |
| models['openai'] = { | |
| 'GPT-3.5 turbo': new ChatOpenAI({ | |
| openAIApiKey, | |
| modelName: 'gpt-3.5-turbo', | |
| temperature: 0.7, | |
| }), | |
| 'GPT-4': new ChatOpenAI({ | |
| openAIApiKey, | |
| modelName: 'gpt-4', | |
| temperature: 0.7, | |
| }), | |
| 'GPT-4 turbo': new ChatOpenAI({ | |
| openAIApiKey, | |
| modelName: 'gpt-4-turbo', | |
| temperature: 0.7, | |
| }), | |
| }; | |
| } catch (err) { | |
| logger.error(`Error loading OpenAI models: ${err}`); | |
| } | |
| } | |
| if (groqApiKey) { | |
| try { | |
| models['groq'] = { | |
| 'LLaMA3 8b': new ChatOpenAI( | |
| { | |
| openAIApiKey: groqApiKey, | |
| modelName: 'llama3-8b-8192', | |
| temperature: 0.7, | |
| }, | |
| { | |
| baseURL: 'https://api.groq.com/openai/v1', | |
| }, | |
| ), | |
| 'LLaMA3 70b': new ChatOpenAI( | |
| { | |
| openAIApiKey: groqApiKey, | |
| modelName: 'llama3-70b-8192', | |
| temperature: 0.7, | |
| }, | |
| { | |
| baseURL: 'https://api.groq.com/openai/v1', | |
| }, | |
| ), | |
| 'Mixtral 8x7b': new ChatOpenAI( | |
| { | |
| openAIApiKey: groqApiKey, | |
| modelName: 'mixtral-8x7b-32768', | |
| temperature: 0.7, | |
| }, | |
| { | |
| baseURL: 'https://api.groq.com/openai/v1', | |
| }, | |
| ), | |
| 'Gemma 7b': new ChatOpenAI( | |
| { | |
| openAIApiKey: groqApiKey, | |
| modelName: 'gemma-7b-it', | |
| temperature: 0.7, | |
| }, | |
| { | |
| baseURL: 'https://api.groq.com/openai/v1', | |
| }, | |
| ), | |
| }; | |
| } catch (err) { | |
| logger.error(`Error loading Groq models: ${err}`); | |
| } | |
| } | |
| if (ollamaEndpoint) { | |
| try { | |
| const response = await fetch(`${ollamaEndpoint}/api/tags`); | |
| const { models: ollamaModels } = (await response.json()) as any; | |
| models['ollama'] = ollamaModels.reduce((acc, model) => { | |
| acc[model.model] = new ChatOllama({ | |
| baseUrl: ollamaEndpoint, | |
| model: model.model, | |
| temperature: 0.7, | |
| }); | |
| return acc; | |
| }, {}); | |
| } catch (err) { | |
| logger.error(`Error loading Ollama models: ${err}`); | |
| } | |
| } | |
| models['custom_openai'] = {}; | |
| return models; | |
| }; | |
| export const getAvailableEmbeddingModelProviders = async () => { | |
| const openAIApiKey = getOpenaiApiKey(); | |
| const ollamaEndpoint = getOllamaApiEndpoint(); | |
| const models = {}; | |
| if (openAIApiKey) { | |
| try { | |
| models['openai'] = { | |
| 'Text embedding 3 small': new OpenAIEmbeddings({ | |
| openAIApiKey, | |
| modelName: 'text-embedding-3-small', | |
| }), | |
| 'Text embedding 3 large': new OpenAIEmbeddings({ | |
| openAIApiKey, | |
| modelName: 'text-embedding-3-large', | |
| }), | |
| }; | |
| } catch (err) { | |
| logger.error(`Error loading OpenAI embeddings: ${err}`); | |
| } | |
| } | |
| if (ollamaEndpoint) { | |
| try { | |
| const response = await fetch(`${ollamaEndpoint}/api/tags`); | |
| const { models: ollamaModels } = (await response.json()) as any; | |
| models['ollama'] = ollamaModels.reduce((acc, model) => { | |
| acc[model.model] = new OllamaEmbeddings({ | |
| baseUrl: ollamaEndpoint, | |
| model: model.model, | |
| }); | |
| return acc; | |
| }, {}); | |
| } catch (err) { | |
| logger.error(`Error loading Ollama embeddings: ${err}`); | |
| } | |
| } | |
| return models; | |
| }; | |