From 3c919ac67d8825a6af5bd00cc5d26362c8503e85 Mon Sep 17 00:00:00 2001 From: Mic Date: Mon, 8 Sep 2025 21:13:00 +0200 Subject: [PATCH] APIs constructors are now accepting an object as input argument --- js/api/anthropic.js | 10 +++++++-- js/api/google_gemini.js | 7 +++++- js/api/ollama.js | 12 +++++++--- js/api/openai.js | 10 +++++++-- js/api/openai_comp.js | 12 +++++++--- js/workers/model-worker-anthropic.js | 8 ++++++- js/workers/model-worker-google_gemini.js | 7 +++++- js/workers/model-worker-ollama.js | 9 ++++++-- js/workers/model-worker-openai.js | 8 ++++++- js/workers/model-worker-openai_comp.js | 8 ++++++- options/mzta-options.js | 28 +++++++++++++++++++----- 11 files changed, 97 insertions(+), 22 deletions(-) diff --git a/js/api/anthropic.js b/js/api/anthropic.js index 662b45df..724a092b 100644 --- a/js/api/anthropic.js +++ b/js/api/anthropic.js @@ -27,7 +27,13 @@ export class Anthropic { max_tokens = 4096; stream = false; - constructor(apiKey, version, model, max_tokens = 4096, stream = false) { + constructor({ + apiKey = '', + version = '', + model = '', + max_tokens = 4096, + stream = false, + } = {}) { this.apiKey = apiKey; this.version = version; this.model = model; @@ -104,4 +110,4 @@ export class Anthropic { } } -} \ No newline at end of file +} diff --git a/js/api/google_gemini.js b/js/api/google_gemini.js index d0d8a055..bd2f24f9 100644 --- a/js/api/google_gemini.js +++ b/js/api/google_gemini.js @@ -25,7 +25,12 @@ export class GoogleGemini { system_instruction = ''; stream = false; - constructor(apiKey, model, system_instruction, stream) { + constructor({ + apiKey = '', + model = '', + system_instruction = '', + stream = false + } = {}) { this.apiKey = apiKey; this.model = model; this.system_instruction = system_instruction; diff --git a/js/api/ollama.js b/js/api/ollama.js index 5c10763a..9a4be836 100644 --- a/js/api/ollama.js +++ b/js/api/ollama.js @@ -24,8 +24,14 @@ export class Ollama { num_ctx = 0; think = false; - constructor(host, model, stream = false, num_ctx = 0, think = false) { - this.host = host.trim().replace(/\/+$/, ""); + constructor({ + host = '', + model = '', + stream = false, + num_ctx = 0, + think = false, + } = {}) { + this.host = (host || '').trim().replace(/\/+$/, ""); this.model = model; this.stream = stream; this.num_ctx = num_ctx; @@ -123,4 +129,4 @@ export class Ollama { // return output; // } // } -} \ No newline at end of file +} diff --git a/js/api/openai.js b/js/api/openai.js index 11884e7e..6d589c4c 100644 --- a/js/api/openai.js +++ b/js/api/openai.js @@ -27,7 +27,13 @@ export class OpenAI { stream = false; store = false; - constructor(apiKey, model, developer_messages, stream, store) { + constructor({ + apiKey = '', + model = '', + developer_messages = '', + stream = false, + store = false + } = {}) { this.apiKey = apiKey; this.model = model; this.developer_messages = developer_messages; @@ -120,4 +126,4 @@ export class OpenAI { return data.token_count; } -} \ No newline at end of file +} diff --git a/js/api/openai_comp.js b/js/api/openai_comp.js index a0ba14ec..3e975b62 100644 --- a/js/api/openai_comp.js +++ b/js/api/openai_comp.js @@ -27,8 +27,14 @@ export class OpenAIComp { use_v1 = true; stream = false; - constructor(host, model, apiKey = '', stream = false, use_v1 = true) { - this.host = host.trim().replace(/\/+$/, ""); + constructor({ + host = '', + model = '', + apiKey = '', + stream = false, + use_v1 = true, + } = {}) { + this.host = (host || '').trim().replace(/\/+$/, ""); this.model = model; this.stream = stream; this.apiKey = apiKey; @@ -107,4 +113,4 @@ export class OpenAIComp { } } -} \ No newline at end of file +} diff --git a/js/workers/model-worker-anthropic.js b/js/workers/model-worker-anthropic.js index a16578c9..9f311e7d 100644 --- a/js/workers/model-worker-anthropic.js +++ b/js/workers/model-worker-anthropic.js @@ -38,7 +38,13 @@ self.onmessage = async function(event) { if (event.data.type === 'init') { anthropic_api_key = event.data.anthropic_api_key; anthropic_model = event.data.anthropic_model; - anthropic = new Anthropic(anthropic_api_key, event.data.anthropic_version, anthropic_model, event.data.anthropic_max_tokens, true); + anthropic = new Anthropic({ + apiKey: anthropic_api_key, + version: event.data.anthropic_version, + model: anthropic_model, + max_tokens: event.data.anthropic_max_tokens, + stream: true + }); do_debug = event.data.do_debug; i18nStrings = event.data.i18nStrings; taLog = new taLogger('model-worker-anthropic', do_debug); diff --git a/js/workers/model-worker-google_gemini.js b/js/workers/model-worker-google_gemini.js index e4557f52..67e69c14 100644 --- a/js/workers/model-worker-google_gemini.js +++ b/js/workers/model-worker-google_gemini.js @@ -38,7 +38,12 @@ self.onmessage = async function(event) { if (event.data.type === 'init') { google_gemini_api_key = event.data.google_gemini_api_key; google_gemini_model = event.data.google_gemini_model; - google_gemini = new GoogleGemini(google_gemini_api_key, google_gemini_model, event.data.google_gemini_system_instruction, true); + google_gemini = new GoogleGemini({ + apiKey: google_gemini_api_key, + model: google_gemini_model, + system_instruction: event.data.google_gemini_system_instruction, + stream: true + }); do_debug = event.data.do_debug; i18nStrings = event.data.i18nStrings; taLog = new taLogger('model-worker-google_gemini', do_debug); diff --git a/js/workers/model-worker-ollama.js b/js/workers/model-worker-ollama.js index f29bab62..c04f0ef6 100644 --- a/js/workers/model-worker-ollama.js +++ b/js/workers/model-worker-ollama.js @@ -42,7 +42,12 @@ self.onmessage = async function(event) { ollama_model = event.data.ollama_model; ollama_num_ctx = event.data.ollama_num_ctx; //console.log(">>>>>>>>>>> ollama_host: " + ollama_host); - ollama = new Ollama(ollama_host, ollama_model, true, ollama_num_ctx); + ollama = new Ollama({ + host: ollama_host, + model: ollama_model, + stream: true, + num_ctx: ollama_num_ctx + }); do_debug = event.data.do_debug; i18nStrings = event.data.i18nStrings; taLog = new taLogger('model-worker-ollama', do_debug); @@ -138,4 +143,4 @@ self.onmessage = async function(event) { stopStreaming = true; break; //stop } -}; \ No newline at end of file +}; diff --git a/js/workers/model-worker-openai.js b/js/workers/model-worker-openai.js index 61e4bc22..f09d06d4 100644 --- a/js/workers/model-worker-openai.js +++ b/js/workers/model-worker-openai.js @@ -38,7 +38,13 @@ self.onmessage = async function(event) { if (event.data.type === 'init') { chatgpt_api_key = event.data.chatgpt_api_key; chatgpt_model = event.data.chatgpt_model; - openai = new OpenAI(chatgpt_api_key, chatgpt_model, event.data.chatgpt_developer_messages, true, event.data.chatgpt_api_store); + openai = new OpenAI({ + apiKey: chatgpt_api_key, + model: chatgpt_model, + developer_messages: event.data.chatgpt_developer_messages, + stream: true, + store: event.data.chatgpt_api_store + }); do_debug = event.data.do_debug; i18nStrings = event.data.i18nStrings; taLog = new taLogger('model-worker-openai', do_debug); diff --git a/js/workers/model-worker-openai_comp.js b/js/workers/model-worker-openai_comp.js index 4882800f..26346caf 100644 --- a/js/workers/model-worker-openai_comp.js +++ b/js/workers/model-worker-openai_comp.js @@ -42,7 +42,13 @@ self.onmessage = async function(event) { openai_comp_model = event.data.openai_comp_model; openai_comp_api_key = event.data.openai_comp_api_key; openai_comp_use_v1 = event.data.openai_comp_use_v1; - openai_comp = new OpenAIComp(openai_comp_host, openai_comp_model, openai_comp_api_key, true, openai_comp_use_v1); + openai_comp = new OpenAIComp({ + host: openai_comp_host, + model: openai_comp_model, + apiKey: openai_comp_api_key, + stream: true, + use_v1: openai_comp_use_v1 + }); do_debug = event.data.do_debug; i18nStrings = event.data.i18nStrings; taLog = new taLogger('model-worker-openai_comp', do_debug); diff --git a/options/mzta-options.js b/options/mzta-options.js index 13604510..21e42863 100644 --- a/options/mzta-options.js +++ b/options/mzta-options.js @@ -580,7 +580,10 @@ document.addEventListener('DOMContentLoaded', async () => { document.getElementById('btnUpdateChatGPTModels').addEventListener('click', async () => { document.getElementById('chatgpt_model_fetch_loading').style.display = 'inline'; - let openai = new OpenAI(document.getElementById("chatgpt_api_key").value, '', true); + let openai = new OpenAI({ + apiKey: document.getElementById("chatgpt_api_key").value, + stream: true + }); openai.fetchModels().then((data) => { if(!data.ok){ let errorDetail; @@ -620,7 +623,10 @@ document.addEventListener('DOMContentLoaded', async () => { document.getElementById('btnUpdateGoogleGeminiModels').addEventListener('click', async () => { document.getElementById('google_gemini_model_fetch_loading').style.display = 'inline'; - let google_gemini = new GoogleGemini(document.getElementById("google_gemini_api_key").value, '', true); + let google_gemini = new GoogleGemini({ + apiKey: document.getElementById("google_gemini_api_key").value, + stream: true + }); google_gemini.fetchModels().then((data) => { if(!data.ok){ let errorDetail; @@ -660,7 +666,10 @@ document.addEventListener('DOMContentLoaded', async () => { document.getElementById('btnUpdateOllamaModels').addEventListener('click', async () => { document.getElementById('ollama_model_fetch_loading').style.display = 'inline'; - let ollama = new Ollama(document.getElementById("ollama_host").value, true); + let ollama = new Ollama({ + host: document.getElementById("ollama_host").value, + stream: true + }); try { let data = await ollama.fetchModels(); if(!data){ @@ -718,7 +727,13 @@ document.addEventListener('DOMContentLoaded', async () => { document.getElementById('btnUpdateOpenAICompModels').addEventListener('click', async () => { document.getElementById('openai_comp_model_fetch_loading').style.display = 'inline'; - let openai_comp = new OpenAIComp(document.getElementById("openai_comp_host").value , null, document.getElementById("openai_comp_api_key").value, true, document.getElementById("openai_comp_use_v1").checked); + let openai_comp = new OpenAIComp({ + host: document.getElementById("openai_comp_host").value, + model: null, + apiKey: document.getElementById("openai_comp_api_key").value, + stream: true, + use_v1: document.getElementById("openai_comp_use_v1").checked + }); openai_comp.fetchModels().then((data) => { if(!data.ok){ let errorDetail; @@ -759,7 +774,10 @@ document.addEventListener('DOMContentLoaded', async () => { document.getElementById('btnUpdateAnthropicModels').addEventListener('click', async () => { document.getElementById('anthropic_model_fetch_loading').style.display = 'inline'; - let anthropic = new Anthropic(document.getElementById("anthropic_api_key").value, document.getElementById("anthropic_version").value, ''); + let anthropic = new Anthropic({ + apiKey: document.getElementById("anthropic_api_key").value, + version: document.getElementById("anthropic_version").value + }); anthropic.fetchModels().then((data) => { if(!data.ok){ let errorDetail;