Spaces:
Running
Running
import streamlit as st | |
def get_openai_token_usage(metadata: dict, model_info: dict): | |
input_tokens = metadata["token_usage"]["prompt_tokens"] | |
output_tokens = metadata["token_usage"]["completion_tokens"] | |
cost = ( | |
input_tokens * 1e-6 * model_info["cost"]["pmi"] | |
+ output_tokens * 1e-6 * model_info["cost"]["pmo"] | |
) | |
return { | |
"input_tokens": input_tokens, | |
"output_tokens": output_tokens, | |
"cost": cost, | |
} | |
def get_anthropic_token_usage(metadata: dict, model_info: dict): | |
input_tokens = metadata["usage"]["input_tokens"] | |
output_tokens = metadata["usage"]["output_tokens"] | |
cost = ( | |
input_tokens * 1e-6 * model_info["cost"]["pmi"] | |
+ output_tokens * 1e-6 * model_info["cost"]["pmo"] | |
) | |
return { | |
"input_tokens": input_tokens, | |
"output_tokens": output_tokens, | |
"cost": cost, | |
} | |
def get_together_token_usage(metadata: dict, model_info: dict): | |
input_tokens = metadata["token_usage"]["prompt_tokens"] | |
output_tokens = metadata["token_usage"]["completion_tokens"] | |
cost = ( | |
input_tokens * 1e-6 * model_info["cost"]["pmi"] | |
+ output_tokens * 1e-6 * model_info["cost"]["pmo"] | |
) | |
return { | |
"input_tokens": input_tokens, | |
"output_tokens": output_tokens, | |
"cost": cost, | |
} | |
def get_token_usage(metadata: dict, model_info: dict, provider: str): | |
match provider: | |
case "OpenAI": | |
return get_openai_token_usage(metadata, model_info) | |
case "Anthropic": | |
return get_anthropic_token_usage(metadata, model_info) | |
case "Together": | |
return get_together_token_usage(metadata, model_info) | |
case _: | |
raise ValueError() | |
def display_api_usage(response, model_info, provider: str): | |
with st.container(border=True): | |
st.write("API Usage") | |
token_usage = get_token_usage( | |
response["aimessage"].response_metadata, model_info, provider | |
) | |
col1, col2, col3 = st.columns(3) | |
with col1: | |
st.metric("Input Tokens", token_usage["input_tokens"]) | |
with col2: | |
st.metric("Output Tokens", token_usage["output_tokens"]) | |
with col3: | |
st.metric("Cost", f"${token_usage['cost']:.4f}") | |
with st.expander("Response Metadata"): | |
st.warning(response["aimessage"].response_metadata) | |