Pular para o conteúdo
Skillpedia
Agentes48 mil · #3467

llm-caching

Permite que seu agente guarde respostas da IA para usá-las depois. Isso acelera o processo e economiza recursos ao evitar repetições.

O que ela faz

Esta ferramenta ajuda a economizar dinheiro e tempo ao usar inteligência artificial (IA). Ela armazena respostas anteriores para perguntas semelhantes, evitando que a IA precise gerar a mesma resposta várias vezes.

Quando usar

  • ✓Quando você faz as mesmas perguntas repetidamente para a IA.
  • ✓Quando os custos de uso da IA estão aumentando muito.
  • ✓Quando muitas pessoas fazem perguntas parecidas ao mesmo tempo.

Exemplo do que pedir para a IA

“Quais são os benefícios da energia solar?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/llm-caching/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/llm-caching/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta verifica se já respondeu a uma pergunta parecida antes. Se sim, ela usa a resposta antiga. Se não, ela pede para a IA responder e guarda essa nova resposta para o futuro.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill llm-caching

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/llm-caching/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Cache de LLM

Reduza custos e latência de LLM com camadas de cache de correspondência exata, semântica e do lado do provedor.

Quando Usar Esta Habilidade

Use esta habilidade quando:

  • As mesmas consultas ou consultas semelhantes são feitas repetidamente (bots de FAQ, ferramentas de suporte)
  • Os custos da API de LLM estão crescendo e você precisa de economias imediatas
  • Atendendo a altos volumes de requisições onde consultas repetidas causam gargalos
  • Implementando cache de prompt para prompts de sistema longos (Anthropic/OpenAI)
  • Construindo recursos de IA com capacidade offline que precisam de persistência de resposta

Camadas de Cache

Request → Exact Cache → Semantic Cache → Provider Cache → LLM API
             ↓ hit            ↓ hit             ↓ hit
           instant          ~5ms           50-80% cheaper

Camada 1: Cache de Correspondência Exata (Redis)

import hashlib
import json
import redis
from openai import OpenAI

r = redis.Redis(host="localhost", port=6379, decode_responses=True)
client = OpenAI()

def build_cache_key(model: str, messages: list, temperature: float) -> str:
    """Deterministic key from request parameters."""
    payload = json.dumps({
        "model": model,
        "messages": messages,
        "temperature": temperature,
    }, sort_keys=True)
    return f"llm:exact:{hashlib.sha256(payload.encode()).hexdigest()}"

def cached_completion(model: str, messages: list, temperature: float = 0.0,
                      ttl: int = 3600) -> dict:
    key = build_cache_key(model, messages, temperature)

    # Check cache
    if cached := r.get(key):
        return json.loads(cached)

    # Call API
    response = client.chat.completions.create(
        model=model, messages=messages, temperature=temperature
    )
    result = response.model_dump()

    # Cache result (only cache deterministic responses)
    if temperature == 0.0:
        r.setex(key, ttl, json.dumps(result))

    return result

Camada 2: Cache Semântico (GPTCache)

from gptcache import cache, Config
from gptcache.adapter import openai
from gptcache.embedding import Onnx
from gptcache.manager import CacheBase, VectorBase, get_data_manager
from gptcache.similarity_evaluation.distance import SearchDistanceEvaluation

# Configure GPTCache with Qdrant backend
def init_gptcache(cache_obj, llm: str):
    onnx = Onnx()                              # local embedding model
    data_manager = get_data_manager(
        CacheBase("redis"),                    # metadata store
        VectorBase("qdrant",
                   host="localhost",
                   port=6333,
                   collection_name=f"llm-cache-{llm}",
                   dimension=onnx.dimension),
    )
    cache_obj.init(
        embedding_func=onnx.to_embeddings,
        data_manager=data_manager,
        similarity_evaluation=SearchDistanceEvaluation(),
        config=Config(similarity_threshold=0.80),  # 80% similarity = cache hit
    )

cache.set_openai_key()
init_gptcache(cache, "gpt-4o-mini")

# Now openai calls are automatically cached
response = openai.ChatCompletion.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "What is machine learning?"}],
)
# Second call with similar question ("Explain machine learning") → cache hit

Cache Semântico Personalizado (Pronto para Produção)

from sentence_transformers import SentenceTransformer
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct, Filter, FieldCondition, Range
import numpy as np
import uuid
import time

embed_model = SentenceTransformer("BAAI/bge-small-en-v1.5")  # rápido, 33M parâmetros
qdrant = QdrantClient("http://localhost:6333")

CACHE_COLLECTION = "semantic-cache"
SIMILARITY_THRESHOLD = 0.88
CACHE_TTL_SECONDS = 86400  # 24h

# Cria a coleção uma vez
qdrant.create_collection(
    collection_name=CACHE_COLLECTION,
    vectors_config=VectorParams(size=384, distance=Distance.COSINE),
    on_disk_payload=True,
)

def semantic_cache_lookup(query: str, model: str) -> str | None:
    embedding = embed_model.encode(query).tolist()
    results = qdrant.query_points(
        collection_name=CACHE_COLLECTION,
        query=embedding,
        query_filter=Filter(must=[
            FieldCondition(key="model", match={"value": model}),
            FieldCondition(key="expires_at", range=Range(gte=time.time())),
        ]),
        limit=1,
        score_threshold=SIMILARITY_THRESHOLD,
    )
    if results.points:
        return results.points[0].payload["response"]
    return None


…
Perguntas frequentes

Isso funciona para qualquer pergunta?

Funciona melhor para perguntas que não mudam muito ou que são feitas com frequência. Perguntas muito específicas ou que mudam sempre podem não ser armazenadas.

Como a ferramenta sabe se uma pergunta é 'parecida'?

Ela usa duas formas: uma compara a pergunta exatamente igual e outra usa um entendimento mais profundo para ver se o sentido da pergunta é o mesmo.

Onde as respostas são guardadas?

As respostas são guardadas em locais chamados 'caches', que são como memórias rápidas e eficientes, usando tecnologias como Redis e Qdrant.

Detalhes

Descrição original do autor

Implement multi-layer LLM caching with exact match, semantic similarity, and provider-side prompt caching.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3467
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas