diff --git a/public/script.js b/public/script.js index 76c18a23b..995dd3e2e 100644 --- a/public/script.js +++ b/public/script.js @@ -1124,6 +1124,7 @@ async function getStatusTextgen() { online_status = textgen_settings.aphrodite_model; } else if (textgen_settings.type === FEATHERLESS) { loadFeatherlessModels(data?.data); + online_status = textgen_settings.featherless_model; } else { online_status = data?.result; } diff --git a/src/endpoints/backends/text-completions.js b/src/endpoints/backends/text-completions.js index aeff56258..782819058 100644 --- a/src/endpoints/backends/text-completions.js +++ b/src/endpoints/backends/text-completions.js @@ -4,7 +4,7 @@ const _ = require('lodash'); const Readable = require('stream').Readable; const { jsonParser } = require('../../express-common'); -const { TEXTGEN_TYPES, TOGETHERAI_KEYS, OLLAMA_KEYS, INFERMATICAI_KEYS, OPENROUTER_KEYS, VLLM_KEYS, DREAMGEN_KEYS } = require('../../constants'); +const { TEXTGEN_TYPES, TOGETHERAI_KEYS, OLLAMA_KEYS, INFERMATICAI_KEYS, OPENROUTER_KEYS, VLLM_KEYS, DREAMGEN_KEYS, FEATHERLESS_KEYS } = require('../../constants'); const { forwardFetchResponse, trimV1 } = require('../../util'); const { setAdditionalHeaders } = require('../../additional-headers'); @@ -238,6 +238,7 @@ router.post('/generate', jsonParser, async function (request, response) { } else { switch (request.body.api_type) { case TEXTGEN_TYPES.VLLM: + case TEXTGEN_TYPES.FEATHERLESS: case TEXTGEN_TYPES.APHRODITE: case TEXTGEN_TYPES.OOBA: case TEXTGEN_TYPES.TABBY: @@ -284,6 +285,11 @@ router.post('/generate', jsonParser, async function (request, response) { args.body = JSON.stringify(request.body); } + if (request.body.api_type === TEXTGEN_TYPES.FEATHERLESS) { + request.body = _.pickBy(request.body, (_, key) => FEATHERLESS_KEYS.includes(key)); + args.body = JSON.stringify(request.body); + } + if (request.body.api_type === TEXTGEN_TYPES.DREAMGEN) { request.body = _.pickBy(request.body, (_, key) => DREAMGEN_KEYS.includes(key)); // NOTE: DreamGen sometimes get confused by the unusual formatting in the character cards. diff --git a/src/endpoints/secrets.js b/src/endpoints/secrets.js index 9bf2eb765..df976df67 100644 --- a/src/endpoints/secrets.js +++ b/src/endpoints/secrets.js @@ -4,6 +4,7 @@ const express = require('express'); const { getConfigValue } = require('../util'); const writeFileAtomicSync = require('write-file-atomic').sync; const { jsonParser } = require('../express-common'); +const { FEATHERLESS_KEYS } = require('../constants'); const SECRETS_FILE = 'secrets.json'; const SECRET_KEYS = { @@ -40,6 +41,7 @@ const SECRET_KEYS = { PERPLEXITY: 'api_key_perplexity', GROQ: 'api_key_groq', AZURE_TTS: 'api_key_azure_tts', + FEATHERLESS: 'api_key_featherless', }; // These are the keys that are safe to expose, even if allowKeysExposure is false