Вот знакомый сценарий: вы работаете над проектом, который включает запросы к дорогостоящему API, такому как OpenAI, который может быстро увеличить ваш счет, если вы не будете осторожны. У вас может возникнуть соблазн кэшировать результаты, чтобы избежать многократного повторения одних и тех же дорогостоящих запросов, но реализация кэширующего решения, которое будет сохраняться при выполнении, может занять много времени и быть сложной задачей. Здесь появляется rmmbr.

rmmbr — это облегченный сервис с клиентскими библиотеками на Javascript, TypeScript или Python. Он предоставляет декоратор, который вы можете разместить вокруг своих асинхронных функций для кэширования их результатов либо локально, либо в облаке. Написав всего несколько строк кода, вы сможете значительно сократить количество запросов к API, сэкономив время и деньги.

Чтобы использовать rmmbr, просто установите его через npm (или pip):

npm i rmmbr

Давайте рассмотрим пример с использованием OpenAI GPT-3 API:

import { localCache } from "rmmbr";
import openai from "openai";

const cacher = localCache({ id: "createChatCompletion" });

const callOpenAI = (params) =>
  openai.createChatCompletion(params).then(({ data }) => data);

const cachedOpenAI = cacher(callOpenAI);

const doPrompt = (prompt) =>
  cachedOpenAI({
    model: "gpt-3.5-turbo",
    messages: [{ role: "user", content: prompt }],
  }).then(({ choices }: OpenAIOutput) => choices[0].message?.content || "");

В этом примере мы используем функцию localCache для кэширования результата асинхронной функции, которая генерирует текст с использованием API OpenAI GPT-3. Кэшер хранит запросы в файле в локальном каталоге под именем id.

Функция doPrompt принимает подсказку в качестве аргумента и использует API OpenAI для создания текста на основе этой подсказки. Однако вместо того, чтобы делать новый запрос API каждый раз, когда вызывается функция, мы используем localCache для кэширования результата запроса API. Это означает, что если функция будет вызвана снова с тем же приглашением, она вернет кэшированный результат вместо того, чтобы делать новый запрос API.

При желании вы также можете хранить результаты в облаке с шифрованием e2e.

const cacher = cloudCache({
  token: "service-token",
  url: "https://uriva-rmmbr.deno.dev",
  // Time to live in seconds, can omit this if undesired.
  ttl: 123,
  // e2ee for sensiive data, can omit this if undesired.
  encryptionKey: "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
});

Бэкэнд также имеет открытый исходный код, поэтому вы можете использовать свой собственный экземпляр, если хотите.

Мы хотели бы услышать о ваших примерах использования и желаемых функциях (например, шифрование? ttl?), поэтому не стесняйтесь публиковать их как проблемы здесь.

В целом, rmmbr — это мощная, но простая библиотека, которая может помочь вам сэкономить время и деньги за счет кэширования результатов дорогостоящих запросов API. Независимо от того, нужно ли вам кэшировать данные локально или сохранять их на разных устройствах, rmmbr поможет вам. Попробуйте его в своем следующем проекте и посмотрите, как он может помочь вам оптимизировать код!

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.