Cache de prompts com reconhecimento de fornecedor
Superdav AI Agent v1.12.0 introduz cache de prompts com reconhecimento de fornecedor, que otimiza os custos de API e a latência ao armazenar prompts em cache entre diferentes fornecedores de LLM. Cada fornecedor tem mecanismos e configurações de cache diferentes.
Visão geral
O cache de prompts permite-lhe:
- Armazenar em cache prompts grandes e usados frequentemente
- Reduzir custos de API ao evitar processamento redundante
- Melhorar a latência para pedidos em cache
- Gerir explicitamente o ciclo de vida do cache
Diferentes fornecedores implementam o cache de formas diferentes:
- Google Gemini: API
cachedContents - Azure OpenAI: cache de prompts com TTL
- OpenRouter: cache específico do fornecedor
- Vertex Anthropic: cache de prompts com controlo de cache
Google Gemini: API cachedContents
Google Gemini fornece gestão explícita de cache através da API cachedContents.
Configuração
$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
],
];
Criar um prompt em cache
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 um prompt em cache
$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'User question here',
]
);
Ciclo de vida do cache
// 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áticas para Gemini
- Defina um TTL adequado: Equilibre a poupança de custos com a desatualização do cache
- Armazene prompts de sistema em cache: Reutilize o mesmo prompt de sistema entre pedidos
- Monitorize o uso do cache: Acompanhe quais caches são mais usados
- Limpe caches expirados: Elimine periodicamente caches não usados
Azure OpenAI: cache de prompts
Azure OpenAI suporta cache de prompts com gestão automática de TTL.
Configuração
$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];
Ativar o cache
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,
// ]
Headers de cache
Azure OpenAI usa headers HTTP para controlo de cache:
Cache-Control: max_age=3600
Valores suportados:
max_age=<seconds>: Armazenar em cache durante a duração especificadano_cache: Não armazenar este pedido em cacheno_store: Não armazenar em cache e não reutilizar
Monitorizar o uso do cache
$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áticas para Azure OpenAI
- Use prompts consistentes: Prompts idênticos beneficiam do cache
- Defina um TTL razoável: Equilibre custo e atualidade
- Monitorize métricas de cache: Acompanhe a criação de cache em comparação com acertos
- Agrupe pedidos semelhantes: Agrupe pedidos para maximizar acertos de cache
OpenRouter: cache específico do fornecedor
OpenRouter suporta cache através dos fornecedores subjacentes (OpenAI, Anthropic, etc.).
Configuração
$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // Use OpenAI's caching
],
];
Usar o cache do 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',
]
);
Opções específicas do fornecedor
Diferentes fornecedores têm diferentes mecanismos de cache:
// 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áticas para OpenRouter
- Conheça o cache do seu fornecedor: Cada fornecedor tem mecanismos diferentes
- Teste o comportamento do cache: Verifique se o cache funciona com o fornecedor escolhido
- Monitorize os custos: Acompanhe a poupança obtida com o cache
- Use modelos consistentes: Mudar de modelo impede acertos de cache
Vertex Anthropic: cache de prompts com controlo de cache
Vertex Anthropic (Google Cloud) suporta cache de prompts com controlo explícito de cache.