Caché de prompts consciente do provedor
Superdav AI Agent v1.12.0 introduce caché de prompts consciente do provedor, que optimiza os custos da API e a latencia gardando prompts en caché entre distintos provedores de LLM. Cada provedor ten mecanismos e configuracións de caché diferentes.
Visión xeral
A caché de prompts permíteche:
- Gardar en caché prompts grandes e de uso frecuente
- Reducir os custos da API evitando procesamento redundante
- Mellorar a latencia para solicitudes en caché
- Xestionar explicitamente o ciclo de vida da caché
Os distintos provedores implementan a caché de maneira diferente:
- Google Gemini: API
cachedContents - Azure OpenAI: caché de prompts con TTL
- OpenRouter: caché específica do provedor
- Vertex Anthropic: caché de prompts con control de caché
Google Gemini: API cachedContents
Google Gemini ofrece xestión explícita da caché mediante a API cachedContents.
Configuración
$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // 1 hour in seconds
'max_tokens' => 1000000, // Max tokens to cache
],
];
Crear un prompt en caché
use Superdav\AI\Providers\GoogleGemini;
$gemini = new GoogleGemini( $config );
$cached_content = $gemini->create_cached_content(
[
'system_prompt' => 'You are a helpful assistant...',
'context' => 'Large context document...',
'ttl' => 3600,
]
);
// Returns: ['cache_id' => 'abc123', 'expires_at' => timestamp]
Usar un prompt en caché
$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'User question here',
]
);
Ciclo de vida da caché
// List cached contents
$caches = $gemini->list_cached_contents();
// Get cache details
$cache = $gemini->get_cached_content( 'abc123' );
// Extend cache TTL
$gemini->update_cached_content(
'abc123',
['ttl' => 7200] // Extend to 2 hours
);
// Delete cache
$gemini->delete_cached_content( 'abc123' );
Boas prácticas para Gemini
- Define un TTL axeitado: Equilibra o aforro de custos fronte á obsolescencia da caché
- Garda en caché os prompts do sistema: Reutiliza o mesmo prompt do sistema entre solicitudes
- Supervisa o uso da caché: Fai seguimento de que cachés se usan máis
- Limpa as cachés caducadas: Elimina periodicamente as cachés sen usar
Azure OpenAI: caché de prompts
Azure OpenAI admite caché de prompts con xestión automática de TTL.
Configuración
$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];
Activar a caché
use Superdav\AI\Providers\AzureOpenAI;
$azure = new AzureOpenAI( $config );
$response = $azure->generate(
[
'system_prompt' => 'You are a helpful assistant...',
'context' => 'Large context document...',
'prompt' => 'User question here',
'cache_control' => 'max_age=3600',
]
);
// Response includes cache usage:
// [
// 'content' => '...',
// 'cache_creation_input_tokens' => 1000,
// 'cache_read_input_tokens' => 500,
// ]
Cabeceiras de caché
Azure OpenAI usa cabeceiras HTTP para o control da caché:
Cache-Control: max_age=3600
Valores admitidos:
max_age=<seconds>: Gardar en caché durante a duración especificadano_cache: Non gardar esta solicitude en cachéno_store: Non gardar en caché e non reutilizar
Supervisar o uso da caché
$response = $azure->generate( [...] );
$cache_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_hits = $response['cache_read_input_tokens'] ?? 0;
echo "Cache creation: $cache_tokens tokens\n";
echo "Cache hits: $cache_hits tokens\n";
Boas prácticas para Azure OpenAI
- Usa prompts consistentes: Os prompts idénticos benefícianse da caché
- Define un TTL razoable: Equilibra o custo fronte á frescura
- Supervisa as métricas da caché: Fai seguimento da creación de caché fronte aos acertos
- Agrupa solicitudes similares: Agrupa solicitudes para maximizar os acertos de caché
OpenRouter: caché específica do provedor
OpenRouter admite caché a través dos provedores subxacentes (OpenAI, Anthropic, etc.).
Configuración
$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // Use OpenAI's caching
],
];
Usar a caché de OpenRouter
use Superdav\AI\Providers\OpenRouter;
$router = new OpenRouter( $config );
$response = $router->generate(
[
'system_prompt' => 'You are a helpful assistant...',
'context' => 'Large context document...',
'prompt' => 'User question here',
'cache_control' => 'max_age=3600',
]
);
Opcións específicas do provedor
Os distintos provedores teñen mecanismos de caché diferentes:
// OpenAI-compatible caching
$response = $router->generate(
[
'model' => 'openai/gpt-4-turbo',
'cache_control' => 'max_age=3600',
]
);
// Anthropic-compatible caching
$response = $router->generate(
[
'model' => 'anthropic/claude-3-opus',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
Boas prácticas para OpenRouter
- Coñece a caché do teu provedor: Cada provedor ten mecanismos diferentes
- Proba o comportamento da caché: Verifica que a caché funciona co provedor escollido
- Supervisa os custos: Fai seguimento do aforro derivado da caché
- Usa modelos consistentes: Cambiar de modelo rompe os acertos de caché
Vertex Anthropic: caché de prompts con control de caché
Vertex Anthropic (Google Cloud) admite caché de prompts con control explícito da caché.
Configuración
$config = [
'provider' => 'vertex-anthropic',
'model' => 'claude-3-opus',
'project_id' => 'your-gcp-project',
'region' => 'us-central1',
'caching' => [
'enabled' => true,
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
],
];
Usar o almacenamento en caché de Vertex Anthropic
use Superdav\AI\Providers\VertexAnthropic;
$vertex = new VertexAnthropic( $config );
$response = $vertex->generate(
[
'system_prompt' => 'You are a helpful assistant...',
'context' => 'Large context document...',
'prompt' => 'User question here',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);
// Response includes cache metrics:
// [
// 'content' => '...',
// 'usage' => [
// 'input_tokens' => 1000,
// 'cache_creation_input_tokens' => 500,
// 'cache_read_input_tokens' => 300,
// ],
// ]
Tipos de control da caché
- ephemeral: Caché durante a duración da solicitude (predeterminado)
- persistent: Caché entre varias solicitudes (se é compatible)
Supervisar o uso da caché
$response = $vertex->generate( [...] );
$usage = $response['usage'];
$cache_created = $usage['cache_creation_input_tokens'] ?? 0;
$cache_read = $usage['cache_read_input_tokens'] ?? 0;
echo "Cache created: $cache_created tokens\n";
echo "Cache read: $cache_read tokens\n";
Mellores prácticas para Vertex Anthropic
- Usar caché ephemeral: Bo para o almacenamento en caché dunha soa sesión
- Configurar max_tokens axeitadamente: Equilibra o tamaño da caché fronte ao custo
- Supervisar as métricas da caché: Fai seguimento da eficacia da caché
- Probar coa túa carga de traballo: Verifica que o almacenamento en caché beneficia o teu caso de uso
Estratexia de almacenamento en caché entre provedores
Configuración unificada
$config = [
'caching' => [
'enabled' => true,
'default_ttl' => 3600,
'providers' => [
'google-gemini' => [
'ttl' => 3600,
'max_tokens' => 1000000,
],
'azure-openai' => [
'cache_control' => 'max_age=3600',
],
'vertex-anthropic' => [
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
],
],
],
];
Detección do provedor
$provider = $config['provider'];
$cache_config = $config['caching']['providers'][ $provider ]
?? $config['caching'];
// Use provider-specific caching configuration
Estratexia de reserva
try {
// Try caching with primary provider
$response = $primary_provider->generate( $request );
} catch ( CacheException $e ) {
// Fall back to non-cached request
$response = $primary_provider->generate(
array_merge( $request, ['cache_control' => 'no_cache'] )
);
}
Optimización de custos
Calcular o aforro
$cache_created_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_read_tokens = $response['cache_read_input_tokens'] ?? 0;
$regular_tokens = $response['input_tokens'] ?? 0;
// Typical pricing (varies by provider):
$cache_creation_cost = $cache_created_tokens * 0.00001; // 10x cheaper
$cache_read_cost = $cache_read_tokens * 0.000001; // 100x cheaper
$regular_cost = $regular_tokens * 0.00001;
$total_cost = $cache_creation_cost + $cache_read_cost + $regular_cost;
$savings = ($regular_tokens * 0.00001) - $total_cost;
echo "Estimated savings: \$$savings\n";
Consellos de optimización
- Almacenar en caché prompts de sistema grandes: O maior aforro de custos
- Reutilizar contexto: Almacena en caché documentos de contexto usados con frecuencia
- Solicitudes por lotes: Agrupa solicitudes similares para maximizar os acertos da caché
- Supervisar a eficacia da caché: Fai seguimento do aforro real
- Axustar TTL: Equilibra o custo fronte á actualización
Solución de problemas
A caché non se está usando
- Verifica que o almacenamento en caché estea activado na configuración
- Comproba que os prompts sexan idénticos (o almacenamento en caché require unha coincidencia exacta)
- Verifica que a caché non caducase
- Comproba os límites de caché específicos do provedor
Fallo na creación da caché
- Verifica que o tamaño da caché estea dentro dos límites do provedor
- Comproba que a sintaxe de control da caché sexa correcta
- Asegúrate de que o provedor admita o almacenamento en caché para o teu modelo
- Revisa a documentación do provedor para coñecer as limitacións
Custos inesperados
- Supervisa a creación da caché fronte aos tokens de lectura da caché
- Verifica que a caché se estea usando realmente
- Comproba se hai fallos de caché debido a variacións nos prompts
- Considera axustar o TTL ou a estratexia de caché
Comparación de provedores
| Función | Gemini | Azure OpenAI | OpenRouter | Vertex Anthropic |
|---|---|---|---|---|
| API de caché | cachedContents | Cabeceiras HTTP | Específico do provedor | Control da caché |
| Control de TTL | Explícito | Mediante cabeceiras | Dependente do provedor | Ephemeral/persistent |
| Tamaño máximo da caché | 1M tokens | Dependente do provedor | Dependente do provedor | 1M tokens |
| Redución de custos | 90% | 90% | Dependente do provedor | 90% |
| Supervisión | Detallada | Mediante métricas | Dependente do provedor | Mediante uso |
Próximos pasos
- Escolle o teu provedor: Selecciona segundo as túas necesidades
- Configura o almacenamento en caché: Establece o almacenamento en caché específico do provedor
- Proba o almacenamento en caché: Verifica que funcione cos teus prompts
- Supervisa o uso: Fai seguimento dos acertos da caché e do aforro de custos
- Optimiza: Axusta o TTL e a estratexia de caché segundo os resultados