index.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import { LITELLM_API_BASE_URL } from '$lib/constants';
  2. export const getLiteLLMModels = async (token: string = '') => {
  3. let error = null;
  4. const res = await fetch(`${LITELLM_API_BASE_URL}/v1/models`, {
  5. method: 'GET',
  6. headers: {
  7. Accept: 'application/json',
  8. 'Content-Type': 'application/json',
  9. ...(token && { authorization: `Bearer ${token}` })
  10. }
  11. })
  12. .then(async (res) => {
  13. if (!res.ok) throw await res.json();
  14. return res.json();
  15. })
  16. .catch((err) => {
  17. console.log(err);
  18. error = `LiteLLM: ${err?.error?.message ?? 'Network Problem'}`;
  19. return [];
  20. });
  21. if (error) {
  22. throw error;
  23. }
  24. const models = Array.isArray(res) ? res : res?.data ?? null;
  25. return models
  26. ? models
  27. .map((model) => ({
  28. id: model.id,
  29. name: model.name ?? model.id,
  30. external: true,
  31. source: 'litellm'
  32. }))
  33. .sort((a, b) => {
  34. return a.name.localeCompare(b.name);
  35. })
  36. : models;
  37. };
  38. export const getLiteLLMModelInfo = async (token: string = '') => {
  39. let error = null;
  40. const res = await fetch(`${LITELLM_API_BASE_URL}/model/info`, {
  41. method: 'GET',
  42. headers: {
  43. Accept: 'application/json',
  44. 'Content-Type': 'application/json',
  45. ...(token && { authorization: `Bearer ${token}` })
  46. }
  47. })
  48. .then(async (res) => {
  49. if (!res.ok) throw await res.json();
  50. return res.json();
  51. })
  52. .catch((err) => {
  53. console.log(err);
  54. error = `LiteLLM: ${err?.error?.message ?? 'Network Problem'}`;
  55. return [];
  56. });
  57. if (error) {
  58. throw error;
  59. }
  60. const models = Array.isArray(res) ? res : res?.data ?? null;
  61. return models;
  62. };
  63. type AddLiteLLMModelForm = {
  64. name: string;
  65. model: string;
  66. api_base: string;
  67. api_key: string;
  68. rpm: string;
  69. max_tokens: string;
  70. };
  71. export const addLiteLLMModel = async (token: string = '', payload: AddLiteLLMModelForm) => {
  72. let error = null;
  73. const res = await fetch(`${LITELLM_API_BASE_URL}/model/new`, {
  74. method: 'POST',
  75. headers: {
  76. Accept: 'application/json',
  77. 'Content-Type': 'application/json',
  78. ...(token && { authorization: `Bearer ${token}` })
  79. },
  80. body: JSON.stringify({
  81. model_name: payload.name,
  82. litellm_params: {
  83. model: payload.model,
  84. ...(payload.api_base === '' ? {} : { api_base: payload.api_base }),
  85. ...(payload.api_key === '' ? {} : { api_key: payload.api_key }),
  86. ...(isNaN(parseInt(payload.rpm)) ? {} : { rpm: parseInt(payload.rpm) }),
  87. ...(payload.max_tokens === '' ? {} : { max_tokens: payload.max_tokens })
  88. }
  89. })
  90. })
  91. .then(async (res) => {
  92. if (!res.ok) throw await res.json();
  93. return res.json();
  94. })
  95. .catch((err) => {
  96. console.log(err);
  97. error = `LiteLLM: ${err?.error?.message ?? 'Network Problem'}`;
  98. return [];
  99. });
  100. if (error) {
  101. throw error;
  102. }
  103. return res;
  104. };
  105. export const deleteLiteLLMModel = async (token: string = '', id: string) => {
  106. let error = null;
  107. const res = await fetch(`${LITELLM_API_BASE_URL}/model/delete`, {
  108. method: 'POST',
  109. headers: {
  110. Accept: 'application/json',
  111. 'Content-Type': 'application/json',
  112. ...(token && { authorization: `Bearer ${token}` })
  113. },
  114. body: JSON.stringify({
  115. id: id
  116. })
  117. })
  118. .then(async (res) => {
  119. if (!res.ok) throw await res.json();
  120. return res.json();
  121. })
  122. .catch((err) => {
  123. console.log(err);
  124. error = `LiteLLM: ${err?.error?.message ?? 'Network Problem'}`;
  125. return [];
  126. });
  127. if (error) {
  128. throw error;
  129. }
  130. return res;
  131. };