Mise en cache de donnees avec Symfony 6

M

Comme vous avez pu le constater dans le dernier article, utiliser l’API de ChatGPT peu vite devenir très coûteux, surtout si vous lui demandez la même requête, pour éviter cela nous allons mettre en place un système de cache pour y stocker des données.

Nous allons pour cela utiliser le Filesystem Cache Adapter, il va stocker les données sur votre disque dur, l’avantage c’est qu’il est très simple à mettre en place :

use Symfony\Component\Cache\Adapter\FilesystemAdapter;
...
$cache = new FilesystemAdapter();

Si on applique ce principe à notre code ChatGpt d’hier, cela donnerait :

$commentairesClientsTri = $cache->get('commentaires_clients_trie', function (ItemInterface $item) use ($commentairesClients) {
            $item->expiresAfter(3600);

            $result = $this->openai->completions()->create([
                'model' => 'text-davinci-003',
                'prompt' => 'Trier les commentaires clients de ce restaurant du plus sympa au plus méchant: \n\n'.implode('\n', $commentairesClients),
                'max_tokens' => 1000,
            ]);

            return explode('\n',trim($result['choices'][0]['text']));
        });

Ici nous interrogerons ChatGPT uniquement lorsque cela fera plus de 3600 secondes que la donnée a été mise en cache.

Petit bonus, vous pouvez savoir quand va expirer votre donnée :

$item = $cache->getItem('commentaires_clients_trie');
$metadata = $item->getMetadata();
$expirationTimeInMinutes = round(($metadata['expiry']-time())/60);
$output->writeln([
      '============',
      'Cette donnée va expirer dans '.$expirationTimeInMinutes.' minutes'
]);

Vous pouvez retrouver le code complet sur github : https://github.com/gponty/sf6-chatGPT

About the author

Guillaume

Add comment

By Guillaume

Guillaume

Get in touch

Quickly communicate covalent niche markets for maintainable sources. Collaboratively harness resource sucking experiences whereas cost effective meta-services.