Commit
·
3ab2a6e
1
Parent(s):
7ba08c6
updated
Browse files- .gitignore +8 -0
- .vscode/settings.json +3 -0
- README.md +36 -7
- app.py +104 -0
- chart-library/max_tokens_plot.png +0 -0
- data/data-sources/anthropic/anthropic-models.csv +0 -0
- data/data-sources/cohere/cohere-models.csv +3 -0
- data/data-sources/data-sources.md +16 -0
- data/data-sources/google/google-models.csv +6 -0
- data/data-sources/openai/max-tokens-and-prices.csv +12 -0
- data/data-sources/openai/openai-models-by-max-tokens-no-snapshots.csv +12 -0
- data/data-sources/openai/openai-models-by-max-tokens.csv +41 -0
- data/max-tokens-by-model.csv +26 -0
- data/table.txt +27 -0
- requirements.txt +3 -0
.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
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
-
colorTo:
|
6 |
sdk: streamlit
|
7 |
-
sdk_version: 1.
|
8 |
app_file: app.py
|
9 |
pinned: false
|
10 |
-
short_description: Max output tokens by model over time
|
11 |
---
|
12 |
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|