seawolf2357's picture
Update app.py
8aa59a4 verified
import gradio as gr
import pandas as pd
# 데이터를 pandas DataFrame으로 변환
mockData = [
{
'provider': 'OpenAI',
'uri': 'https://openai.com/api/pricing/',
'models': [
{'name': 'GPT-4o', 'inputPrice': 5.0, 'outputPrice': 15.0},
{'name': 'GPT-4 (8K)', 'inputPrice': 30.0, 'outputPrice': 60.0},
{'name': 'GPT-4 Turbo', 'inputPrice': 10.0, 'outputPrice': 30.0},
{'name': 'GPT-3.5-turbo', 'inputPrice': 0.5, 'outputPrice': 1.5},
],
},
{
'provider': 'Anthropic',
'uri': 'https://www.anthropic.com/pricing',
'models': [
{'name': 'Claude 3 (Opus)', 'inputPrice': 15.0, 'outputPrice': 75.0},
{'name': 'Claude 3.5 (Sonnet)', 'inputPrice': 3.0, 'outputPrice': 15.0},
{'name': 'Claude 3 (Haiku)', 'inputPrice': 0.25, 'outputPrice': 1.25},
],
},
{
'provider': 'Google',
'uri': 'https://ai.google.dev/pricing?hl=en',
'models': [
{'name': 'Gemini 1.5 Pro', 'inputPrice': 3.5, 'outputPrice': 7.0},
{'name': 'Gemini 1.5 Flash', 'inputPrice': 0.35, 'outputPrice': 0.7},
],
},
{
'provider': 'Cohere',
'uri': 'https://cohere.com/pricing',
'models': [
{'name': 'Command R+', 'inputPrice': 3.0, 'outputPrice': 15.0},
{'name': 'Command R', 'inputPrice': 0.5, 'outputPrice': 1.5},
],
},
{
'provider': 'Mistral',
'uri': 'https://docs.mistral.ai/platform/pricing',
'models': [
{'name': 'mistral-large-2402', 'inputPrice': 4.0, 'outputPrice': 12.0},
{'name': 'codestral-2405', 'inputPrice': 1.0, 'outputPrice': 3.0},
{'name': 'Mixtral 8x22B', 'inputPrice': 2.0, 'outputPrice': 6.0},
{'name': 'Mixtral 8x7B', 'inputPrice': 0.7, 'outputPrice': 0.7},
],
},
{
'provider': 'Deepspeek',
'uri': 'https://platform.deepseek.com/api-docs/pricing/',
'models': [
{'name': 'deepseek-chat', 'inputPrice': 0.14, 'outputPrice': 0.28},
{'name': 'deepseek-coder', 'inputPrice': 0.14, 'outputPrice': 0.28},
],
},
{
'provider': 'Anyscale',
'uri': 'https://www.anyscale.com/pricing-detail',
'models': [
{'name': 'Mixtral 8x7B', 'inputPrice': 0.5, 'outputPrice': 0.5},
{'name': 'Llama 3 70b', 'inputPrice': 1.0, 'outputPrice': 1.0},
],
},
{
'provider': 'Together.AI',
'uri': 'https://www.together.ai/pricing',
'models': [
{'name': 'Mixtral 8x7B', 'inputPrice': 0.6, 'outputPrice': 0.6},
{'name': 'Llama 3 70b', 'inputPrice': 0.9, 'outputPrice': 0.9},
],
},
{
'provider': 'Replicate',
'uri': 'https://replicate.com/pricing',
'models': [
{'name': 'Llama 3 70b', 'inputPrice': 0.65, 'outputPrice': 2.75},
{'name': 'Mixtral 8x7B', 'inputPrice': 0.30, 'outputPrice': 1.00},
],
},
{
'provider': 'IBM WatsonX',
'uri': 'https://www.ibm.com/products/watsonx-ai/foundation-models',
'models': [
{'name': 'Llama 3 70b', 'inputPrice': 1.80, 'outputPrice': 1.80},
],
},
{
'provider': 'Groq',
'uri': 'https://wow.groq.com/',
'models': [
{'name': 'Llama 3 70b', 'inputPrice': 0.59, 'outputPrice': 0.79},
{'name': 'Mixtral 8x7B', 'inputPrice': 0.24, 'outputPrice': 0.24},
],
},
{
'provider': 'Fireworks',
'uri': 'https://fireworks.ai/pricing',
'models': [
{'name': 'Llama 3 70b', 'inputPrice': 0.90, 'outputPrice': 0.90},
{'name': 'Mixtral 8x7B', 'inputPrice': 0.50, 'outputPrice': 0.50},
],
},
{
'provider': '01.ai',
'uri': 'https://platform.01.ai/docs#models-and-pricing',
'models': [
{'name': 'Yi-Large', 'inputPrice': 3.00, 'outputPrice': 3.00},
],
},
{
'provider': 'Perplexity',
'uri': 'https://docs.perplexity.ai/docs/pricing',
'models': [
{'name': 'Llama 3 70b', 'inputPrice': 1.0, 'outputPrice': 1.0},
{'name': 'Mixtral 8x7B', 'inputPrice': 0.60, 'outputPrice': 0.60},
],
},
{
'provider': 'OpenFreeAI',
'uri': 'https://discord.gg/openfreeai',
'models': [
{'name': 'kAI', 'inputPrice': 0, 'outputPrice': 0},
{'name': 'Llama 3 70b', 'inputPrice': 0, 'outputPrice': 0},
{'name': 'Llama 3 8b', 'inputPrice': 0, 'outputPrice': 0},
{'name': 'Mixtral 8x7B', 'inputPrice': 0, 'outputPrice': 0},
],
},
{
'provider': 'Writer',
'uri': 'https://dev.writer.com/home/pricing',
'models': [
{'name': 'Palmyra X 003', 'inputPrice': 7.50, 'outputPrice': 22.50},
{'name': 'Palmyra X 32k', 'inputPrice': 1.0, 'outputPrice': 2.0},
{'name': 'Palmyra X 002', 'inputPrice': 1.0, 'outputPrice': 2.0},
{'name': 'Palmyra X 002 32k', 'inputPrice': 1.0, 'outputPrice': 2.0}
],
}
]
# DataFrame으로 변환
data = []
for provider in mockData:
for model in provider['models']:
total_price = model['inputPrice'] + model['outputPrice']
data.append({
'Provider': provider['provider'],
'URI': provider['uri'],
'Model': model['name'],
'Total Price': total_price,
'Input Price': model['inputPrice'],
'Output Price': model['outputPrice']
})
df = pd.DataFrame(data)
# Function to sort the data based on a column
def sort_data(column, ascending=True):
return df.sort_values(by=column, ascending=ascending)
# Gradio interface to display and interact with the data
def update_table(column, ascending):
sorted_df = sort_data(column, ascending)
return sorted_df
with gr.Blocks() as demo:
gr.Markdown("# Comparison of LLM (Large Language Model) Costs Based on One Million Tokens")
column = gr.Dropdown(label="Select column to sort by", choices=df.columns.tolist(), value="Total Price")
ascending = gr.Checkbox(label="Ascending order", value=True)
sort_button = gr.Button("Sort")
table = gr.Dataframe(df)
sort_button.click(fn=update_table, inputs=[column, ascending], outputs=table)
# Run the application
if __name__ == "__main__":
demo.launch()