danielrosehill commited on
Commit
3ab2a6e
·
1 Parent(s): 7ba08c6
.gitignore ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ .env
5
+ .venv
6
+ env/
7
+ venv/
8
+ .streamlit/
.vscode/settings.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "window.title": "${dirty}${activeEditorShort}${separator}${rootName}${separator}${profileName}${separator}${appName}${separator}[Branch: main]"
3
+ }
README.md CHANGED
@@ -1,13 +1,42 @@
1
  ---
2
- title: Max Output Tokens Analysis 0225
3
- emoji: 🏢
4
- colorFrom: yellow
5
- colorTo: yellow
6
  sdk: streamlit
7
- sdk_version: 1.42.0
8
  app_file: app.py
9
  pinned: false
10
- short_description: Max output tokens by model over time
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Max Output Tokens Analysis
3
+ emoji: 📊
4
+ colorFrom: blue
5
+ colorTo: green
6
  sdk: streamlit
7
+ sdk_version: 1.28.0
8
  app_file: app.py
9
  pinned: false
 
10
  ---
11
 
12
+ # Max Output Tokens Analysis
13
+
14
+ This Streamlit app visualizes the evolution of maximum output tokens across different AI companies and their language models. The visualization includes:
15
+
16
+ 1. An interactive line chart showing how max output tokens have evolved over time for different companies
17
+ 2. A detailed data table showing the maximum output tokens for each model
18
+
19
+ ## Data
20
+
21
+ The data includes information about models from:
22
+ - OpenAI
23
+ - Anthropic
24
+ - Google
25
+ - Cohere
26
+ - Deep Seek
27
+
28
+ Each model entry contains:
29
+ - Model name
30
+ - Maximum output tokens
31
+ - Company
32
+ - Launch date
33
+
34
+ ## Usage
35
+
36
+ The chart is interactive - you can:
37
+ - Hover over lines to see detailed information
38
+ - Click and drag to zoom
39
+ - Double click to reset the view
40
+ - Use the legend to toggle different companies
41
+
42
+ The data table below the chart can be sorted by clicking on column headers.
app.py ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import plotly.express as px
4
+
5
+ # Page config
6
+ st.set_page_config(
7
+ page_title="Max Output Tokens Analysis",
8
+ layout="wide"
9
+ )
10
+
11
+ # Load data
12
+ @st.cache_data
13
+ def load_data():
14
+ df = pd.read_csv('data/max-tokens-by-model.csv')
15
+ df['launch_date'] = pd.to_datetime(df['launch_date'])
16
+ return df
17
+
18
+ df = load_data()
19
+
20
+ # Title
21
+ st.title("LLM Max Output Tokens Analysis")
22
+
23
+ # Company selection
24
+ companies = sorted(df['company'].unique())
25
+ selected_companies = st.multiselect(
26
+ "Select companies to display:",
27
+ options=companies,
28
+ default=companies,
29
+ key='company_filter'
30
+ )
31
+
32
+ # Filter data based on selection
33
+ filtered_df = df[df['company'].isin(selected_companies)]
34
+
35
+ # Create the evolution chart
36
+ fig = px.line(filtered_df,
37
+ x='launch_date',
38
+ y='max_output_tokens',
39
+ color='company',
40
+ hover_data=['model_name', 'max_output_tokens'],
41
+ title='Evolution of Max Output Tokens by Company',
42
+ labels={
43
+ 'launch_date': 'Launch Date',
44
+ 'max_output_tokens': 'Max Output Tokens',
45
+ 'company': 'Company'
46
+ },
47
+ markers=True) # Add markers to make trends clearer
48
+
49
+ fig.update_layout(
50
+ hovermode='x unified',
51
+ xaxis_title="Launch Date",
52
+ yaxis_title="Max Output Tokens",
53
+ yaxis_type="log", # Using log scale for better visualization
54
+ height=600, # Make chart taller
55
+ showlegend=True,
56
+ legend=dict(
57
+ yanchor="top",
58
+ y=0.99,
59
+ xanchor="left",
60
+ x=0.01
61
+ ),
62
+ margin=dict(l=20, r=20, t=40, b=20)
63
+ )
64
+
65
+ fig.update_traces(
66
+ line=dict(width=2), # Make lines thicker
67
+ marker=dict(size=8) # Make markers more visible
68
+ )
69
+
70
+ # Display the chart
71
+ st.plotly_chart(fig, use_container_width=True)
72
+
73
+ # Display the data table
74
+ st.subheader("Max Output Tokens by Model")
75
+
76
+ # Prepare the data with better formatting
77
+ display_df = (
78
+ filtered_df[['model_name', 'company', 'max_output_tokens', 'launch_date']]
79
+ .sort_values('max_output_tokens', ascending=False)
80
+ .assign(
81
+ launch_date=lambda x: x['launch_date'].dt.strftime('%Y-%m-%d'),
82
+ max_output_tokens=lambda x: x['max_output_tokens'].apply(lambda v: f"{v:,}")
83
+ )
84
+ .rename(columns={
85
+ 'model_name': 'Model Name',
86
+ 'company': 'Company',
87
+ 'max_output_tokens': 'Max Output Tokens',
88
+ 'launch_date': 'Launch Date'
89
+ })
90
+ )
91
+
92
+ # Display the styled table
93
+ st.dataframe(
94
+ display_df,
95
+ use_container_width=True,
96
+ hide_index=True
97
+ )
98
+
99
+ # Attribution
100
+ st.markdown("---")
101
+ st.markdown(
102
+ "By: [Daniel Rosehill](https://danielrosehill.com) | "
103
+ "Data sourced from public sources on February 8, 2025"
104
+ )
chart-library/max_tokens_plot.png ADDED
data/data-sources/anthropic/anthropic-models.csv ADDED
File without changes
data/data-sources/cohere/cohere-models.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ model-name,max-output-tokens
2
+ command-r7b-12-2024,4000
3
+ command-r-plus-08-2024,4000
data/data-sources/data-sources.md ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Data Sources
2
+
3
+ Feb 08
4
+
5
+ ## Google / Gemini
6
+
7
+ Gemini API Docs, 08-Feb-2025
8
+
9
+ https://ai.google.dev/gemini-api/docs/models/gemini
10
+
11
+ ## OpenAI
12
+
13
+ OpenAI Docs, 08-Feb
14
+
15
+ https://platform.openai.com/docs/models
16
+
data/data-sources/google/google-models.csv ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ model-name,max-output-tokens
2
+ Gemini 2.0 Flash,"8,192"
3
+ Gemini 2.0 Flash-Lite Preview,"8,192"
4
+ Gemini 1.5 Flash,"8,192"
5
+ Gemini 1.5 Flash 8B,"8,192"
6
+ Gemini 1.5 Pro,"8,192"
data/data-sources/openai/max-tokens-and-prices.csv ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model name,max output tokens
2
+ gpt-4o,16384
3
+ chatgpt-4o-latest,16384
4
+ gpt-4o-mini,16384
5
+ o1,100000
6
+ o1-mini,65536
7
+ o1-preview,32768
8
+ gpt-4-turbo,4096
9
+ gpt-4-turbo-preview,4096
10
+ gpt-4,8192
11
+ gpt-4-0613,8192
12
+ gpt-4-0314,8192
data/data-sources/openai/openai-models-by-max-tokens-no-snapshots.csv ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model name,max output tokens
2
+ gpt-4o,16384
3
+ chatgpt-4o-latest,16384
4
+ gpt-4o-mini,16384
5
+ o1,100000
6
+ o1-mini,65536
7
+ o1-preview,32768
8
+ gpt-4-turbo,4096
9
+ gpt-4-turbo-preview,4096
10
+ gpt-4,8192
11
+ gpt-4-0613,8192
12
+ gpt-4-0314,8192
data/data-sources/openai/openai-models-by-max-tokens.csv ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model name,max output tokens
2
+ gpt-4o,16384
3
+ gpt-4o-2024-08-06,16384
4
+ gpt-4o-2024-11-20,16384
5
+ gpt-4o-2024-08-06,16384
6
+ gpt-4o-2024-05-13,4096
7
+ chatgpt-4o-latest,16384
8
+ gpt-4o-mini,16384
9
+ gpt-4o-mini-2024-07-18,16384
10
+ gpt-4o-mini-2024-07-18,16384
11
+ o1,100000
12
+ o1-2024-12-17,100000
13
+ o1-mini,65536
14
+ o1-mini-2024-09-12,65536
15
+ o1-mini-2024-09-12,65536
16
+ o1-preview,32768
17
+ o1-preview-2024-09-12,32768
18
+ o1-preview-2024-09-12,32768
19
+ gpt-4o-realtime-preview,4096
20
+ gpt-4o-realtime-preview-2024-12-17,4096
21
+ gpt-4o-realtime-preview-2024-10-01,4096
22
+ gpt-4o-mini-realtime-preview,4096
23
+ gpt-4o-mini-realtime-preview-2024-12-17,4096
24
+ gpt-4o-mini-realtime-preview-2024-12-17,4096
25
+ gpt-4o-audio-preview,16384
26
+ gpt-4o-audio-preview-2024-12-17,16384
27
+ gpt-4o-audio-preview-2024-10-01,16384
28
+ gpt-4o-mini-audio-preview,16384
29
+ gpt-4o-mini-audio-preview-2024-12-17,16384
30
+ gpt-4o-mini-audio-preview-2024-12-17,16384
31
+ gpt-4-turbo,4096
32
+ gpt-4-turbo-2024-04-09,4096
33
+ gpt-4-turbo-2024-04-09,4096
34
+ gpt-4-turbo-preview,4096
35
+ gpt-4-0125-preview,4096
36
+ gpt-4-0125-preview,4096
37
+ gpt-4-1106-preview,4096
38
+ gpt-4,8192
39
+ gpt-4-0613,8192
40
+ gpt-4-0613,8192
41
+ gpt-4-0314,8192
data/max-tokens-by-model.csv ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model_name,max_output_tokens,company,launch_date,max_input_tokens,max_output_as_percentage_of_max_input,release-type
2
+ Claude 3.5 Sonnet,8192,Anthropic,2024-06-20,200000,4.10,Fixed
3
+ Claude 3.5 Haiku,8192,Anthropic,2024-10-22,200000,4.10,Fixed
4
+ Claude 3 Opus,4096,Anthropic,2024-03-14,200000,2.05,Fixed
5
+ Claude 3 Sonnet,4096,Anthropic,2024-03-14,200000,2.05,Fixed
6
+ Claude 3 Haiku,4096,Anthropic,2024-03-07,200000,2.05,Fixed
7
+ command-r7b-12-2024,4000,Cohere,2024-12-01,128000,3.13,Fixed
8
+ command-r-plus-08-2024,4000,Cohere,2024-08-01,128000,3.13,Fixed
9
+ Gemini 2.0 Flash,8192,Google,2025-02-05,1000000,0.82,Fixed
10
+ Gemini 2.0 Flash-Lite Preview,8192,Google,2025-02-05,1000000,0.82,Fixed
11
+ Gemini 1.5 Flash,8192,Google,2024-05-14,1000000,0.82,Fixed
12
+ Gemini 1.5 Flash 8B,8192,Google,2024-10-08,1000000,0.82,Fixed
13
+ Gemini 1.5 Pro,8192,Google,2024-05-23,1000000,0.82,Fixed
14
+ gpt-4o,16384,OpenAI,2024-11-06,128000,12.80,Fixed
15
+ chatgpt-4o-latest,16384,OpenAI,2024-11-06,128000,12.80,Fixed
16
+ gpt-4o-mini,16384,OpenAI,2024-11-06,128000,12.80,Fixed
17
+ o1,100000,OpenAI,2024-11-06,1000000,10.00,Fixed
18
+ o1-mini,65536,OpenAI,2024-11-06,1000000,6.55,Fixed
19
+ o1-preview,32768,OpenAI,2024-11-06,1000000,3.28,Fixed
20
+ gpt-4-turbo,4096,OpenAI,2023-11-06,128000,3.20,Fixed
21
+ gpt-4-turbo-preview,4096,OpenAI,2023-11-06,128000,3.20,Fixed
22
+ gpt-4,8192,OpenAI,2023-03-14,8192,100.00,Fixed
23
+ gpt-4-0613,8192,OpenAI,2023-06-13,8192,100.00,Fixed
24
+ gpt-4-0314,8192,OpenAI,2023-03-14,8192,100.00,Fixed
25
+ Deep Seek V3,8000,Deep Seek,2025-01-20,32768,24.41,Rolling
26
+ Deep Seek Reasoner,32768,Deep Seek,2025-01-20,32768,100,Rolling
data/table.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ | model_name | max_output_tokens | company | launch_date | max_input_tokens | max_output_as_percentage_of_max_input | release-type |
2
+ |:------------------------------|--------------------:|:----------|:--------------------|-------------------:|----------------------------------------:|:---------------|
3
+ | o1 | 100000 | OpenAI | 2024-11-06 00:00:00 | 1000000 | 10 | Fixed |
4
+ | o1-mini | 65536 | OpenAI | 2024-11-06 00:00:00 | 1000000 | 6.55 | Fixed |
5
+ | Deep Seek Reasoner | 32768 | Deep Seek | 2025-01-20 00:00:00 | 32768 | 100 | Rolling |
6
+ | o1-preview | 32768 | OpenAI | 2024-11-06 00:00:00 | 1000000 | 3.28 | Fixed |
7
+ | chatgpt-4o-latest | 16384 | OpenAI | 2024-11-06 00:00:00 | 128000 | 12.8 | Fixed |
8
+ | gpt-4o-mini | 16384 | OpenAI | 2024-11-06 00:00:00 | 128000 | 12.8 | Fixed |
9
+ | gpt-4o | 16384 | OpenAI | 2024-11-06 00:00:00 | 128000 | 12.8 | Fixed |
10
+ | Gemini 2.0 Flash | 8192 | Google | 2025-02-08 00:00:00 | 1000000 | 0.82 | Fixed |
11
+ | Gemini 2.0 Flash-Lite Preview | 8192 | Google | 2025-02-08 00:00:00 | 1000000 | 0.82 | Fixed |
12
+ | gpt-4-0314 | 8192 | OpenAI | 2023-03-14 00:00:00 | 8192 | 100 | Fixed |
13
+ | gpt-4-0613 | 8192 | OpenAI | 2023-06-13 00:00:00 | 8192 | 100 | Fixed |
14
+ | gpt-4 | 8192 | OpenAI | 2023-03-14 00:00:00 | 8192 | 100 | Fixed |
15
+ | Claude 3.5 Sonnet | 8192 | Anthropic | 2024-06-20 00:00:00 | 200000 | 4.1 | Fixed |
16
+ | Claude 3.5 Haiku | 8192 | Anthropic | 2024-10-22 00:00:00 | 200000 | 4.1 | Fixed |
17
+ | Gemini 1.5 Pro | 8192 | Google | 2025-02-08 00:00:00 | 1000000 | 0.82 | Fixed |
18
+ | Gemini 1.5 Flash 8B | 8192 | Google | 2025-02-08 00:00:00 | 1000000 | 0.82 | Fixed |
19
+ | Gemini 1.5 Flash | 8192 | Google | 2025-02-08 00:00:00 | 1000000 | 0.82 | Fixed |
20
+ | Deep Seek V3 | 8000 | Deep Seek | 2025-01-20 00:00:00 | 32768 | 24.41 | Rolling |
21
+ | Claude 3 Haiku | 4096 | Anthropic | 2024-03-07 00:00:00 | 200000 | 2.05 | Fixed |
22
+ | Claude 3 Opus | 4096 | Anthropic | 2024-03-14 00:00:00 | 200000 | 2.05 | Fixed |
23
+ | gpt-4-turbo | 4096 | OpenAI | 2023-11-06 00:00:00 | 128000 | 3.2 | Fixed |
24
+ | gpt-4-turbo-preview | 4096 | OpenAI | 2023-11-06 00:00:00 | 128000 | 3.2 | Fixed |
25
+ | Claude 3 Sonnet | 4096 | Anthropic | 2024-03-14 00:00:00 | 200000 | 2.05 | Fixed |
26
+ | command-r-plus-08-2024 | 4000 | Cohere | 2024-08-01 00:00:00 | 128000 | 3.13 | Fixed |
27
+ | command-r7b-12-2024 | 4000 | Cohere | 2024-12-01 00:00:00 | 128000 | 3.13 | Fixed |
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ streamlit
2
+ pandas
3
+ plotly