google gemini, using system instruction

This commit is contained in:
mic 2025-01-06 22:19:07 +01:00
parent fef2b58213
commit 1d063235fd
4 changed files with 14 additions and 10 deletions

View file

@ -78,13 +78,13 @@ switch (llm) {
break; break;
} }
case "google_gemini_api": { case "google_gemini_api": {
let prefs_api = await browser.storage.sync.get({google_gemini_api_key: '', google_gemini_model: '', do_debug: false}); let prefs_api = await browser.storage.sync.get({google_gemini_api_key: '', google_gemini_model: '', google_gemini_system_instruction: '', do_debug: false});
let i18nStrings = {}; let i18nStrings = {};
i18nStrings["google_gemini_api_request_failed"] = browser.i18n.getMessage('google_gemini_api_request_failed'); i18nStrings["google_gemini_api_request_failed"] = browser.i18n.getMessage('google_gemini_api_request_failed');
i18nStrings["error_connection_interrupted"] = browser.i18n.getMessage('error_connection_interrupted'); i18nStrings["error_connection_interrupted"] = browser.i18n.getMessage('error_connection_interrupted');
messageInput.setModel(prefs_api.google_gemini_model); messageInput.setModel(prefs_api.google_gemini_model);
messagesArea.setLLMName("Google Gemini"); messagesArea.setLLMName("Google Gemini");
worker.postMessage({ type: 'init', google_gemini_api_key: prefs_api.google_gemini_api_key, google_gemini_model: prefs_api.google_gemini_model, do_debug: prefs_api.do_debug, i18nStrings: i18nStrings}); worker.postMessage({ type: 'init', google_gemini_api_key: prefs_api.google_gemini_api_key, google_gemini_model: prefs_api.google_gemini_model, google_gemini_system_instruction: prefs_api.google_gemini_system_instruction, do_debug: prefs_api.do_debug, i18nStrings: i18nStrings});
messagesArea.appendUserMessage(browser.i18n.getMessage("google_gemini_api_connecting") + " " +browser.i18n.getMessage("AndModel") + " \"" + prefs_api.google_gemini_model + "\"...", "info"); messagesArea.appendUserMessage(browser.i18n.getMessage("google_gemini_api_connecting") + " " +browser.i18n.getMessage("AndModel") + " \"" + prefs_api.google_gemini_model + "\"...", "info");
browser.runtime.sendMessage({command: "google_gemini_api_ready_" + call_id, window_id: (await browser.windows.getCurrent()).id}); browser.runtime.sendMessage({command: "google_gemini_api_ready_" + call_id, window_id: (await browser.windows.getCurrent()).id});
break; break;

View file

@ -22,11 +22,13 @@ export class GoogleGemini {
apiKey = ''; apiKey = '';
model = ''; model = '';
system_instruction = '';
stream = false; stream = false;
constructor(apiKey, model, stream) { constructor(apiKey, model, system_instruction, stream) {
this.apiKey = apiKey; this.apiKey = apiKey;
this.model = model; this.model = model;
this.system_instruction = system_instruction;
this.stream = stream; this.stream = stream;
} }
@ -67,17 +69,19 @@ export class GoogleGemini {
} }
} }
fetchResponse = async (messages, system_instruction = '') => { fetchResponse = async (messages) => {
try { try {
let google_gemini_body = { let google_gemini_body = {
contents:messages contents:messages
}; };
if(system_instruction !== '') { console.log("[ThunderAI] Google Gemini API system_instruction: " + JSON.stringify(this.system_instruction));
if(this.system_instruction !== '') {
google_gemini_body.system_instruction = { google_gemini_body.system_instruction = {
parts:{ parts:{
text: system_instruction text: this.system_instruction
} }
} }
} }

View file

@ -58,8 +58,8 @@
break; break;
} }
case "google_gemini_api": { case "google_gemini_api": {
let prefs_api = await browser.storage.sync.get({google_gemini_api_key: '', google_gemini_model: ''}); let prefs_api = await browser.storage.sync.get({google_gemini_api_key: '', google_gemini_model: '', google_gemini_system_instruction: ''});
this.worker.postMessage({ type: 'init', google_gemini_api_key: prefs_api.google_gemini_api_key, google_gemini_model: prefs_api.google_gemini_model, do_debug: this.do_debug, i18nStrings: ''}); this.worker.postMessage({ type: 'init', google_gemini_api_key: prefs_api.google_gemini_api_key, google_gemini_model: prefs_api.google_gemini_model, google_gemini_system_instruction: prefs_api.google_gemini_system_instruction, do_debug: this.do_debug, i18nStrings: ''});
break; break;
} }
case "ollama_api": { case "ollama_api": {

View file

@ -38,7 +38,7 @@ self.onmessage = async function(event) {
if (event.data.type === 'init') { if (event.data.type === 'init') {
google_gemini_api_key = event.data.google_gemini_api_key; google_gemini_api_key = event.data.google_gemini_api_key;
google_gemini_model = event.data.google_gemini_model; google_gemini_model = event.data.google_gemini_model;
google_gemini = new GoogleGemini(google_gemini_api_key, google_gemini_model, true); google_gemini = new GoogleGemini(google_gemini_api_key, google_gemini_model, event.data.google_gemini_system_instruction, true);
do_debug = event.data.do_debug; do_debug = event.data.do_debug;
i18nStrings = event.data.i18nStrings; i18nStrings = event.data.i18nStrings;
taLog = new taLogger('model-worker-google_gemini', do_debug); taLog = new taLogger('model-worker-google_gemini', do_debug);