mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-09 03:18:44 +00:00
fix: update model_cost_map_url to use environment variable (#16429)
* fix: update model_cost_map_url to use environment variable, to match behavior to documentation in docs/my-website/docs/proxy/sync_models_github.md * Add an appropriate test.
This commit is contained in:
parent
df33f36c06
commit
e0d6774ec1
2 changed files with 50 additions and 1 deletions
|
|
@ -345,7 +345,10 @@ add_function_to_prompt: bool = False # if function calling not supported by api
|
|||
client_session: Optional[httpx.Client] = None
|
||||
aclient_session: Optional[httpx.AsyncClient] = None
|
||||
model_fallbacks: Optional[List] = None # Deprecated for 'litellm.fallbacks'
|
||||
model_cost_map_url: str = "https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json"
|
||||
model_cost_map_url: str = os.getenv(
|
||||
"LITELLM_MODEL_COST_MAP_URL",
|
||||
"https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json",
|
||||
)
|
||||
suppress_debug_info = False
|
||||
dynamodb_table_name: Optional[str] = None
|
||||
s3_callback_params: Optional[Dict] = None
|
||||
|
|
|
|||
46
tests/test_model_cost_map_url.py
Normal file
46
tests/test_model_cost_map_url.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
import importlib
|
||||
import sys
|
||||
|
||||
|
||||
def test_model_cost_map_url_from_env(monkeypatch):
|
||||
"""Ensure `LITELLM_MODEL_COST_MAP_URL` env var is picked up on import and used by get_model_cost_map."""
|
||||
test_url = "https://example.com/test_model_cost_map.json"
|
||||
|
||||
# A minimal model cost map we expect to be loaded
|
||||
model_json = {
|
||||
"my-test-model": {
|
||||
"input_cost_per_token": 0.123,
|
||||
"output_cost_per_token": 0.456,
|
||||
"litellm_provider": "openai",
|
||||
"mode": "chat",
|
||||
}
|
||||
}
|
||||
|
||||
class DummyResp:
|
||||
def raise_for_status(self):
|
||||
return None
|
||||
|
||||
def json(self):
|
||||
return model_json
|
||||
|
||||
# Point litellm at our test URL
|
||||
monkeypatch.setenv("LITELLM_MODEL_COST_MAP_URL", test_url)
|
||||
|
||||
# Mock httpx.get to return our dummy response
|
||||
import httpx
|
||||
|
||||
monkeypatch.setattr(httpx, "get", lambda url, timeout=5: DummyResp())
|
||||
|
||||
# Reload the litellm package so top-level import picks up the env var
|
||||
if "litellm" in sys.modules:
|
||||
importlib.reload(sys.modules["litellm"])
|
||||
else:
|
||||
import litellm # noqa: F401
|
||||
importlib.reload(litellm)
|
||||
|
||||
import litellm as ll # re-import for assertions
|
||||
|
||||
# The package should have picked up the env var and loaded our model map
|
||||
assert getattr(ll, "model_cost_map_url") == test_url
|
||||
assert "my-test-model" in ll.model_cost
|
||||
assert ll.model_cost["my-test-model"]["input_cost_per_token"] == 0.123
|
||||
Loading…
Add table
Reference in a new issue