Spaces:
Paused
Paused
| import { OllamaEmbeddings } from '@langchain/community/embeddings/ollama'; | |
| import { getKeepAlive, getOllamaApiEndpoint } from '../../config'; | |
| import logger from '../../utils/logger'; | |
| import { ChatOllama } from '@langchain/community/chat_models/ollama'; | |
| import axios from 'axios'; | |
| export const loadOllamaChatModels = async () => { | |
| const ollamaEndpoint = getOllamaApiEndpoint(); | |
| const keepAlive = getKeepAlive(); | |
| if (!ollamaEndpoint) return {}; | |
| try { | |
| const response = await axios.get(`${ollamaEndpoint}/api/tags`, { | |
| headers: { | |
| 'Content-Type': 'application/json', | |
| }, | |
| }); | |
| const { models: ollamaModels } = response.data; | |
| const chatModels = ollamaModels.reduce((acc, model) => { | |
| acc[model.model] = { | |
| displayName: model.name, | |
| model: new ChatOllama({ | |
| baseUrl: ollamaEndpoint, | |
| model: model.model, | |
| temperature: 0.7, | |
| keepAlive: keepAlive, | |
| }), | |
| }; | |
| return acc; | |
| }, {}); | |
| return chatModels; | |
| } catch (err) { | |
| logger.error(`Error loading Ollama models: ${err}`); | |
| return {}; | |
| } | |
| }; | |
| export const loadOllamaEmbeddingsModels = async () => { | |
| const ollamaEndpoint = getOllamaApiEndpoint(); | |
| if (!ollamaEndpoint) return {}; | |
| try { | |
| const response = await axios.get(`${ollamaEndpoint}/api/tags`, { | |
| headers: { | |
| 'Content-Type': 'application/json', | |
| }, | |
| }); | |
| const { models: ollamaModels } = response.data; | |
| const embeddingsModels = ollamaModels.reduce((acc, model) => { | |
| acc[model.model] = { | |
| displayName: model.name, | |
| model: new OllamaEmbeddings({ | |
| baseUrl: ollamaEndpoint, | |
| model: model.model, | |
| }), | |
| }; | |
| return acc; | |
| }, {}); | |
| return embeddingsModels; | |
| } catch (err) { | |
| logger.error(`Error loading Ollama embeddings model: ${err}`); | |
| return {}; | |
| } | |
| }; | |