@@ -7,9 +7,9 @@ class TestModelsTokens:
77 def test_openai_tokens (self ):
88 """Test that the 'openai' provider exists and its tokens are valid positive integers."""
99 openai_models = models_tokens .get ("openai" )
10- assert openai_models is not None , (
11- "'openai' key should be present in models_tokens"
12- )
10+ assert (
11+ openai_models is not None
12+ ), "'openai' key should be present in models_tokens"
1313 for model , token in openai_models .items ():
1414 assert isinstance (model , str ), "Model name should be a string"
1515 assert isinstance (token , int ), "Token limit should be an integer"
@@ -30,19 +30,50 @@ def test_google_providers(self):
3030 assert google_genai is not None , "'google_genai' key should be present"
3131 assert google_vertexai is not None , "'google_vertexai' key should be present"
3232 # Check a specific key from google_genai
33- assert "gemini-pro" in google_genai , (
34- "' gemini-pro' should be in google_genai models"
35- )
33+ assert (
34+ "gemini-pro" in google_genai
35+ ), "'gemini-pro' should be in google_genai models"
3636 # Validate token values types
3737 for provider in [google_genai , google_vertexai ]:
3838 for token in provider .values ():
3939 assert isinstance (token , int ), "Token limit must be an integer"
4040
41+ def test_gemini_2_5_models_are_registered (self ):
42+ """Gemini 2.5 / flash-latest must be in the table so they are not truncated to 8192.
43+
44+ #1121: an unknown model silently falls back to an 8192-token window.
45+ google_genai/gemini-2.5-flash is the reported case; gemini-flash-latest
46+ is the current flash alias. Both have a 1M input context.
47+ """
48+ google_genai = models_tokens ["google_genai" ]
49+ google_vertexai = models_tokens ["google_vertexai" ]
50+
51+ for model in (
52+ "gemini-2.5-flash" ,
53+ "gemini-2.5-flash-latest" ,
54+ "gemini-2.5-flash-lite" ,
55+ "gemini-2.5-pro" ,
56+ "gemini-flash-latest" ,
57+ ):
58+ assert (
59+ google_genai .get (model ) == 1000000
60+ ), f"Expected 1M context for { model } in google_genai"
61+
62+ for model in (
63+ "gemini-2.5-flash" ,
64+ "gemini-2.5-flash-lite" ,
65+ "gemini-2.5-pro" ,
66+ "gemini-flash-latest" ,
67+ ):
68+ assert (
69+ google_vertexai .get (model ) == 1048576
70+ ), f"Expected 1M context for { model } in google_vertexai"
71+
4172 def test_non_existent_provider (self ):
4273 """Test that a non-existent provider returns None."""
43- assert models_tokens . get ( "non_existent" ) is None , (
44- "Non-existent provider should return None"
45- )
74+ assert (
75+ models_tokens . get ( "non_existent" ) is None
76+ ), "Non-existent provider should return None"
4677
4778 def test_total_model_keys (self ):
4879 """Test that the total number of models across all providers is above an expected count."""
@@ -59,136 +90,136 @@ def test_non_empty_model_keys(self):
5990 """Ensure that model token names are non-empty strings."""
6091 for provider , model_dict in models_tokens .items ():
6192 for model in model_dict .keys ():
62- assert model != "" , (
63- f"Model name in provider ' { provider } ' should not be empty. "
64- )
93+ assert (
94+ model != " "
95+ ), f"Model name in provider ' { provider } ' should not be empty."
6596
6697 def test_token_limits_range (self ):
6798 """Test that token limits for all models fall within a plausible range (e.g., 1 to 300000)."""
6899 for provider , model_dict in models_tokens .items ():
69100 for model , token in model_dict .items ():
70- assert 1 <= token <= 1100000 , (
71- f"Token limit for { model } in provider { provider } is out of plausible range."
72- )
101+ assert (
102+ 1 <= token <= 1100000
103+ ), f"Token limit for { model } in provider { provider } is out of plausible range."
73104
74105 def test_provider_structure (self ):
75106 """Test that every provider in models_tokens has a dictionary as its value."""
76107 for provider , models in models_tokens .items ():
77- assert isinstance (models , dict ), (
78- f"Provider { provider } should map to a dictionary, got { type ( models ). __name__ } "
79- )
108+ assert isinstance (
109+ models , dict
110+ ), f"Provider { provider } should map to a dictionary, got { type ( models ). __name__ } "
80111
81112 def test_non_empty_provider (self ):
82113 """Test that each provider dictionary is not empty."""
83114 for provider , models in models_tokens .items ():
84- assert len ( models ) > 0 , (
85- f"Provider { provider } should contain at least one model."
86- )
115+ assert (
116+ len ( models ) > 0
117+ ), f"Provider { provider } should contain at least one model."
87118
88119 def test_specific_model_token_values (self ):
89120 """Test specific expected token values for selected models from various providers."""
90121 # Verify a token for a selected model from the 'openai' provider
91122 openai = models_tokens .get ("openai" )
92- assert openai . get ( "gpt-3.5-turbo-0125" ) == 16385 , (
93- "Expected token limit for gpt-3.5-turbo-0125 in openai to be 16385"
94- )
123+ assert (
124+ openai . get ( " gpt-3.5-turbo-0125" ) == 16385
125+ ), "Expected token limit for gpt-3.5-turbo-0125 in openai to be 16385"
95126
96127 # Verify a token for a selected model from the 'azure_openai' provider
97128 azure = models_tokens .get ("azure_openai" )
98- assert azure . get ( "gpt-3.5" ) == 4096 , (
99- "Expected token limit for gpt-3.5 in azure_openai to be 4096"
100- )
129+ assert (
130+ azure . get ( " gpt-3.5" ) == 4096
131+ ), "Expected token limit for gpt-3.5 in azure_openai to be 4096"
101132
102133 # Verify a token for a selected model from the 'anthropic' provider
103134 anthropic = models_tokens .get ("anthropic" )
104- assert anthropic . get ( "claude_instant" ) == 100000 , (
105- "Expected token limit for claude_instant in anthropic to be 100000"
106- )
135+ assert (
136+ anthropic . get ( " claude_instant" ) == 100000
137+ ), "Expected token limit for claude_instant in anthropic to be 100000"
107138
108139 def test_providers_count (self ):
109140 """Test that the total number of providers is as expected (at least 15)."""
110- assert len ( models_tokens ) >= 15 , (
111- "Expected at least 15 providers in models_tokens"
112- )
141+ assert (
142+ len ( models_tokens ) >= 15
143+ ), "Expected at least 15 providers in models_tokens"
113144
114145 def test_non_existent_model (self ):
115146 """Test that a non-existent model within a valid provider returns None."""
116147 openai = models_tokens .get ("openai" )
117- assert openai . get ( "non_existent_model" ) is None , (
118- "Non-existent model should return None from a valid provider."
119- )
148+ assert (
149+ openai . get ( "non_existent_model" ) is None
150+ ), "Non-existent model should return None from a valid provider."
120151
121152 def test_no_whitespace_in_model_names (self ):
122153 """Test that model names do not contain leading or trailing whitespace."""
123154 for provider , model_dict in models_tokens .items ():
124155 for model in model_dict .keys ():
125156 # Assert that stripping whitespace does not change the model name
126- assert model == model . strip (), (
127- f"Model name ' { model } ' in provider ' { provider } ' contains leading or trailing whitespace."
128- )
157+ assert (
158+ model == model . strip ()
159+ ), f"Model name ' { model } ' in provider ' { provider } ' contains leading or trailing whitespace."
129160
130161 def test_specific_models_additional (self ):
131162 """Test specific token values for additional models across various providers."""
132163 # Check some models in the 'ollama' provider
133164 ollama = models_tokens .get ("ollama" )
134- assert ollama . get ( "llama2" ) == 4096 , (
135- "Expected token limit for ' llama2' in ollama to be 4096"
136- )
137- assert ollama . get ( "llama2:70b" ) == 4096 , (
138- "Expected token limit for ' llama2:70b' in ollama to be 4096"
139- )
165+ assert (
166+ ollama . get ( " llama2" ) == 4096
167+ ), "Expected token limit for 'llama2' in ollama to be 4096"
168+ assert (
169+ ollama . get ( " llama2:70b" ) == 4096
170+ ), "Expected token limit for 'llama2:70b' in ollama to be 4096"
140171
141172 # Check a specific model from the 'mistralai' provider
142173 mistralai = models_tokens .get ("mistralai" )
143- assert mistralai . get ( "open-codestral-mamba" ) == 256000 , (
144- "Expected token limit for ' open-codestral-mamba' in mistralai to be 256000"
145- )
174+ assert (
175+ mistralai . get ( " open-codestral-mamba" ) == 256000
176+ ), "Expected token limit for 'open-codestral-mamba' in mistralai to be 256000"
146177
147178 # Check a specific model from the 'deepseek' provider
148179 deepseek = models_tokens .get ("deepseek" )
149- assert deepseek . get ( "deepseek-chat" ) == 28672 , (
150- "Expected token limit for ' deepseek-chat' in deepseek to be 28672"
151- )
180+ assert (
181+ deepseek . get ( " deepseek-chat" ) == 28672
182+ ), "Expected token limit for 'deepseek-chat' in deepseek to be 28672"
152183
153184 # Check a model from the 'ernie' provider
154185 ernie = models_tokens .get ("ernie" )
155- assert ernie . get ( "ernie-bot" ) == 4096 , (
156- "Expected token limit for ' ernie-bot' in ernie to be 4096"
157- )
186+ assert (
187+ ernie . get ( " ernie-bot" ) == 4096
188+ ), "Expected token limit for 'ernie-bot' in ernie to be 4096"
158189
159190 def test_nvidia_specific (self ):
160191 """Test specific token value for 'meta/codellama-70b' in the nvidia provider."""
161192 nvidia = models_tokens .get ("nvidia" )
162193 assert nvidia is not None , "'nvidia' provider should exist"
163194 # Verify token for 'meta/codellama-70b' equals 16384 as defined in the nvidia dictionary
164- assert nvidia . get ( "meta/codellama-70b" ) == 16384 , (
165- "Expected token limit for ' meta/codellama-70b' in nvidia to be 16384"
166- )
195+ assert (
196+ nvidia . get ( " meta/codellama-70b" ) == 16384
197+ ), "Expected token limit for 'meta/codellama-70b' in nvidia to be 16384"
167198
168199 def test_groq_specific (self ):
169200 """Test specific token value for 'claude-3-haiku-20240307\' ' in the groq provider."""
170201 groq = models_tokens .get ("groq" )
171202 assert groq is not None , "'groq' provider should exist"
172203 # Note: The model name has an embedded apostrophe at the end in its name.
173- assert groq . get ( "claude-3-haiku-20240307'" ) == 8192 , (
174- "Expected token limit for ' claude-3-haiku-20240307\\ '' in groq to be 8192"
175- )
204+ assert (
205+ groq . get ( " claude-3-haiku-20240307'" ) == 8192
206+ ), "Expected token limit for 'claude-3-haiku-20240307 \\ '' in groq to be 8192"
176207
177208 def test_togetherai_specific (self ):
178209 """Test specific token value for 'meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo' in the toghetherai provider."""
179210 togetherai = models_tokens .get ("toghetherai" )
180211 assert togetherai is not None , "'toghetherai' provider should exist"
181212 expected = 128000
182213 model_name = "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo"
183- assert togetherai . get ( model_name ) == expected , (
184- f"Expected token limit for ' { model_name } ' in toghetherai to be { expected } "
185- )
214+ assert (
215+ togetherai . get ( model_name ) == expected
216+ ), f"Expected token limit for ' { model_name } ' in toghetherai to be { expected } "
186217
187218 def test_ernie_all_values (self ):
188219 """Test that all models in the 'ernie' provider have token values exactly 4096."""
189220 ernie = models_tokens .get ("ernie" )
190221 assert ernie is not None , "'ernie' provider should exist"
191222 for model , token in ernie .items ():
192- assert token == 4096 , (
193- f"Expected token limit for ' { model } ' in ernie to be 4096, got { token } "
194- )
223+ assert (
224+ token == 4096
225+ ), f"Expected token limit for ' { model } ' in ernie to be 4096, got { token } "
0 commit comments