Skip to content

Commit c8b1779

Browse files
Merge pull request #14191 from kayoch1n/fix-h11-model-name
Remove "/" or ":" from model name when being used as h11 header name
2 parents cfead05 + 76555ca commit c8b1779

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

litellm/proxy/common_utils/callback_utils.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,17 +317,26 @@ def get_remaining_tokens_and_requests_from_request_data(data: Dict) -> Dict[str,
317317
_metadata = data.get("metadata", None) or {}
318318
model_group = get_model_group_from_request_data(data)
319319

320+
# The h11 package considers "/" or ":" invalid and raise a LocalProtocolError
321+
h11_model_group_name = (
322+
model_group.replace("/", "-").replace(":", "-") if model_group else None
323+
)
324+
320325
# Remaining Requests
321326
remaining_requests_variable_name = f"litellm-key-remaining-requests-{model_group}"
322327
remaining_requests = _metadata.get(remaining_requests_variable_name, None)
323328
if remaining_requests:
324-
headers[f"x-litellm-key-remaining-requests-{model_group}"] = remaining_requests
329+
headers[f"x-litellm-key-remaining-requests-{h11_model_group_name}"] = (
330+
remaining_requests
331+
)
325332

326333
# Remaining Tokens
327334
remaining_tokens_variable_name = f"litellm-key-remaining-tokens-{model_group}"
328335
remaining_tokens = _metadata.get(remaining_tokens_variable_name, None)
329336
if remaining_tokens:
330-
headers[f"x-litellm-key-remaining-tokens-{model_group}"] = remaining_tokens
337+
headers[f"x-litellm-key-remaining-tokens-{h11_model_group_name}"] = (
338+
remaining_tokens
339+
)
331340

332341
return headers
333342

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import sys
2+
import os
3+
4+
sys.path.insert(
5+
0, os.path.abspath("../../..")
6+
) # Adds the parent directory to the system path
7+
8+
from litellm.proxy.common_utils.callback_utils import (
9+
get_remaining_tokens_and_requests_from_request_data,
10+
)
11+
12+
13+
def test_get_remaining_tokens_and_requests_from_request_data():
14+
model_group = "openrouter/google/gemini-2.0-flash-001"
15+
casedata = {
16+
"metadata": {
17+
"model_group": model_group,
18+
f"litellm-key-remaining-requests-{model_group}": 100,
19+
f"litellm-key-remaining-tokens-{model_group}": 200,
20+
}
21+
}
22+
23+
headers = get_remaining_tokens_and_requests_from_request_data(casedata)
24+
25+
expected_name = "openrouter-google-gemini-2.0-flash-001"
26+
assert headers == {
27+
f"x-litellm-key-remaining-requests-{expected_name}": 100,
28+
f"x-litellm-key-remaining-tokens-{expected_name}": 200,
29+
}

0 commit comments

Comments
 (0)