From 219105734e424be14d7a3c5d8ca759cab159ccd0 Mon Sep 17 00:00:00 2001 From: Long Huynh Date: Fri, 24 May 2024 18:28:39 +0300 Subject: [PATCH] fix: ollama custom client --- manifest.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- src/components/FetchModelEditor.ts | 4 ++-- src/components/FetchModelList.ts | 15 ++------------- src/components/FetchModelResponse.ts | 4 +++- src/components/chat/Commands.ts | 12 ++++++------ src/components/editor/FetchRenameNoteTitle.ts | 3 ++- 8 files changed, 19 insertions(+), 27 deletions(-) diff --git a/manifest.json b/manifest.json index bf0a274..03e6f2b 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "bmo-chatbot", "name": "BMO Chatbot", - "version": "2.1.0", + "version": "2.1.1", "minAppVersion": "1.0.0", "description": "Generate and brainstorm ideas while creating your notes using Large Language Models (LLMs) from Ollama, LM Studio, Anthropic, OpenAI, Mistral AI, and more for Obsidian.", "author": "Longy2k", diff --git a/package-lock.json b/package-lock.json index 839a9a0..f78dabb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "bmo-chatbot", - "version": "2.1.0", + "version": "2.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "bmo-chatbot", - "version": "2.1.0", + "version": "2.1.1", "license": "MIT", "dependencies": { "marked": "^4.3.0", diff --git a/package.json b/package.json index 5f0e120..39afc2b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bmo-chatbot", - "version": "2.1.0", + "version": "2.1.1", "description": "Generate and brainstorm ideas while creating your notes using Large Language Models (LLMs) from Ollama, LM Studio, Anthropic, OpenAI, Mistral AI, and more for Obsidian.", "main": "main.js", "scripts": { diff --git a/src/components/FetchModelEditor.ts b/src/components/FetchModelEditor.ts index 56f4e9c..6e12a96 100644 --- a/src/components/FetchModelEditor.ts +++ b/src/components/FetchModelEditor.ts @@ -1,6 +1,6 @@ import { requestUrl } from 'obsidian'; import { BMOSettings } from 'src/main'; -import ollama from 'ollama'; +import { Ollama } from 'ollama'; import OpenAI from 'openai'; // Request response from Ollama @@ -35,7 +35,7 @@ export async function fetchOllamaResponseEditor(settings: BMOSettings, selection } try { - + const ollama = new Ollama({host: ollamaRESTAPIURL}); const response = await ollama.generate({ model: settings.general.model, system: settings.editor.prompt_select_generate_system_role, diff --git a/src/components/FetchModelList.ts b/src/components/FetchModelList.ts index eafea93..47124a4 100644 --- a/src/components/FetchModelList.ts +++ b/src/components/FetchModelList.ts @@ -1,5 +1,5 @@ import { requestUrl } from 'obsidian'; -import ollama from 'ollama' +import { Ollama } from 'ollama' import OpenAI from 'openai'; import BMOGPT from 'src/main'; import { OPENAI_MODELS } from 'src/view'; @@ -7,20 +7,9 @@ import { OPENAI_MODELS } from 'src/view'; export async function fetchOllamaModels(plugin: BMOGPT) { const ollamaRESTAPIURL = plugin.settings.OllamaConnection.RESTAPIURL; - // Check if the URL is functional - try { - const response = await fetch(ollamaRESTAPIURL); - if (!response.ok) { - console.error('OLLAMA URL is not responding:', ollamaRESTAPIURL); - return; - } - } catch (error) { - console.error('Error reaching OLLAMA URL:', error); - return; - } - // Log the list of models using ollama.list() try { + const ollama = new Ollama({host: ollamaRESTAPIURL}); const modelsList = await ollama.list(); // console.log('Ollama Models:', modelsList); diff --git a/src/components/FetchModelResponse.ts b/src/components/FetchModelResponse.ts index d97062b..506b774 100644 --- a/src/components/FetchModelResponse.ts +++ b/src/components/FetchModelResponse.ts @@ -5,7 +5,7 @@ import { ChatCompletionMessageParam } from 'openai/resources/chat'; import { addMessage, addParagraphBreaks, updateUnresolvedInternalLinks } from './chat/Message'; import { displayErrorBotMessage, displayLoadingBotMessage } from './chat/BotMessage'; import { getActiveFileContent, getCurrentNoteContent } from './editor/ReferenceCurrentNote'; -import ollama from 'ollama'; +import { Ollama } from 'ollama'; import OpenAI from 'openai'; import { getPrompt } from './chat/Prompt'; @@ -37,6 +37,7 @@ export async function fetchOllamaResponse(plugin: BMOGPT, settings: BMOSettings, const referenceCurrentNoteContent = getCurrentNoteContent(); try { + const ollama = new Ollama({ host: ollamaRESTAPIURL}); const response = await ollama.chat({ model: settings.general.model, messages: [ @@ -145,6 +146,7 @@ export async function fetchOllamaResponseStream(plugin: BMOGPT, settings: BMOSet }); try { + const ollama = new Ollama({ host: ollamaRESTAPIURL}); const response = await ollama.chat({ model: settings.general.model, messages: [ diff --git a/src/components/chat/Commands.ts b/src/components/chat/Commands.ts index 7aa22bf..e4a40a0 100644 --- a/src/components/chat/Commands.ts +++ b/src/components/chat/Commands.ts @@ -110,7 +110,7 @@ export function commandHelp(plugin: BMOGPT, settings: BMOSettings) { const generalCommandHeader = document.createElement('h4'); generalCommandHeader.textContent = 'General Commands'; - generalCommandHeader.style.textAlign = 'center'; + generalCommandHeader.style.textAlign = 'left'; displayCommandBotMessageDiv.appendChild(generalCommandHeader); const commandClearP = document.createElement('p'); @@ -135,7 +135,7 @@ export function commandHelp(plugin: BMOGPT, settings: BMOSettings) { const profileCommandHeader = document.createElement('h4'); profileCommandHeader.textContent = 'Profile Commands'; - profileCommandHeader.style.textAlign = 'center'; + profileCommandHeader.style.textAlign = 'left'; displayCommandBotMessageDiv.appendChild(profileCommandHeader); const commandProfileListP = document.createElement('p'); @@ -148,7 +148,7 @@ export function commandHelp(plugin: BMOGPT, settings: BMOSettings) { const modelCommandHeader = document.createElement('h4'); modelCommandHeader.textContent = 'Model Commands'; - modelCommandHeader.style.textAlign = 'center'; + modelCommandHeader.style.textAlign = 'left'; displayCommandBotMessageDiv.appendChild(modelCommandHeader); const commandModelListP = document.createElement('p'); @@ -161,7 +161,7 @@ export function commandHelp(plugin: BMOGPT, settings: BMOSettings) { const promptCommandHeader = document.createElement('h4'); promptCommandHeader.textContent = 'Prompt Commands'; - promptCommandHeader.style.textAlign = 'center'; + promptCommandHeader.style.textAlign = 'left'; displayCommandBotMessageDiv.appendChild(promptCommandHeader); const commandPromptListP = document.createElement('p'); @@ -178,7 +178,7 @@ export function commandHelp(plugin: BMOGPT, settings: BMOSettings) { const editorCommandHeader = document.createElement('h4'); editorCommandHeader.textContent = 'Editor Commands'; - editorCommandHeader.style.textAlign = 'center'; + editorCommandHeader.style.textAlign = 'left'; displayCommandBotMessageDiv.appendChild(editorCommandHeader); const commandAppendP = document.createElement('p'); @@ -191,7 +191,7 @@ export function commandHelp(plugin: BMOGPT, settings: BMOSettings) { const streamCommandHeader = document.createElement('h4'); streamCommandHeader.textContent = 'Stream Commands'; - streamCommandHeader.style.textAlign = 'center'; + streamCommandHeader.style.textAlign = 'left'; displayCommandBotMessageDiv.appendChild(streamCommandHeader); const commandStopP = document.createElement('p'); diff --git a/src/components/editor/FetchRenameNoteTitle.ts b/src/components/editor/FetchRenameNoteTitle.ts index ed43169..7bf93b1 100644 --- a/src/components/editor/FetchRenameNoteTitle.ts +++ b/src/components/editor/FetchRenameNoteTitle.ts @@ -1,5 +1,5 @@ import { Notice, requestUrl } from 'obsidian'; -import ollama from 'ollama'; +import { Ollama } from 'ollama'; import OpenAI from 'openai'; import { BMOSettings } from 'src/main'; import { ANTHROPIC_MODELS, OPENAI_MODELS } from 'src/view'; @@ -14,6 +14,7 @@ export async function fetchModelRenameTitle(settings: BMOSettings, referenceCurr try { if (settings.OllamaConnection.RESTAPIURL && settings.OllamaConnection.ollamaModels.includes(settings.general.model)) { try { + const ollama = new Ollama({ host: settings.OllamaConnection.RESTAPIURL}); const response = await ollama.generate({ model: settings.general.model, system: prompt,