forked from open-webui/open-webui
		
	feat: litellm proxy frontend integration
This commit is contained in:
		
							parent
							
								
									a453be07e1
								
							
						
					
					
						commit
						ec6f53e298
					
				
					 6 changed files with 823 additions and 360 deletions
				
			
		|  | @ -17,7 +17,7 @@ export const getLiteLLMModels = async (token: string = '') => { | |||
| 		}) | ||||
| 		.catch((err) => { | ||||
| 			console.log(err); | ||||
| 			error = `OpenAI: ${err?.error?.message ?? 'Network Problem'}`; | ||||
| 			error = `LiteLLM: ${err?.error?.message ?? 'Network Problem'}`; | ||||
| 			return []; | ||||
| 		}); | ||||
| 
 | ||||
|  | @ -40,3 +40,109 @@ export const getLiteLLMModels = async (token: string = '') => { | |||
| 				}) | ||||
| 		: models; | ||||
| }; | ||||
| 
 | ||||
| export const getLiteLLMModelInfo = async (token: string = '') => { | ||||
| 	let error = null; | ||||
| 
 | ||||
| 	const res = await fetch(`${LITELLM_API_BASE_URL}/model/info`, { | ||||
| 		method: 'GET', | ||||
| 		headers: { | ||||
| 			Accept: 'application/json', | ||||
| 			'Content-Type': 'application/json', | ||||
| 			...(token && { authorization: `Bearer ${token}` }) | ||||
| 		} | ||||
| 	}) | ||||
| 		.then(async (res) => { | ||||
| 			if (!res.ok) throw await res.json(); | ||||
| 			return res.json(); | ||||
| 		}) | ||||
| 		.catch((err) => { | ||||
| 			console.log(err); | ||||
| 			error = `LiteLLM: ${err?.error?.message ?? 'Network Problem'}`; | ||||
| 			return []; | ||||
| 		}); | ||||
| 
 | ||||
| 	if (error) { | ||||
| 		throw error; | ||||
| 	} | ||||
| 
 | ||||
| 	const models = Array.isArray(res) ? res : res?.data ?? null; | ||||
| 
 | ||||
| 	return models; | ||||
| }; | ||||
| 
 | ||||
| type AddLiteLLMModelForm = { | ||||
| 	name: string; | ||||
| 	model: string; | ||||
| 	api_base: string; | ||||
| 	api_key: string; | ||||
| 	rpm: string; | ||||
| }; | ||||
| 
 | ||||
| export const addLiteLLMModel = async (token: string = '', payload: AddLiteLLMModelForm) => { | ||||
| 	let error = null; | ||||
| 
 | ||||
| 	const res = await fetch(`${LITELLM_API_BASE_URL}/model/new`, { | ||||
| 		method: 'POST', | ||||
| 		headers: { | ||||
| 			Accept: 'application/json', | ||||
| 			'Content-Type': 'application/json', | ||||
| 			...(token && { authorization: `Bearer ${token}` }) | ||||
| 		}, | ||||
| 		body: JSON.stringify({ | ||||
| 			model_name: payload.name, | ||||
| 			litellm_params: { | ||||
| 				model: payload.model, | ||||
| 				...(payload.api_base === '' ? {} : { api_base: payload.api_base }), | ||||
| 				...(payload.api_key === '' ? {} : { api_key: payload.api_key }), | ||||
| 				...(isNaN(parseInt(payload.rpm)) ? {} : { rpm: parseInt(payload.rpm) }) | ||||
| 			} | ||||
| 		}) | ||||
| 	}) | ||||
| 		.then(async (res) => { | ||||
| 			if (!res.ok) throw await res.json(); | ||||
| 			return res.json(); | ||||
| 		}) | ||||
| 		.catch((err) => { | ||||
| 			console.log(err); | ||||
| 			error = `LiteLLM: ${err?.error?.message ?? 'Network Problem'}`; | ||||
| 			return []; | ||||
| 		}); | ||||
| 
 | ||||
| 	if (error) { | ||||
| 		throw error; | ||||
| 	} | ||||
| 
 | ||||
| 	return res; | ||||
| }; | ||||
| 
 | ||||
| export const deleteLiteLLMModel = async (token: string = '', id: string) => { | ||||
| 	let error = null; | ||||
| 
 | ||||
| 	const res = await fetch(`${LITELLM_API_BASE_URL}/model/delete`, { | ||||
| 		method: 'POST', | ||||
| 		headers: { | ||||
| 			Accept: 'application/json', | ||||
| 			'Content-Type': 'application/json', | ||||
| 			...(token && { authorization: `Bearer ${token}` }) | ||||
| 		}, | ||||
| 		body: JSON.stringify({ | ||||
| 			id: id | ||||
| 		}) | ||||
| 	}) | ||||
| 		.then(async (res) => { | ||||
| 			if (!res.ok) throw await res.json(); | ||||
| 			return res.json(); | ||||
| 		}) | ||||
| 		.catch((err) => { | ||||
| 			console.log(err); | ||||
| 			error = `LiteLLM: ${err?.error?.message ?? 'Network Problem'}`; | ||||
| 			return []; | ||||
| 		}); | ||||
| 
 | ||||
| 	if (error) { | ||||
| 		throw error; | ||||
| 	} | ||||
| 
 | ||||
| 	return res; | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek