google gemini, using system instruction
This commit is contained in:
parent
fef2b58213
commit
1d063235fd
4 changed files with 14 additions and 10 deletions
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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": {
|
||||||
|
|
|
||||||
|
|
@ -38,14 +38,14 @@ 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);
|
||||||
} else if (event.data.type === 'chatMessage') {
|
} else if (event.data.type === 'chatMessage') {
|
||||||
conversationHistory.push({ role: 'user', parts: [{"text": event.data.message}] });
|
conversationHistory.push({ role: 'user', parts: [{"text": event.data.message}] });
|
||||||
|
|
||||||
const response = await google_gemini.fetchResponse(conversationHistory);
|
const response = await google_gemini.fetchResponse(conversationHistory);
|
||||||
postMessage({ type: 'messageSent' });
|
postMessage({ type: 'messageSent' });
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue