fix: add implicit caching cost calculation for Gemini 2.x models (#12585)

Added cache_read_input_token_cost (25% of regular input cost) to all 39 Gemini 2.x models
to properly support implicit context caching cost calculations. Previously, cached tokens
were being charged at full price instead of the discounted rate.

Fixes #11156
This commit is contained in:
Cole McIntosh 2025-07-14 17:37:17 -06:00 committed by GitHub
parent 19b67bd1d1
commit b757bb68f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 312 additions and 84 deletions

View File

@ -318,8 +318,8 @@
"max_tokens": 131072,
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"input_cost_per_token": 0.000003,
"output_cost_per_token": 0.00001,
"input_cost_per_token": 3e-06,
"output_cost_per_token": 1e-05,
"litellm_provider": "watsonx",
"mode": "chat",
"supports_function_calling": true,
@ -6831,7 +6831,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.0-pro-exp-02-05": {
"max_tokens": 8192,
@ -6872,7 +6874,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.0-flash-exp": {
"max_tokens": 8192,
@ -6918,7 +6922,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_tool_choice": true,
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash-001": {
"max_tokens": 8192,
@ -6954,7 +6960,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"deprecation_date": "2026-02-05",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash-thinking-exp": {
"max_tokens": 8192,
@ -7000,7 +7008,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini-2.0-flash-thinking-exp-01-21": {
"max_tokens": 65536,
@ -7046,7 +7056,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini-2.5-pro": {
"max_tokens": 65535,
@ -7087,7 +7099,9 @@
"text"
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-exp-03-25": {
"max_tokens": 65535,
@ -7129,7 +7143,9 @@
"text"
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro": {
"max_tokens": 65535,
@ -7172,7 +7188,9 @@
"text"
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash": {
"max_tokens": 65535,
@ -7217,7 +7235,9 @@
"supports_url_context": true,
"tpm": 8000000,
"rpm": 100000,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 7.5e-08,
"supports_prompt_caching": true
},
"gemini-2.5-flash": {
"max_tokens": 65535,
@ -7260,7 +7280,9 @@
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 7.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash-preview-tts": {
"max_tokens": 65535,
@ -7298,7 +7320,9 @@
"audio"
],
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash-preview-05-20": {
"max_tokens": 65535,
@ -7341,7 +7365,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 7.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash-preview-04-17": {
"max_tokens": 65535,
@ -7383,7 +7409,9 @@
],
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash-lite-preview-06-17": {
"max_tokens": 65535,
@ -7428,7 +7456,9 @@
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini-2.5-flash-preview-05-20": {
"max_tokens": 65535,
@ -7471,7 +7501,9 @@
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 7.5e-08,
"supports_prompt_caching": true
},
"gemini-2.5-flash-preview-04-17": {
"max_tokens": 65535,
@ -7513,7 +7545,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini-2.5-flash-lite-preview-06-17": {
"max_tokens": 65535,
@ -7556,7 +7590,9 @@
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash": {
"max_tokens": 8192,
@ -7593,7 +7629,9 @@
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true
"supports_url_context": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash-lite": {
"max_input_tokens": 1048576,
@ -7626,7 +7664,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 1.875e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash-lite-001": {
"max_input_tokens": 1048576,
@ -7660,7 +7700,9 @@
"supports_tool_choice": true,
"deprecation_date": "2026-02-25",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 1.875e-08,
"supports_prompt_caching": true
},
"gemini-2.5-pro-preview-06-05": {
"max_tokens": 65535,
@ -7703,7 +7745,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.5-pro-preview-05-06": {
"max_tokens": 65535,
@ -7749,7 +7793,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.5-pro-preview-03-25": {
"max_tokens": 65535,
@ -7792,7 +7838,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.0-flash-preview-image-generation": {
"max_tokens": 8192,
@ -7828,7 +7876,9 @@
"supports_tool_choice": true,
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini-2.5-pro-preview-tts": {
"max_tokens": 65535,
@ -7861,7 +7911,9 @@
],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-pro-exp-02-05": {
"max_tokens": 8192,
@ -7900,7 +7952,9 @@
"supports_response_schema": true,
"supports_tool_choice": true,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-preview-image-generation": {
"max_tokens": 8192,
@ -7937,7 +7991,9 @@
],
"supports_tool_choice": true,
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash": {
"max_tokens": 8192,
@ -7975,7 +8031,9 @@
"supports_tool_choice": true,
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_web_search": true,
"supports_url_context": true
"supports_url_context": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-lite": {
"max_input_tokens": 1048576,
@ -8009,7 +8067,9 @@
"text"
],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.0-flash-lite",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 1.875e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-001": {
"max_tokens": 8192,
@ -8045,7 +8105,9 @@
"image"
],
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-preview-tts": {
"max_tokens": 65535,
@ -8079,7 +8141,9 @@
"audio"
],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-preview-06-05": {
"max_tokens": 65535,
@ -8118,7 +8182,9 @@
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-preview-05-06": {
"max_tokens": 65535,
@ -8157,7 +8223,9 @@
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-preview-03-25": {
"max_tokens": 65535,
@ -8195,7 +8263,9 @@
],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-exp": {
"max_tokens": 8192,
@ -8242,7 +8312,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-lite-preview-02-05": {
"max_tokens": 8192,
@ -8277,7 +8349,9 @@
"text"
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash-lite",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 1.875e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-thinking-exp": {
"max_tokens": 8192,
@ -8324,7 +8398,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-thinking-exp-01-21": {
"max_tokens": 8192,
@ -8371,7 +8447,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemma-3-27b-it": {
"max_tokens": 8192,
@ -16068,4 +16146,4 @@
"mode": "chat",
"source": "https://platform.moonshot.ai/docs/pricing"
}
}
}

View File

@ -318,8 +318,8 @@
"max_tokens": 131072,
"max_input_tokens": 131072,
"max_output_tokens": 16384,
"input_cost_per_token": 0.000003,
"output_cost_per_token": 0.00001,
"input_cost_per_token": 3e-06,
"output_cost_per_token": 1e-05,
"litellm_provider": "watsonx",
"mode": "chat",
"supports_function_calling": true,
@ -6831,7 +6831,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.0-pro-exp-02-05": {
"max_tokens": 8192,
@ -6872,7 +6874,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.0-flash-exp": {
"max_tokens": 8192,
@ -6918,7 +6922,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_tool_choice": true,
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash-001": {
"max_tokens": 8192,
@ -6954,7 +6960,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"deprecation_date": "2026-02-05",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash-thinking-exp": {
"max_tokens": 8192,
@ -7000,7 +7008,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini-2.0-flash-thinking-exp-01-21": {
"max_tokens": 65536,
@ -7046,7 +7056,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini-2.5-pro": {
"max_tokens": 65535,
@ -7087,7 +7099,9 @@
"text"
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-exp-03-25": {
"max_tokens": 65535,
@ -7129,7 +7143,9 @@
"text"
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro": {
"max_tokens": 65535,
@ -7172,7 +7188,9 @@
"text"
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash": {
"max_tokens": 65535,
@ -7217,7 +7235,9 @@
"supports_url_context": true,
"tpm": 8000000,
"rpm": 100000,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 7.5e-08,
"supports_prompt_caching": true
},
"gemini-2.5-flash": {
"max_tokens": 65535,
@ -7260,7 +7280,9 @@
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 7.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash-preview-tts": {
"max_tokens": 65535,
@ -7298,7 +7320,9 @@
"audio"
],
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash-preview-05-20": {
"max_tokens": 65535,
@ -7341,7 +7365,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 7.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash-preview-04-17": {
"max_tokens": 65535,
@ -7383,7 +7409,9 @@
],
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-flash-lite-preview-06-17": {
"max_tokens": 65535,
@ -7428,7 +7456,9 @@
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini-2.5-flash-preview-05-20": {
"max_tokens": 65535,
@ -7471,7 +7501,9 @@
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 7.5e-08,
"supports_prompt_caching": true
},
"gemini-2.5-flash-preview-04-17": {
"max_tokens": 65535,
@ -7513,7 +7545,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.75e-08,
"supports_prompt_caching": true
},
"gemini-2.5-flash-lite-preview-06-17": {
"max_tokens": 65535,
@ -7556,7 +7590,9 @@
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash": {
"max_tokens": 8192,
@ -7593,7 +7629,9 @@
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_url_context": true
"supports_url_context": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash-lite": {
"max_input_tokens": 1048576,
@ -7626,7 +7664,9 @@
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 1.875e-08,
"supports_prompt_caching": true
},
"gemini-2.0-flash-lite-001": {
"max_input_tokens": 1048576,
@ -7660,7 +7700,9 @@
"supports_tool_choice": true,
"deprecation_date": "2026-02-25",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 1.875e-08,
"supports_prompt_caching": true
},
"gemini-2.5-pro-preview-06-05": {
"max_tokens": 65535,
@ -7703,7 +7745,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.5-pro-preview-05-06": {
"max_tokens": 65535,
@ -7749,7 +7793,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.5-pro-preview-03-25": {
"max_tokens": 65535,
@ -7792,7 +7838,9 @@
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini-2.0-flash-preview-image-generation": {
"max_tokens": 8192,
@ -7828,7 +7876,9 @@
"supports_tool_choice": true,
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini-2.5-pro-preview-tts": {
"max_tokens": 65535,
@ -7861,7 +7911,9 @@
],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_parallel_function_calling": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-pro-exp-02-05": {
"max_tokens": 8192,
@ -7900,7 +7952,9 @@
"supports_response_schema": true,
"supports_tool_choice": true,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-preview-image-generation": {
"max_tokens": 8192,
@ -7937,7 +7991,9 @@
],
"supports_tool_choice": true,
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash": {
"max_tokens": 8192,
@ -7975,7 +8031,9 @@
"supports_tool_choice": true,
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_web_search": true,
"supports_url_context": true
"supports_url_context": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-lite": {
"max_input_tokens": 1048576,
@ -8009,7 +8067,9 @@
"text"
],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.0-flash-lite",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 1.875e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-001": {
"max_tokens": 8192,
@ -8045,7 +8105,9 @@
"image"
],
"source": "https://ai.google.dev/pricing#2_0flash",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 2.5e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-preview-tts": {
"max_tokens": 65535,
@ -8079,7 +8141,9 @@
"audio"
],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-preview-06-05": {
"max_tokens": 65535,
@ -8118,7 +8182,9 @@
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-preview-05-06": {
"max_tokens": 65535,
@ -8157,7 +8223,9 @@
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_web_search": true,
"supports_url_context": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.5-pro-preview-03-25": {
"max_tokens": 65535,
@ -8195,7 +8263,9 @@
],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview",
"supports_web_search": true,
"supports_pdf_input": true
"supports_pdf_input": true,
"cache_read_input_token_cost": 3.125e-07,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-exp": {
"max_tokens": 8192,
@ -8242,7 +8312,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-lite-preview-02-05": {
"max_tokens": 8192,
@ -8277,7 +8349,9 @@
"text"
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash-lite",
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 1.875e-08,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-thinking-exp": {
"max_tokens": 8192,
@ -8324,7 +8398,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemini-2.0-flash-thinking-exp-01-21": {
"max_tokens": 8192,
@ -8371,7 +8447,9 @@
],
"source": "https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-2.0-flash",
"supports_tool_choice": true,
"supports_web_search": true
"supports_web_search": true,
"cache_read_input_token_cost": 0.0,
"supports_prompt_caching": true
},
"gemini/gemma-3-27b-it": {
"max_tokens": 8192,
@ -16068,4 +16146,4 @@
"mode": "chat",
"source": "https://platform.moonshot.ai/docs/pricing"
}
}
}

View File

@ -411,3 +411,75 @@ def test_bedrock_cost_calculator_comparison_with_without_cache():
assert cost_with_cache < cost_no_cache
print(f"Cost without cache: {cost_no_cache}")
print(f"Cost with cache: {cost_with_cache}")
def test_gemini_25_implicit_caching_cost():
"""
Test that Gemini 2.5 models correctly calculate costs with implicit caching.
This test reproduces the issue from #11156 where cached tokens should receive
a 75% discount.
"""
from litellm import completion_cost
from litellm.types.utils import (
Choices,
Message,
ModelResponse,
PromptTokensDetailsWrapper,
Usage,
)
# Create a mock response similar to the one in the issue
litellm_model_response = ModelResponse(
id="test-response",
created=1750733889,
model="gemini/gemini-2.5-flash-preview-04-17",
object="chat.completion",
system_fingerprint=None,
choices=[
Choices(
finish_reason="stop",
index=0,
message=Message(
content="Understood. This is a test message to check the response from the Gemini model.",
role="assistant",
tool_calls=None,
function_call=None,
),
)
],
usage=Usage(
total_tokens=15050,
prompt_tokens=15033,
completion_tokens=17,
prompt_tokens_details=PromptTokensDetailsWrapper(
audio_tokens=None,
cached_tokens=14316, # This is cachedContentTokenCount from Gemini
),
completion_tokens_details=None,
),
)
# Calculate the cost
result = completion_cost(
completion_response=litellm_model_response,
model="gemini/gemini-2.5-flash-preview-04-17",
)
# From the issue:
# input: $0.15 / 1000000 tokens
# output: $0.60 / 1000000 tokens
# With caching: 0.15*0.25*(14316/1000000)+0.15*((15033-14316)/1000000)+0.6*(17/1000000) = 0.0006546
# Breakdown:
# - Cached tokens: 14316 * 0.15/1M * 0.25 = 0.00053685
# - Non-cached tokens: (15033-14316) * 0.15/1M = 717 * 0.15/1M = 0.00010755
# - Output tokens: 17 * 0.6/1M = 0.00001020
# Total: 0.00053685 + 0.00010755 + 0.00001020 = 0.0006546
expected_cost = 0.0006546
# Allow for small floating point differences
assert abs(result - expected_cost) < 1e-8, f"Expected cost {expected_cost}, but got {result}"
print(f"✓ Gemini 2.5 implicit caching cost calculation is correct: ${result:.8f}")