centralize LiteLLM admin headers
This commit is contained in:
parent
48ee92fc5d
commit
b40941e4d5
1 changed files with 6 additions and 18 deletions
|
|
@ -408,9 +408,7 @@ router.get('/config/image-models/discover', async function(req, res) {
|
||||||
var axios = require('axios');
|
var axios = require('axios');
|
||||||
var discovered = [];
|
var discovered = [];
|
||||||
if (process.env.LITELLM_API_BASE) {
|
if (process.env.LITELLM_API_BASE) {
|
||||||
var headers = {};
|
var resp = await axios.get(gatewayUrl('/models'), { headers: getLiteLLMHeaders(), timeout: 15000 });
|
||||||
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 models = (resp.data && resp.data.data) || [];
|
var models = (resp.data && resp.data.data) || [];
|
||||||
models.forEach(function(m) {
|
models.forEach(function(m) {
|
||||||
var id = m.id || '';
|
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();
|
var modelId = String(req.body.modelId || '').trim();
|
||||||
if (!modelId) return res.status(400).json({ error: 'modelId required' });
|
if (!modelId) return res.status(400).json({ error: 'modelId required' });
|
||||||
var axios = require('axios');
|
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 started = Date.now();
|
||||||
var imgResp = await axios.post(gatewayUrl('/images/generations'), {
|
var imgResp = await axios.post(gatewayUrl('/images/generations'), {
|
||||||
model: modelId,
|
model: modelId,
|
||||||
prompt: 'A simple child-friendly icon of lungs and an inhaler, flat medical illustration, no text',
|
prompt: 'A simple child-friendly icon of lungs and an inhaler, flat medical illustration, no text',
|
||||||
size: '1024x1024'
|
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] : {};
|
var item = imgResp.data && imgResp.data.data && imgResp.data.data[0] ? imgResp.data.data[0] : {};
|
||||||
res.json({
|
res.json({
|
||||||
success: true,
|
success: true,
|
||||||
|
|
@ -682,10 +678,8 @@ router.get('/config/stt/discover', async function(req, res) {
|
||||||
|
|
||||||
if (provider === 'litellm' && process.env.LITELLM_API_BASE) {
|
if (provider === 'litellm' && process.env.LITELLM_API_BASE) {
|
||||||
// base URL handled by gatewayUrl() helper
|
// base URL handled by gatewayUrl() helper
|
||||||
var sHeaders = {};
|
|
||||||
if (process.env.LITELLM_API_KEY) sHeaders['Authorization'] = 'Bearer ' + process.env.LITELLM_API_KEY;
|
|
||||||
try {
|
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) {
|
if (sResp.data && sResp.data.data) {
|
||||||
sResp.data.data.forEach(function(m) {
|
sResp.data.data.forEach(function(m) {
|
||||||
var mid = (m.id || '').toLowerCase();
|
var mid = (m.id || '').toLowerCase();
|
||||||
|
|
@ -756,22 +750,18 @@ router.post('/config/stt/test', async function(req, res) {
|
||||||
var form = new FormData();
|
var form = new FormData();
|
||||||
form.append('file', file);
|
form.append('file', file);
|
||||||
form.append('model', sttModel);
|
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'), {
|
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 }; }); });
|
}).then(function(r) { return r.json().then(function(d) { return { data: d }; }); });
|
||||||
text = sttResp.data && sttResp.data.text ? sttResp.data.text : '';
|
text = sttResp.data && sttResp.data.text ? sttResp.data.text : '';
|
||||||
} else {
|
} 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'), {
|
var sttResp = await axios.post(gatewayUrl('/chat/completions'), {
|
||||||
model: sttModel,
|
model: sttModel,
|
||||||
messages: [{ role: 'user', content: [
|
messages: [{ role: 'user', content: [
|
||||||
{ type: 'input_audio', input_audio: { data: audioBase64, format: mime.split('/')[1] || 'webm' } },
|
{ type: 'input_audio', input_audio: { data: audioBase64, format: mime.split('/')[1] || 'webm' } },
|
||||||
{ type: 'text', text: 'Transcribe this audio. Output the spoken words only.' }
|
{ 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]) {
|
if (sttResp.data && sttResp.data.choices && sttResp.data.choices[0]) {
|
||||||
text = (sttResp.data.choices[0].message && sttResp.data.choices[0].message.content) || '';
|
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') {
|
if (provider === 'litellm') {
|
||||||
// base URL handled by gatewayUrl() helper
|
// base URL handled by gatewayUrl() helper
|
||||||
var eHeaders = {};
|
|
||||||
if (process.env.LITELLM_API_KEY) eHeaders['Authorization'] = 'Bearer ' + process.env.LITELLM_API_KEY;
|
|
||||||
try {
|
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) {
|
if (eResp.data && eResp.data.data) {
|
||||||
eResp.data.data.forEach(function(m) {
|
eResp.data.data.forEach(function(m) {
|
||||||
if ((m.id || '').toLowerCase().indexOf('embed') !== -1) {
|
if ((m.id || '').toLowerCase().indexOf('embed') !== -1) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue