Groq: Pull models list from endpoint
| @@ -3468,35 +3468,17 @@ | ||
| 3468 | 3468 | </div> |
| 3469 | 3469 | <h4 data-i18n="Groq Model">Groq Model</h4> |
| 3470 | 3470 | <select id="model_groq_select"> |
| 3471 | - <optgroup label="Alibaba Cloud"> | |
| 3471 | + <option value="qwen/qwen3-32b">qwen/qwen3-32b</option> | |
| 3472 | 3472 | <option value="qwendeepseek-2.5r1-32bdistill-llama-70b">qwendeepseek-2.5r1-32bdistill-llama-70b</option> |
| 3473 | 3473 | <option value="qwen-2.5gemma2-coder9b-32bit">qwen-2.5gemma2-coder9b-32bit</option> |
| 3474 | - </optgroup> | |
| 3474 | + <option value="meta-llama/llama-4-scout-17b-16e-instruct">meta-llama/llama-4-scout-17b-16e-instruct</option> | |
| 3475 | - <optgroup label="DeepSeek"> | |
| 3475 | + <option value="meta-llama/llama-4-maverick-17b-128e-instruct">meta-llama/llama-4-maverick-17b-128e-instruct</option> | |
| 3476 | 3476 | <option value="deepseek-r1llama-distill3.1-qwen8b-32binstant">deepseek-r1llama-distill3.1-qwen8b-32binstant</option> |
| 3477 | 3477 | <option value="deepseek-r1-distill-llama-3.3-70b-versatile">deepseek-r1-distill-llama-3.3-70b-versatile </option> |
| 3478 | - </optgroup> | |
| 3478 | + <option value="llama-guard-3-8b">llama-guard-3-8b</option> | |
| 3479 | - <optgroup label="Google"> | |
| 3479 | + <option value="llama3-70b-8192">llama3-70b-8192</option> | |
| 3480 | 3480 | <option value="gemma2llama3-9b8b-it8192">gemma2llama3-9b8b-it8192</option> |
| 3481 | - </optgroup> | |
| 3481 | + <option value="mistral-saba-24b">mistral-saba-24b</option> | |
| 3482 | - <optgroup label="Meta"> | |
| 3483 | - <option value="meta-llama/llama-4-scout-17b-16e-instruct">meta-llama/llama-4-scout-17b-16e-instruct</option> | |
| 3484 | - <option value="meta-llama/llama-4-maverick-17b-128e-instruct">meta-llama/llama-4-maverick-17b-128e-instruct</option> | |
| 3485 | - <option value="llama-3.1-8b-instant">llama-3.1-8b-instant</option> | |
| 3486 | - <option value="llama-3.2-11b-vision-preview">llama-3.2-11b-vision-preview </option> | |
| 3487 | - <option value="llama-3.2-1b-preview">llama-3.2-1b-preview </option> | |
| 3488 | - <option value="llama-3.2-3b-preview">llama-3.2-3b-preview </option> | |
| 3489 | - <option value="llama-3.2-90b-vision-preview">llama-3.2-90b-vision-preview </option> | |
| 3490 | - <option value="llama-3.3-70b-specdec">llama-3.3-70b-specdec</option> | |
| 3491 | - <option value="llama-3.3-70b-versatile">llama-3.3-70b-versatile </option> | |
| 3492 | - <option value="llama-guard-3-8b">llama-guard-3-8b</option> | |
| 3493 | - <option value="llama3-70b-8192">llama3-70b-8192</option> | |
| 3494 | - <option value="llama3-8b-8192">llama3-8b-8192</option> | |
| 3495 | - </optgroup> | |
| 3496 | - <optgroup label="Mistral AI"> | |
| 3497 | - <option value="mistral-saba-24b">mistral-saba-24b</option> | |
| 3498 | - <option value="mixtral-8x7b-32768">mixtral-8x7b-32768</option> | |
| 3499 | - </optgroup> | |
| 3500 | 3482 | </select> |
| 3501 | 3483 | </div> |
| 3502 | 3484 | <div id="nanogpt_form" data-source="nanogpt"> |
| @@ -1978,6 +1978,24 @@ function saveModelList(data) { | ||
| 1978 | 1978 | |
| 1979 | 1979 | $('#model_google_select').val(oai_settings.google_model).trigger('change'); |
| 1980 | 1980 | } |
| 1981 | + | |
| 1982 | + if (oai_settings.chat_completion_source === chat_completion_sources.GROQ) { | |
| 1983 | + $('#model_groq_select').empty(); | |
| 1984 | + model_list.forEach((model) => { | |
| 1985 | + $('#model_groq_select').append( | |
| 1986 | + $('<option>', { | |
| 1987 | + value: model.id, | |
| 1988 | + text: model.id, | |
| 1989 | + })); | |
| 1990 | + }); | |
| 1991 | + | |
| 1992 | + const selectedModel = model_list.find(model => model.id === oai_settings.groq_model); | |
| 1993 | + if (model_list.length > 0 && (!selectedModel || !oai_settings.groq_model)) { | |
| 1994 | + oai_settings.groq_model = model_list[0].id; | |
| 1995 | + } | |
| 1996 | + | |
| 1997 | + $('#model_groq_select').val(oai_settings.groq_model).trigger('change'); | |
| 1998 | + } | |
| 1981 | 1999 | } |
| 1982 | 2000 | |
| 1983 | 2001 | function appendOpenRouterOptions(model_list, groupModels = false, sort = false) { |
| @@ -3827,7 +3845,6 @@ async function getStatusOpen() { | ||
| 3827 | 3845 | chat_completion_sources.AI21, |
| 3828 | 3846 | chat_completion_sources.VERTEXAI, |
| 3829 | 3847 | chat_completion_sources.PERPLEXITY, |
| 3830 | - chat_completion_sources.GROQ, | |
| 3831 | 3848 | ]; |
| 3832 | 3849 | if (noValidateSources.includes(oai_settings.chat_completion_source)) { |
| 3833 | 3850 | let status = t`Key saved; press \"Test Message\" to verify.`; |
| @@ -4649,6 +4666,13 @@ function getGroqMaxContext(model, isUnlocked) { | ||
| 4649 | 4666 | return unlocked_max; |
| 4650 | 4667 | } |
| 4651 | 4668 | |
| 4669 | + if (Array.isArray(model_list) && model_list.length > 0) { | |
| 4670 | + const contextLength = model_list.find((record) => record.id === model)?.context_window; | |
| 4671 | + if (contextLength) { | |
| 4672 | + return contextLength; | |
| 4673 | + } | |
| 4674 | + } | |
| 4675 | + | |
| 4652 | 4676 | const contextMap = { |
| 4653 | 4677 | 'gemma2-9b-it': max_8k, |
| 4654 | 4678 | 'llama-3.3-70b-versatile': max_128k, |
| @@ -4669,6 +4693,9 @@ function getGroqMaxContext(model, isUnlocked) { | ||
| 4669 | 4693 | 'mistral-saba-24b': max_32k, |
| 4670 | 4694 | 'meta-llama/llama-4-scout-17b-16e-instruct': max_128k, |
| 4671 | 4695 | 'meta-llama/llama-4-maverick-17b-128e-instruct': max_128k, |
| 4696 | + 'compound-beta': max_128k, | |
| 4697 | + 'compound-beta-mini': max_128k, | |
| 4698 | + 'qwen/qwen3-32b': max_128k, | |
| 4672 | 4699 | }; |
| 4673 | 4700 | |
| 4674 | 4701 | // Return context size if model found, otherwise default to 128k |
| @@ -4762,6 +4789,10 @@ async function onModelChange() { | ||
| 4762 | 4789 | } |
| 4763 | 4790 | |
| 4764 | 4791 | if ($(this).is('#model_groq_select')) { |
| 4792 | + if (!value) { | |
| 4793 | + console.debug('Null Groq model selected. Ignoring.'); | |
| 4794 | + return; | |
| 4795 | + } | |
| 4765 | 4796 | console.log('Groq model changed to', value); |
| 4766 | 4797 | oai_settings.groq_model = value; |
| 4767 | 4798 | } |
| @@ -1192,6 +1192,10 @@ router.post('/status', async function (request, statusResponse) { | ||
| 1192 | 1192 | apiUrl = 'https://text.pollinations.ai'; |
| 1193 | 1193 | apiKey = 'NONE'; |
| 1194 | 1194 | headers = {}; |
| 1195 | + } else if (request.body.chat_completion_source === CHAT_COMPLETION_SOURCES.GROQ) { | |
| 1196 | + apiUrl = API_GROQ; | |
| 1197 | + apiKey = readSecret(request.user.directories, SECRET_KEYS.GROQ); | |
| 1198 | + headers = {}; | |
| 1195 | 1199 | } else if (request.body.chat_completion_source === CHAT_COMPLETION_SOURCES.MAKERSUITE) { |
| 1196 | 1200 | apiKey = request.body.reverse_proxy ? request.body.proxy_password : readSecret(request.user.directories, SECRET_KEYS.MAKERSUITE); |
| 1197 | 1201 | apiUrl = trimTrailingSlash(request.body.reverse_proxy || API_MAKERSUITE); |