normalize LiteLLM embedding requests

This commit is contained in:
Daniel 2026-05-08 06:11:36 +02:00
parent b40941e4d5
commit 548c39a883
4 changed files with 17 additions and 16 deletions

View file

@ -9,7 +9,8 @@ var { authMiddleware, adminMiddleware } = require('../middleware/auth');
var PROMPTS = require('../utils/prompts');
var logger = require('../utils/logger');
var { gatewayUrl } = require('../utils/errors');
var { GOOGLE_TTS_VOICES, OPENAI_TTS_VOICES, getTTSEnvProvider, getLiteLLMHeaders, getLiteLLMTTSModels, getTTSProvider, getTTSVoiceLists } = require('../utils/ttsProvider');
var { GOOGLE_TTS_VOICES, OPENAI_TTS_VOICES, getTTSEnvProvider, getLiteLLMTTSModels, getTTSProvider, getTTSVoiceLists } = require('../utils/ttsProvider');
var { getLiteLLMHeaders } = require('../utils/litellm');
var { getSTTDependencies, getSTTModelLists, getSTTProvider } = require('../utils/sttProvider');
router.use(authMiddleware);

View file

@ -4,6 +4,8 @@
// ============================================================
var axios = require('axios');
var { gatewayUrl } = require('./errors');
var { getLiteLLMHeaders } = require('./litellm');
// Vertex AI embedding models (via LiteLLM or direct)
// gemini-embedding-001: 768 dims, multilingual + code, best quality
@ -61,12 +63,6 @@ async function generateEmbedding(text, opts) {
*/
async function generateEmbeddingLiteLLM(text, model, dimensions) {
try {
var base = process.env.LITELLM_API_BASE.replace(/\/+$/, '');
var headers = { 'Content-Type': 'application/json' };
if (process.env.LITELLM_API_KEY) {
headers['Authorization'] = 'Bearer ' + process.env.LITELLM_API_KEY;
}
var payload = {
model: model,
input: text
@ -77,8 +73,8 @@ async function generateEmbeddingLiteLLM(text, model, dimensions) {
payload.dimensions = dimensions;
}
var response = await axios.post(base + '/embeddings', payload, {
headers: headers,
var response = await axios.post(gatewayUrl('/embeddings'), payload, {
headers: getLiteLLMHeaders('application/json'),
timeout: 30000
});

10
src/utils/litellm.js Normal file
View file

@ -0,0 +1,10 @@
function getLiteLLMHeaders(contentType) {
var headers = {};
if (contentType) headers['Content-Type'] = contentType;
if (process.env.LITELLM_API_KEY) headers.Authorization = 'Bearer ' + process.env.LITELLM_API_KEY;
return headers;
}
module.exports = {
getLiteLLMHeaders
};

View file

@ -1,4 +1,5 @@
const { isGoogleTTSConfigured } = require('./ttsGoogle');
const { getLiteLLMHeaders } = require('./litellm');
const GOOGLE_TTS_VOICES = ['en-US-Journey-F','en-US-Journey-D','en-US-Studio-O','en-US-Neural2-A','en-US-Neural2-C','en-US-Neural2-D','en-US-Neural2-E','en-US-Neural2-F','en-US-Neural2-G','en-US-Neural2-H','en-US-Neural2-I','en-US-Neural2-J'];
const OPENAI_TTS_VOICES = ['alloy','echo','fable','onyx','nova','shimmer','ash','sage','coral'];
@ -37,13 +38,6 @@ function getLiteLLMTTSModels(models) {
.filter(isOpenAITTSModel);
}
function getLiteLLMHeaders(contentType) {
var headers = {};
if (contentType) headers['Content-Type'] = contentType;
if (process.env.LITELLM_API_KEY) headers.Authorization = 'Bearer ' + process.env.LITELLM_API_KEY;
return headers;
}
module.exports = {
ELEVENLABS_DEFAULT_VOICES,
GOOGLE_TTS_VOICES,