fix(model_prices): add Azure DeepSeek V4.1 Flash 1017 and two Perplexity Agent API rows (#51444)

* Add Azure DeepSeek V4.1 Flash 1017 pricing

Absorb PR #51025 with official Azure pricing and limits. Omit unsupported capability and retirement metadata.

Co-authored-by: Emerson Gomes <emerson.gomes@thalesgroup.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* Add Perplexity Fable 5.2 and Gemini 4 Carbon pricing

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Emerson Gomes <emerson.gomes@thalesgroup.com>
This commit is contained in:
devin-ai-integration[bot] 2026-11-12 14:00:06 -08:00 • committed by GitHub
parent dc1284d3d2
commit 6cc56fcc26
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 62 additions and 5 deletions

View file

@ -69829,6 +69829,18 @@
"supports_tool_choice": true,
"supports_vision": true
},
"azure_ai/deepseek-v4.1-flash-1017": {
"input_cost_per_token": 3e-07,
"output_cost_per_token": 1.2e-06,
"cache_read_input_token_cost": 6e-09,
"litellm_provider": "azure_ai",
"mode": "chat",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"supports_prompt_caching": true,
"supports_vision": false,
"source": "https://ai.azure.com/catalog/models/DeepSeek-V4.1-Flash-1017"
},
"azure_ai/deepseek-v4.1-flash": {
"cache_read_input_token_cost": 6e-09,
"input_cost_per_token": 3e-07,
@ -71842,6 +71854,14 @@
"cache_read_input_token_cost": 1e-07,
"source": "https://docs.perplexity.ai/docs/agent-api/models"
},
"perplexity/google/gemini-4-carbon": {
"litellm_provider": "perplexity",
"mode": "responses",
"input_cost_per_token": 2e-06,
"output_cost_per_token": 1e-05,
"cache_read_input_token_cost": 1e-07,
"source": "https://docs.perplexity.ai/docs/agent-api/models"
},
"perplexity/google/gemini-3.6-flash": {
"litellm_provider": "perplexity",
"mode": "responses",
@ -77127,6 +77147,14 @@
"cache_read_input_token_cost": 1e-07,
"source": "https://docs.perplexity.ai/docs/agent-api/models"
},
"perplexity/anthropic/claude-fable-5-2": {
"litellm_provider": "perplexity",
"mode": "responses",
"input_cost_per_token": 8e-06,
"output_cost_per_token": 4e-05,
"cache_read_input_token_cost": 2e-07,
"source": "https://docs.perplexity.ai/docs/agent-api/models"
},
"perplexity/anthropic/claude-fable-5-1": {
"litellm_provider": "perplexity",
"mode": "responses",

View file

@ -69829,6 +69829,18 @@
"supports_tool_choice": true,
"supports_vision": true
},
"azure_ai/deepseek-v4.1-flash-1017": {
"input_cost_per_token": 3e-07,
"output_cost_per_token": 1.2e-06,
"cache_read_input_token_cost": 6e-09,
"litellm_provider": "azure_ai",
"mode": "chat",
"max_input_tokens": 1000000,
"max_output_tokens": 128000,
"supports_prompt_caching": true,
"supports_vision": false,
"source": "https://ai.azure.com/catalog/models/DeepSeek-V4.1-Flash-1017"
},
"azure_ai/deepseek-v4.1-flash": {
"cache_read_input_token_cost": 6e-09,
"input_cost_per_token": 3e-07,
@ -71842,6 +71854,14 @@
"cache_read_input_token_cost": 1e-07,
"source": "https://docs.perplexity.ai/docs/agent-api/models"
},
"perplexity/google/gemini-4-carbon": {
"litellm_provider": "perplexity",
"mode": "responses",
"input_cost_per_token": 2e-06,
"output_cost_per_token": 1e-05,
"cache_read_input_token_cost": 1e-07,
"source": "https://docs.perplexity.ai/docs/agent-api/models"
},
"perplexity/google/gemini-3.6-flash": {
"litellm_provider": "perplexity",
"mode": "responses",
@ -77127,6 +77147,14 @@
"cache_read_input_token_cost": 1e-07,
"source": "https://docs.perplexity.ai/docs/agent-api/models"
},
"perplexity/anthropic/claude-fable-5-2": {
"litellm_provider": "perplexity",
"mode": "responses",
"input_cost_per_token": 8e-06,
"output_cost_per_token": 4e-05,
"cache_read_input_token_cost": 2e-07,
"source": "https://docs.perplexity.ai/docs/agent-api/models"
},
"perplexity/anthropic/claude-fable-5-1": {
"litellm_provider": "perplexity",
"mode": "responses",

View file

@ -231,14 +231,15 @@ def test_azure_model_router_stream_chunks_report_selected_model(respx_mock: resp
assert [chunk.model for chunk in chunks] == ["gpt-4.1-nano-2025-04-14", "gpt-4.1-nano-2025-04-14"]
@pytest.mark.parametrize("model", ["gpt-4.1-mini", "DeepSeek-V4.1-Flash-1017"])
@pytest.mark.respx(assert_all_called=True)
def test_azure_ai_completion_cost_uses_response_usage(respx_mock: respx.MockRouter) -> None:
def test_azure_ai_completion_cost_uses_response_usage(respx_mock: respx.MockRouter, model: str) -> None:
api_url: Final = "https://example-resource.services.ai.azure.com/models/chat/completions"
response_body: Final = {
"id": "chatcmpl-azure-ai",
"object": "chat.completion",
"created": 1700000000,
"model": "gpt-4.1-mini",
"model": model,
"choices": [
{
"index": 0,
@ -251,18 +252,18 @@ def test_azure_ai_completion_cost_uses_response_usage(respx_mock: respx.MockRout
route: Final = respx_mock.post(url__startswith=api_url).mock(return_value=Response(200, json=response_body))
messages: Final = [{"role": "user", "content": "hello"}]
response: Final = litellm.completion(
model="azure_ai/gpt-4.1-mini",
model=f"azure_ai/{model}",
messages=messages,
api_base="https://example-resource.services.ai.azure.com/models",
api_key="azure-ai-test-key",
api_version="2024-05-01-preview",
)
request_body: Final = json.loads(route.calls[0].request.content)
model_info: Final = litellm.get_model_info(model="gpt-4.1-mini", custom_llm_provider="azure_ai")
model_info: Final = litellm.get_model_info(model=model, custom_llm_provider="azure_ai")
expected_cost: Final = 11 * model_info["input_cost_per_token"] + 3 * model_info["output_cost_per_token"]
assert route.call_count == 1
assert request_body == {"model": "gpt-4.1-mini", "messages": messages}
assert request_body == {"model": model, "messages": messages}
assert response.choices[0].message.content == "hello"
assert response._hidden_params["response_cost"] == pytest.approx(expected_cost, rel=1e-9)
assert litellm.completion_cost(completion_response=response) == pytest.approx(expected_cost, rel=1e-9)