O cache de prompts é uma maneira de armazenar e, em seguida, reutilizar as respostas geradas a partir de prompts executados ao trabalhar com modelos de linguagem como os modelos IBM® Granite. Se a mesma entrada (prompt) for encontrada novamente, em vez de fazer uma nova chamada de API, a aplicação recuperará a resposta armazenada anteriormente no cache de prompts.
Pense no cache de prompts como uma espécie de "memória" para sua aplicação. O sistema mantém os resultados de consultas anteriores para economizar tempo de computação por não ter que fazer solicitações repetidas para a mesma entrada.
O cache de prompts é significativo porque evita chamadas repetidas da interface de programação de aplicativos (API) por reutilizar respostas existentes para prompts idênticos repetidos. Essa capacidade resulta em tempo de resposta mais rápido, saída consistente e menor uso da API, o que é útil para permanecer dentro dos limites de taxa. Também ajuda a escalar o fluxo e criar resiliência durante interrupções. O cache de prompts é uma funcionalidade crítica que agrega valor a qualquer aplicação de IA econômica, eficiente e fácil de usar.
Você precisa de uma conta do IBM® Cloud para criar um projeto do watsonx.ai .
Você também precisa do Python versão 3.12.7
Embora você possa escolher entre várias ferramentas, este tutorial explica como configurar uma conta da IBM para usar um Jupyter Notebook.
Faça login no watsonx.ai usando sua conta do IBM Cloud.
Crie um projeto do watsonx.ai. Você pode obter a ID do projeto a partir de seu projeto. Clique na guia Gerenciar . Em seguida, copie a ID do projeto da seção Detalhes da página Geral . Você precisa dessa ID para este tutorial.
Crie um Jupyter Notebook. Esta etapa abre um ambiente do Jupyter Notebook onde você pode copiar o código deste tutorial. Ou você pode fazer download desse notebook em seu sistema local e carregá-lo como um ativo em seu projeto do watsonx.ai. Para ver mais tutoriais do IBM Granite, confira a Comunidade IBM Granite.
Crie uma instância do serviço watsonx.ai Runtime (escolha o plano Lite, que é uma instância gratuita).
Gere uma chave de API.
Associe o serviço watsonx.ai Runtime ao projeto que você criou no watsonx.ai.
Precisamos de bibliotecas para trabalhar com o framework do langchain e o WatsonxLLM. Vamos primeiro instalar os pacotes necessários. Este tutorial foi criado usando o Python 3.12.7
Observação: se você estiver usando uma versão mais antiga do pip, poderá usar o comando pip install --upgrade pip para instalar facilmente os pacotes mais recentes que podem não ser compatíveis com versões mais antigas. Mas se você já está usando a versão mais recente ou atualizou seus pacotes recentemente, pode ignorar este comando.
O módulo os é usado para acessar variáveis de ambiente, como credenciais de projeto ou chaves de API.
O WatsonxLLM é um módulo do langchain_ibm que integra o IBM Watson LLM para gerar saídas a partir de modelos de IA generativa.
O ChatWatsonx permite interações baseadas em chat usando o IBM watsonx por meio do LangChain.
O SimpleDirectoryReader é para carregar e ler documentos de um diretório para indexação com o LlamaIndex.
O GenParams contém chaves de metadados para configurar os parâmetros de geração de texto do watsonx.
O SQLiteCache permite configurar um banco de dados SQLite local.cache.db para evitar chamadas de API redundantes e acelerar o desenvolvimento e os testes.
Precisamos de algumas bibliotecas e módulos para este tutorial. Certifique-se de importar as seguintes e, se não estiverem instaladas, uma instalação rápida de pip resolve o problema.
Esse código configura credenciais para acessar a API do IBM Watson Machine Learning (WML) e ajuda a garantir que a ID do projeto esteja configurada corretamente.
Este código inicializa o IBM Watson LLM para uso na aplicação:
Para saber mais sobre os parâmetros do modelo, como os limites mínimo e máximo de tokens, consulte a documentação.
O SQLiteCache é uma ferramenta de cache persistente oferecida pelo LangChain que armazena respostas de chamadas de LLMs em um arquivo de banco de dados SQLite. O SQLiteCache reduz de forma inteligente o tempo da CPU ao armazenar cálculos dispendiosos, o que significa que ele se concentra em recuperar dados em vez de recalculá-los. Em vez de passar por todo o processo novamente, ele simplesmente extrai os resultados do disco, tornando-o eficiente, confiável e reutilizável.
A figura ilustra com o cache de prompt, como os resultados são carregados instantaneamente do disco; sem ele, toda consulta é uma perda de tempo em cálculos redundantes.
Nesse caso, a CPU funcionou por apenas 22 ms, mas o tempo decorrido real foi de 1,43 segundo.
Esse exemplo sugere que a maior parte do tempo era gasta esperando, provavelmente por operações de E/S (por exemplo, leitura e gravação de disco, acesso à rede ou chamada de API)
Agora, vamos executar o modelo uma segunda vez com o prompt e ver o tempo de resposta.
Claramente, usando o SQLiteCache, a CPU é usada por apenas 7,26 ms, mas o tempo de espera foi de 6,15 segundos.
Isso aponta claramente para o bloqueio de dependências externas (como esperar por uma resposta de um servidor).
O cache de prompts acelera e reduz o custo das solicitações de APIs para grandes modelos de linguagem, como o GPT-4o. Os prompts armazenam em cache o conteúdo, como tokens de entrada, tokens de saída, embeddings e mensagens do usuário, um prompt do sistema ou a saída de uma função, que agora usa um conteúdo em cache em vez de solicitações de rede para uma nova revisão. Esse método oferece preços mais baixos, melhor latência de resposta e principais indicadores de desempenho (KPIs) melhorados.
O cache de prompts pode ser benéfico para chatbots, sistemas de RAG, ajuste fino e assistentes de código. Uma estratégia de cache robusta que inclui funções como leitura em cache, gravação em cache, mensagem do sistema, controle de cache e tempo de vida adequado (TTL) melhorará as taxas de acertos de cache e reduzirá as taxas de perda de cache.
O uso consistente dos mesmos tokens de prompts, prefixo de prompts e instruções do sistema ajuda no desempenho consistente dos prompts em conversas multivoltas e solicitações subsequentes. Independentemente de usar Python, um SDK ou trabalhar com a OpenAI ou outro provedor, entender como o cache de prompts funciona permitirá que você implemente melhor o cache de prompts para uso em muitos casos de uso.