Skip to main content

Cacheo de Prompts Conscient del Proveïdor

Superdav AI Agent v1.12.0 presenta el cacheo de prompts conscient del proveïdor, que optimitza els costos i la latència de l'API cacheant prompts en diversos proveïdors de LLM. Cada proveïdor té mecanismes i configuracions de cache diferents.

Resum

El cacheo de prompts us permet:

  • Cachear prompts grans i freqüentment utilitzats
  • Reduir els costos de l'API evitant processaments redundants
  • Millorar la latència per a les sol·licituds cacheades
  • Gestionar el cicle de vida del cache de manera explícita

Els diferents proveïdors implementen el cacheo de manera diferent:

  • Google Gemini: API cachedContents
  • Azure OpenAI: Cacheo de prompts amb TTL
  • OpenRouter: Cacheo específic del proveïdor
  • Vertex Anthropic: Cacheo de prompts amb control de cache

Google Gemini: API cachedContents

Google Gemini proporciona una gestió explícita del cache mitjançant l'API cachedContents.

Configuració

$config = [
'provider' => 'google-gemini',
'model' => 'gemini-2.0-flash',
'caching' => [
'enabled' => true,
'ttl' => 3600, // 1 hora en segons
'max_tokens' => 1000000, // Tokens màxims a cachear
],
];

Creació d'un Prompt Cacheat

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,
]
);

// Devolveu: ['cache_id' => 'abc123', 'expires_at' => timestamp]

Utilització d'un Prompt Cacheat

$response = $gemini->generate(
[
'cache_id' => 'abc123',
'prompt' => 'User question here',
]
);

Cicle de Vida del Cache

// Llistar continguts cacheats
$caches = $gemini->list_cached_contents();

// Obté detalls del cache
$cache = $gemini->get_cached_content( 'abc123' );

// Estendre el TTL del cache
$gemini->update_cached_content(
'abc123',
['ttl' => 7200] // Estendre a 2 hores
);

// Eliminar cache
$gemini->delete_cached_content( 'abc123' );

Millores Pràctiques per a Gemini

  • Establir un TTL adequat: Equilibri entre l'estalvi de costos i l'obsolescència del cache
  • Cachear prompts de sistema: Reutilitzar el mateix prompt de sistema en diverses sol·licituds
  • Monitoritzar l'ús del cache: Fer un seguiment dels caches més utilitzats
  • Netitzar caches expirats: Eliminar periodicàment caches no utilitzats

Azure OpenAI: Cacheo de Prompts

Azure OpenAI suporta el cacheo de prompts amb gestió automàtica del TTL.

Configuració

$config = [
'provider' => 'azure-openai',
'model' => 'gpt-4-turbo',
'api_version' => '2024-08-01-preview',
'caching' => [
'enabled' => true,
'cache_control' => 'max_age=3600',
],
];

Habilitar el Cacheo

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',
]
);

// La resposta inclou l'ús del cache:
// [
// 'content' => '...',
// 'cache_creation_input_tokens' => 1000,
// 'cache_read_input_tokens' => 500,
// ]

Headers de Cache

Azure OpenAI utilitza headers HTTP per al control del cache:

Cache-Control: max_age=3600

Valors suportats:

  • max_age=<seconds>: Cachear durant la durada especificada
  • no_cache: No cachear aquesta sol·licitud
  • no_store: No cachear i no reutilitzar

Monitorització de l'Ús del 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";

Millores Pràctiques per a Azure OpenAI

  • Utilitzar prompts consistents: Els prompts idèntics es benefician del cacheo
  • Establir un TTL raonable: Equilibri entre el cost i la frescor
  • Monitoritzar les mètriques del cache: Fer un seguiment de la creació vs. els hits
  • Processar sol·licituds similars en grup: Agrupar sol·licituds per maximitzar els hits de cache

OpenRouter: Cacheo Específic del Proveïdor

OpenRouter suporta el cacheo mitjançant els proveïdors substramentals (OpenAI, Anthropic, etc.).

Configuració

$config = [
'provider' => 'openrouter',
'model' => 'openai/gpt-4-turbo',
'caching' => [
'enabled' => true,
'provider_cache' => 'openai', // Utilitzar el cacheo d'OpenAI
],
];

Utilització del Cacheo d'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ífiques del Proveïdor

Els diferents proveïdors tenen mecanismes de cacheo diferents:

// Cacheo compatible amb OpenAI
$response = $router->generate(
[
'model' => 'openai/gpt-4-turbo',
'cache_control' => 'max_age=3600',
]
);

// Cacheo compatible amb Anthropic
$response = $router->generate(
[
'model' => 'anthropic/claude-3-opus',
'cache_control' => [
'type' => 'ephemeral',
'max_tokens' => 1000000,
],
]
);

Millores Pràctiques per a OpenRouter

  • Conèixer el cacheo del vostre proveïdor: Cada proveïdor té mecanismes diferents
  • Provar el comportament del cacheo: Verifiqueu que el cacheo funciona amb el proveïdor que hauràs de triar
  • Monitoritzar els costos: Fer un seguiment dels estalvis gràcies al cacheo
  • Utilitzar models consistents: Canviar de model rompega els hits de cache

Vertex Anthropic: Cacheo de Prompts amb Control de Cache

Vertex Anthropic (Google Cloud) suporta el cacheo de prompts amb un control de cache explícit.

Configuració

$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,
],
],
];

Utilització del Cacheo 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,
],
]
);

// La resposta inclou mètriques de cache:
// [
// 'content' => '...',
// 'usage' => [
// 'input_tokens' => 1000,
// 'cache_creation_input_tokens' => 500,
// 'cache_read_input_tokens' => 300,
// ],
// ]

Tipus de Control de Cache

  • ephemeral: Cachear durant la durada de la sol·licitud (per defecte)
  • persistent: Cachear en diverses sol·licituds (si està suportat)

Monitorització de l'Ús del Cache

$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";

Millores Pràctiques per a Vertex Anthropic

  • Utilitzar cacheo ephemeral: Bon per a cacheo de sessió única
  • Establir max_tokens adequadament: Equilibri entre la mida del cache i el cost
  • Monitoritzar les mètriques del cache: Fer un seguiment de l'efectivitat del cache
  • Provar amb la vostra càrrega de treball: Verifiqueu que el cacheo beneficia el vostre cas d'ús

Estratègia de Cacheo Cross-Provider

Configuració 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,
],
],
],
],
];

Detecta del Proveïdor

$provider = $config['provider'];

$cache_config = $config['caching']['providers'][ $provider ]
?? $config['caching'];

// Utilitzar la configuració de cacheo específica del proveïdor

Estratègia de Fallback

try {
// Intentar cachear amb el proveïdor principal
$response = $primary_provider->generate( $request );
} catch ( CacheException $e ) {
// Fallar a sol·licitat no cacheada
$response = $primary_provider->generate(
array_merge( $request, ['cache_control' => 'no_cache'] )
);
}

Optimització de Costos

Calcular Estalvis

$cache_created_tokens = $response['cache_creation_input_tokens'] ?? 0;
$cache_read_tokens = $response['cache_read_input_tokens'] ?? 0;
$regular_tokens = $response['input_tokens'] ?? 0;

// Preu típic (varia per proveïdor):
$cache_creation_cost = $cache_created_tokens * 0.00001; // 10x més barat
$cache_read_cost = $cache_read_tokens * 0.000001; // 100x més barat
$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";

Consells d'Optimització

  • Cachear prompts de sistema grans: Els grans estalvis de costos
  • Reutilitzar context: Cachear documents de context freqüentment utilitzats
  • Processar sol·licituds en grup: Agrupar sol·licituds similars per maximitzar els hits de cache
  • Monitoritzar l'efectivitat del cache: Fer un seguiment dels estalvis reals
  • Ajustar el TTL: Equilibri entre el cost i la frescor

Solucionar Problemes

El cache no s'està utilitzant

  • Verifiqueu que el cacheo estigui habilitat a la configuració
  • Comproveu que els prompts siguin idèntics (el cacheo requereix una coincidència exacta)
  • Verifiqueu que el cache no hagi expirat
  • Comproveu els límits de cache específics del proveïdor

Fallida la creació del cache

  • Verifiqueu que la mida del cache estigui dins dels límits del proveïdor
  • Comproveu que la sintaxi de cache_control sigui correcta
  • Assegureu-vos que el proveïdor suporti el cacheo per al vostre model
  • Reviseu la documentació del proveïdor per límits

Costos inesperats

  • Monitoritzeu els tokens de creació vs. lectura del cache
  • Verifiqueu que el cache està realment en ús
  • Comproveu si hi ha misses de cache a causa de variacions de prompts
  • Considerare ajustar el TTL o l'estratègia de cache

Comparativa de Proveïdors

FeatureGeminiAzure OpenAIOpenRouterVertex Anthropic
Cache APIcachedContentsHTTP headersProvider-specificCache control
TTL controlExplícitVia headersDependent del proveïdorEphemeral/persistent
Max cache size1M tokensDependent del proveïdorDependent del proveïdor1M tokens
Cost reduction90%90%Dependent del proveïdor90%
MonitoringDetallatVia mètriquesDependent del proveïdorVia usage

Pròxims Passos

  1. Triar el vostre proveïdor: Seleccioneu en base a les vostres necessitats
  2. Configurar el cacheo: Configureu el cacheo específic del proveïdor
  3. Provar el cacheo: Verifiqueu que funciona amb els vostres prompts
  4. Monitoritzar l'ús: Fer un seguiment dels hits de cache i l'estalvi de costos
  5. Optimitzar: Ajustar el TTL i l'estratègia de cache en base als resultats