(UI - View SpendLogs Table) (#7842)

* litellm log messages / responses

* add messages/response to schema.prisma

* add support for logging messages / responses in DB

* test_spend_logs_payload_with_prompts_enabled

* _get_messages_for_spend_logs_payload

* ui_view_spend_logs endpoint

* add tanstack and moment

* add uiSpendLogsCall

* ui view logs table

* ui view spendLogs table

* ui_view_spend_logs

* fix code quality

* test_spend_logs_payload_with_prompts_enabled

* _get_messages_for_spend_logs_payload

* test_spend_logs_payload_with_prompts_enabled

* test_spend_logs_payload_with_prompts_enabled

* ui view spend logs

* minor ui fix

* ui - update leftnav

* ui - clean up ui

* fix leftnav

* ui fix navbar

* ui fix moving chat ui tab
This commit is contained in:
Ishaan Jaff 2025-01-17 18:53:45 -08:00 committed by GitHub
parent a99deb6d0a
commit d3c2f4331a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 795 additions and 89 deletions

View file

@ -1513,6 +1513,54 @@ export const userSpendLogsCall = async (
throw error;
}
};
export const uiSpendLogsCall = async (
accessToken: String,
api_key?: string,
user_id?: string,
request_id?: string,
start_date?: string,
end_date?: string,
) => {
try {
// Construct base URL
let url = proxyBaseUrl ? `${proxyBaseUrl}/spend/logs/ui` : `/spend/logs/ui`;
// Add query parameters if they exist
const queryParams = new URLSearchParams();
if (api_key) queryParams.append('api_key', api_key);
if (user_id) queryParams.append('user_id', user_id);
if (request_id) queryParams.append('request_id', request_id);
if (start_date) queryParams.append('start_date', start_date);
if (end_date) queryParams.append('end_date', end_date);
// Append query parameters to URL if any exist
const queryString = queryParams.toString();
if (queryString) {
url += `?${queryString}`;
}
const response = await fetch(url, {
method: "GET",
headers: {
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
});
if (!response.ok) {
const errorData = await response.text();
handleError(errorData);
throw new Error("Network response was not ok");
}
const data = await response.json();
console.log("Spend Logs UI Response:", data);
return data;
} catch (error) {
console.error("Failed to fetch spend logs:", error);
throw error;
}
};
export const adminSpendLogsCall = async (accessToken: String) => {
try {