diff --git a/src/routes/adminConfig.js b/src/routes/adminConfig.js index de63d5b..45771fd 100644 --- a/src/routes/adminConfig.js +++ b/src/routes/adminConfig.js @@ -408,9 +408,7 @@ router.get('/config/image-models/discover', async function(req, res) { var axios = require('axios'); var discovered = []; if (process.env.LITELLM_API_BASE) { - var headers = {}; - if (process.env.LITELLM_API_KEY) headers.Authorization = 'Bearer ' + process.env.LITELLM_API_KEY; - var resp = await axios.get(gatewayUrl('/models'), { headers: headers, timeout: 15000 }); + var resp = await axios.get(gatewayUrl('/models'), { headers: getLiteLLMHeaders(), timeout: 15000 }); var models = (resp.data && resp.data.data) || []; models.forEach(function(m) { var id = m.id || ''; @@ -438,14 +436,12 @@ router.post('/config/image-models/test', async function(req, res) { var modelId = String(req.body.modelId || '').trim(); if (!modelId) return res.status(400).json({ error: 'modelId required' }); var axios = require('axios'); - var headers = { 'Content-Type': 'application/json' }; - if (process.env.LITELLM_API_KEY) headers.Authorization = 'Bearer ' + process.env.LITELLM_API_KEY; var started = Date.now(); var imgResp = await axios.post(gatewayUrl('/images/generations'), { model: modelId, prompt: 'A simple child-friendly icon of lungs and an inhaler, flat medical illustration, no text', size: '1024x1024' - }, { headers: headers, timeout: 120000 }); + }, { headers: getLiteLLMHeaders('application/json'), timeout: 120000 }); var item = imgResp.data && imgResp.data.data && imgResp.data.data[0] ? imgResp.data.data[0] : {}; res.json({ success: true, @@ -682,10 +678,8 @@ router.get('/config/stt/discover', async function(req, res) { if (provider === 'litellm' && process.env.LITELLM_API_BASE) { // base URL handled by gatewayUrl() helper - var sHeaders = {}; - if (process.env.LITELLM_API_KEY) sHeaders['Authorization'] = 'Bearer ' + process.env.LITELLM_API_KEY; try { - var sResp = await axios.get(gatewayUrl('/models'), { headers: sHeaders, timeout: 10000 }); + var sResp = await axios.get(gatewayUrl('/models'), { headers: getLiteLLMHeaders(), timeout: 10000 }); if (sResp.data && sResp.data.data) { sResp.data.data.forEach(function(m) { var mid = (m.id || '').toLowerCase(); @@ -756,22 +750,18 @@ router.post('/config/stt/test', async function(req, res) { var form = new FormData(); form.append('file', file); form.append('model', sttModel); - var fetchHeaders = {}; - if (process.env.LITELLM_API_KEY) fetchHeaders['Authorization'] = 'Bearer ' + process.env.LITELLM_API_KEY; var sttResp = await fetch(gatewayUrl('/audio/transcriptions'), { - method: 'POST', headers: fetchHeaders, body: form + method: 'POST', headers: getLiteLLMHeaders(), body: form }).then(function(r) { return r.json().then(function(d) { return { data: d }; }); }); text = sttResp.data && sttResp.data.text ? sttResp.data.text : ''; } else { - var headers = { 'Content-Type': 'application/json' }; - if (process.env.LITELLM_API_KEY) headers['Authorization'] = 'Bearer ' + process.env.LITELLM_API_KEY; var sttResp = await axios.post(gatewayUrl('/chat/completions'), { model: sttModel, messages: [{ role: 'user', content: [ { type: 'input_audio', input_audio: { data: audioBase64, format: mime.split('/')[1] || 'webm' } }, { type: 'text', text: 'Transcribe this audio. Output the spoken words only.' } ]}] - }, { headers: headers, timeout: 60000 }); + }, { headers: getLiteLLMHeaders('application/json'), timeout: 60000 }); if (sttResp.data && sttResp.data.choices && sttResp.data.choices[0]) { text = (sttResp.data.choices[0].message && sttResp.data.choices[0].message.content) || ''; } @@ -849,10 +839,8 @@ router.get('/config/embeddings/discover', async function(req, res) { if (provider === 'litellm') { // base URL handled by gatewayUrl() helper - var eHeaders = {}; - if (process.env.LITELLM_API_KEY) eHeaders['Authorization'] = 'Bearer ' + process.env.LITELLM_API_KEY; try { - var eResp = await axios.get(gatewayUrl('/models'), { headers: eHeaders, timeout: 10000 }); + var eResp = await axios.get(gatewayUrl('/models'), { headers: getLiteLLMHeaders(), timeout: 10000 }); if (eResp.data && eResp.data.data) { eResp.data.data.forEach(function(m) { if ((m.id || '').toLowerCase().indexOf('embed') !== -1) {