From 544cea95aa63f49bdc33ca6c6e179f86a2eb1555 Mon Sep 17 00:00:00 2001 From: Peter Dave Hello Date: Sat, 13 Apr 2024 22:03:14 +0800 Subject: [PATCH] Add Groq Cloud support, close #716 Reference: - https://console.groq.com/docs/models - https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-groq/ --- public/bots/gemma-7b-it-groq-logo.png | Bin 0 -> 23582 bytes public/bots/llama-2-70b-groq-logo.png | Bin 0 -> 14315 bytes public/bots/mistral-8x7b-groq-logo.png | Bin 0 -> 11994 bytes src/bots/groq/Gemma7bGroqAPIBot.js | 10 ++++ src/bots/groq/GroqAPIBot.js | 38 ++++++++++++ src/bots/groq/Llama270bGroqAPIBot.js | 10 ++++ src/bots/groq/Mixtral8x7bGroqAPIBot.js | 10 ++++ src/bots/index.js | 9 +++ .../BotSettings/GroqAPIBotSettings.vue | 56 ++++++++++++++++++ src/components/SettingsModal.vue | 2 + src/i18n/locales/de.json | 6 ++ src/i18n/locales/en.json | 6 ++ src/i18n/locales/es.json | 6 ++ src/i18n/locales/fr.json | 6 ++ src/i18n/locales/it.json | 6 ++ src/i18n/locales/ja.json | 6 ++ src/i18n/locales/ko.json | 6 ++ src/i18n/locales/ru.json | 6 ++ src/i18n/locales/vi.json | 6 ++ src/i18n/locales/zh.json | 6 ++ src/i18n/locales/zhtw.json | 6 ++ src/store/index.js | 9 +++ 22 files changed, 210 insertions(+) create mode 100644 public/bots/gemma-7b-it-groq-logo.png create mode 100644 public/bots/llama-2-70b-groq-logo.png create mode 100644 public/bots/mistral-8x7b-groq-logo.png create mode 100644 src/bots/groq/Gemma7bGroqAPIBot.js create mode 100644 src/bots/groq/GroqAPIBot.js create mode 100644 src/bots/groq/Llama270bGroqAPIBot.js create mode 100644 src/bots/groq/Mixtral8x7bGroqAPIBot.js create mode 100644 src/components/BotSettings/GroqAPIBotSettings.vue diff --git a/public/bots/gemma-7b-it-groq-logo.png b/public/bots/gemma-7b-it-groq-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..016a9ecae6ed4e83fd49d7667d05c553eaa87fa9 GIT binary patch literal 23582 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 U+-lyS|5*prRkW2W6|KVl4-t|DQvd(} literal 0 HcmV?d00001 diff --git a/src/bots/groq/Gemma7bGroqAPIBot.js b/src/bots/groq/Gemma7bGroqAPIBot.js new file mode 100644 index 0000000000..fe4ae799ed --- /dev/null +++ b/src/bots/groq/Gemma7bGroqAPIBot.js @@ -0,0 +1,10 @@ +import GroqAPIBot from "./GroqAPIBot"; + +export default class Gemma7bGroqAPIBot extends GroqAPIBot { + static _className = "Gemma7bGroqAPIBot"; + static _logoFilename = "gemma-7b-it-groq-logo.png"; + static _model = "gemma-7b-it"; + constructor() { + super(); + } +} diff --git a/src/bots/groq/GroqAPIBot.js b/src/bots/groq/GroqAPIBot.js new file mode 100644 index 0000000000..390167ba21 --- /dev/null +++ b/src/bots/groq/GroqAPIBot.js @@ -0,0 +1,38 @@ +import LangChainBot from "../LangChainBot"; +import store from "@/store"; +import { ChatGroq } from "@langchain/groq"; + +export default class GroqAPIBot extends LangChainBot { + static _brandId = "groqApi"; + static _className = "GroqAPIBot"; + + constructor() { + super(); + } + + async _checkAvailability() { + let available = false; + + if (store.state.groqApi.apiKey) { + this.setupModel(); + available = true; + } + return available; + } + + _setupModel() { + const chatModel = new ChatGroq({ + apiKey: store.state.groqApi.apiKey, + modelName: this.constructor._model ? this.constructor._model : "", + streaming: true, + temperature: store.state.groqApi.temperature, + maxTokens: store.state.groqApi.maxTokens, + }); + + return chatModel; + } + + getPastRounds() { + return store.state.groqApi.pastRounds ? store.state.groqApi.pastRounds : 1; + } +} diff --git a/src/bots/groq/Llama270bGroqAPIBot.js b/src/bots/groq/Llama270bGroqAPIBot.js new file mode 100644 index 0000000000..73ce7f5e67 --- /dev/null +++ b/src/bots/groq/Llama270bGroqAPIBot.js @@ -0,0 +1,10 @@ +import GroqAPIBot from "./GroqAPIBot"; + +export default class Llama270bGroqAPIBot extends GroqAPIBot { + static _className = "Llama270bGroqAPIBot"; + static _logoFilename = "llama-2-70b-groq-logo.png"; + static _model = "llama2-70b-4096"; + constructor() { + super(); + } +} diff --git a/src/bots/groq/Mixtral8x7bGroqAPIBot.js b/src/bots/groq/Mixtral8x7bGroqAPIBot.js new file mode 100644 index 0000000000..bf363d3bc0 --- /dev/null +++ b/src/bots/groq/Mixtral8x7bGroqAPIBot.js @@ -0,0 +1,10 @@ +import GroqAPIBot from "./GroqAPIBot"; + +export default class Mixtral8x7bGroqAPIBot extends GroqAPIBot { + static _className = "Mixtral8x7bGroqAPIBot"; + static _logoFilename = "mistral-8x7b-groq-logo.png"; + static _model = "mixtral-8x7b-32768"; + constructor() { + super(); + } +} diff --git a/src/bots/index.js b/src/bots/index.js index 32d5fc4195..4112da94e6 100644 --- a/src/bots/index.js +++ b/src/bots/index.js @@ -20,6 +20,9 @@ import AlpacaBot from "@/bots/lmsys/AlpacaBot"; import ClaudeBot from "@/bots/lmsys/ClaudeBot"; import DevBot from "@/bots/DevBot"; import GradioAppBot from "@/bots/huggingface/GradioAppBot"; +import Gemma7bGroqAPIBot from "@/bots/groq/Gemma7bGroqAPIBot"; +import Llama270bGroqAPIBot from "@/bots/groq/Llama270bGroqAPIBot"; +import Mixtral8x7bGroqAPIBot from "@/bots/groq/Mixtral8x7bGroqAPIBot"; import HuggingChatBot from "@/bots/huggingface/HuggingChatBot"; import QianWenBot from "./QianWenBot"; import ChatGPT35PoeBot from "./poe/ChatGPT35PoeBot"; @@ -123,6 +126,9 @@ const all = [ OpenAIAPI4128KBot.getInstance(), ChatGPT432kPoeBot.getInstance(), GradioAppBot.getInstance(), + Gemma7bGroqAPIBot.getInstance(), + Llama270bGroqAPIBot.getInstance(), + Mixtral8x7bGroqAPIBot.getInstance(), KimiBot.getInstance(), Llama27bBot.getInstance(), Llama213bBot.getInstance(), @@ -280,6 +286,9 @@ export const botTags = { bots.getBotByClassName("ClaudeAPIInstant12Bot"), bots.getBotByClassName("ClaudeAPIOpusBot"), bots.getBotByClassName("ClaudeAPISonnetBot"), + bots.getBotByClassName("Gemma7bGroqAPIBot"), + bots.getBotByClassName("Llama270bGroqAPIBot"), + bots.getBotByClassName("Mixtral8x7bGroqAPIBot"), ], madeInChina: [ bots.getBotByClassName("Qihoo360AIBrainBot"), diff --git a/src/components/BotSettings/GroqAPIBotSettings.vue b/src/components/BotSettings/GroqAPIBotSettings.vue new file mode 100644 index 0000000000..817b95c077 --- /dev/null +++ b/src/components/BotSettings/GroqAPIBotSettings.vue @@ -0,0 +1,56 @@ + + + diff --git a/src/components/SettingsModal.vue b/src/components/SettingsModal.vue index 0514c93155..9d4414e999 100644 --- a/src/components/SettingsModal.vue +++ b/src/components/SettingsModal.vue @@ -128,6 +128,7 @@ import KimiBotSettings from "./BotSettings/KimiBotSettings.vue"; import { resolveTheme, applyTheme, Mode } from "../theme"; import ClaudeAPIBotSettings from "./BotSettings/ClaudeAPIBotSettings.vue"; +import GroqAPIBotSettings from "./BotSettings/GroqAPIBotSettings.vue"; const { ipcRenderer } = window.require("electron"); const { t: $t, locale } = useI18n(); @@ -167,6 +168,7 @@ const botSettings = [ { brand: "wenxinQianfan", component: WenxinQianfanBotSettings }, { brand: "youChat", component: YouChatBotSettings }, { brand: "claudeApi", component: ClaudeAPIBotSettings }, + { brand: "groqApi", component: GroqAPIBotSettings }, ]; const proxy = ProxySettings; diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 625b445e71..c1bbbc028f 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -104,5 +104,11 @@ }, "dev": { "name": "Dev Bot" + }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" } } \ No newline at end of file diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 0468602dfb..391471640e 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -287,6 +287,12 @@ "dev": { "name": "Dev Bot" }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" + }, "updates": { "updateAvailable": "Update Available!", "currentVersion": "Your Version", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index b83893ca06..561984cbe1 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -191,6 +191,12 @@ "dev": { "name": "Bot de desarrollo" }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" + }, "updates": { "updateAvailable": "¡Actualización disponible!", "currentVersion": "Su versión", diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 673d97388c..8fbe473d50 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -107,5 +107,11 @@ }, "dev": { "name": "Bot Dev" + }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" } } diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index f38a6fd816..e7c95aa50e 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -114,5 +114,11 @@ }, "dev": { "name": "Bot Dev" + }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" } } diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 8234cbb942..d4c4afff90 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -174,6 +174,12 @@ "dev": { "name": "Dev Bot" }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" + }, "updates": { "updateAvailable": "アップデート利用可能!", "currentVersion": "現バージョン", diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json index 52dfa1bcfa..45f909e458 100644 --- a/src/i18n/locales/ko.json +++ b/src/i18n/locales/ko.json @@ -258,6 +258,12 @@ "dev": { "name": "Dev Bot" }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" + }, "updates": { "updateAvailable": "업데이트 가능!", "currentVersion": "사용자 버전", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 67f30db1b7..6040c13656 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -107,5 +107,11 @@ }, "dev": { "name": "Dev Bot" + }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" } } \ No newline at end of file diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json index 6adacd2c06..2080cc9aa3 100644 --- a/src/i18n/locales/vi.json +++ b/src/i18n/locales/vi.json @@ -254,6 +254,12 @@ "dev": { "name": "Dev Bot" }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" + }, "updates": { "updateAvailable": "Cập nhập mới đã có!", "currentVersion": "Phiên bản của bạn", diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index 45a36429a5..6a894eca3d 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -284,6 +284,12 @@ "dev": { "name": "开发专用 Bot" }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" + }, "updates": { "updateAvailable": "有更新!", "currentVersion": "您当前的版本", diff --git a/src/i18n/locales/zhtw.json b/src/i18n/locales/zhtw.json index 6f76392bc5..8c66269db2 100644 --- a/src/i18n/locales/zhtw.json +++ b/src/i18n/locales/zhtw.json @@ -284,6 +284,12 @@ "dev": { "name": "開發專用 Bot" }, + "groqApi": { + "name": "Groq API", + "llama2-70b-4096": "LLaMA2 70b", + "mixtral-8x7b-32768": "Mixtral 8x7b", + "gemma-7b-it": "Gemma 7b" + }, "updates": { "updateAvailable": "有新版可使用!", "currentVersion": "您目前的版本", diff --git a/src/store/index.js b/src/store/index.js index 988a5cd92f..3f3d2c804e 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -65,6 +65,12 @@ export default createStore({ mistral: { model: "mistral-large", }, + groqApi: { + apiKey: "", + temperature: 0, + maxTokens: 1000, + pastRounds: 1, + }, moss: { token: "", }, @@ -230,6 +236,9 @@ export default createStore({ setGradio(state, values) { state.gradio = { ...state.gradio, ...values }; }, + setGroq(state, values) { + state.groq = { ...state.groq, ...values }; + }, setCharacterAI(state, values) { state.characterAI = { ...state.characterAI, ...values }; },