APIs constructors are now accepting an object as input argument

This commit is contained in:
Mic 2025-09-08 21:13:00 +02:00
parent 76f743e88f
commit 3c919ac67d
11 changed files with 97 additions and 22 deletions

View file

@ -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 {
}
}
}
}

View file

@ -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;

View file

@ -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;
// }
// }
}
}

View file

@ -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;
}
}
}

View file

@ -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 {
}
}
}
}

View file

@ -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);

View file

@ -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);

View file

@ -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
}
};
};

View file

@ -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);

View file

@ -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);

View file

@ -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;