CreateCachedContentConfig currently accepts system_instruction, contents, tools, and tool_config, but not response_schema/response_mime_type. For prompts with large structured-output schemas, this means the schema is resent at full price on every call even when system_instruction is cached.
The only current workaround is converting the schema into a single forced-choice FunctionDeclaration/Tool and baking that + tool_config into the cache instead — which we validated works (schema tokens do show up under cached_content_token_count), but it comes with real downsides vs. native response_schema support:
- Loses whatever constrained-decoding guarantee
response_schemamode provides — function-calling isn’t documented as giving the same schema-adherence guarantee. - Introduces
MALFORMED_FUNCTION_CALLas a new failure mode (see #1789) with no equivalent underresponse_schemamode. - Requires a full generate_content config swap (can’t mix
response_schemawithtools/tool_configin the same cached request per current API validation), so cache-hit vs. cache-miss calls need materially different request shapes.
Feature request: allow response_schema/response_mime_type to be part of the cached content directly, so structured-output prompts get the same caching benefit as system-instruction-heavy ones without the function-calling workaround.