forked from phoenix/litellm-mirror
(ui) view spend per user
This commit is contained in:
parent
2692afca75
commit
3d56d8ee02
1 changed files with 53 additions and 1 deletions
54
ui/admin.py
54
ui/admin.py
|
@ -238,7 +238,59 @@ def spend_per_key():
|
|||
|
||||
|
||||
def spend_per_user():
|
||||
pass
|
||||
import streamlit as st
|
||||
import requests
|
||||
|
||||
# Check if the necessary configuration is available
|
||||
if (
|
||||
st.session_state.get("api_url", None) is not None
|
||||
and st.session_state.get("proxy_key", None) is not None
|
||||
):
|
||||
# Make the GET request
|
||||
try:
|
||||
complete_url = ""
|
||||
if isinstance(st.session_state["api_url"], str) and st.session_state[
|
||||
"api_url"
|
||||
].endswith("/"):
|
||||
complete_url = f"{st.session_state['api_url']}/spend/users"
|
||||
else:
|
||||
complete_url = f"{st.session_state['api_url']}/spend/users"
|
||||
response = requests.get(
|
||||
complete_url,
|
||||
headers={"Authorization": f"Bearer {st.session_state['proxy_key']}"},
|
||||
)
|
||||
# Check if the request was successful
|
||||
if response.status_code == 200:
|
||||
spend_per_user = response.json()
|
||||
# Create DataFrame
|
||||
spend_df = pd.DataFrame(spend_per_user)
|
||||
|
||||
# Display the spend per key as a graph
|
||||
st.header("Spend ($) per User:")
|
||||
top_10_df = spend_df.nlargest(10, "spend")
|
||||
fig = px.bar(
|
||||
top_10_df,
|
||||
x="user_id",
|
||||
y="spend",
|
||||
title="Top 10 Spend per Key",
|
||||
height=550, # Adjust the height
|
||||
width=1200, # Adjust the width)
|
||||
# hover_data=["token", "spend", "user_id", "team_id"],
|
||||
)
|
||||
st.plotly_chart(fig)
|
||||
|
||||
# Display the spend per key as a table
|
||||
st.write("Spend per User - Full Table:")
|
||||
st.table(spend_df)
|
||||
|
||||
else:
|
||||
st.error(f"Failed to get models. Status code: {response.status_code}")
|
||||
except Exception as e:
|
||||
st.error(f"An error occurred while requesting models: {e}")
|
||||
else:
|
||||
st.warning(
|
||||
f"Please configure the Proxy Endpoint and Proxy Key on the Proxy Setup page. Currently set Proxy Endpoint: {st.session_state.get('api_url', None)} and Proxy Key: {st.session_state.get('proxy_key', None)}"
|
||||
)
|
||||
|
||||
|
||||
def create_key():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue