MODULO 3.7

⚡ Performance e Otimizacao

Tecnicas para otimizar latencia, throughput e custos em sistemas GIPM.

6
Topicos
~35
Minutos
Avanc.
Nivel
Tecnico
Tipo
1

⚡ Otimizacao de prompts

Prompts menores e mais precisos custam menos e respondem mais rapido.

❌ Prompt ineficiente

"Por favor, voce poderia gentilmente analisar este documento e me dar uma opiniao detalhada sobre todos os aspectos possiveis..."

~50 tokens desnecessarios

✓ Prompt otimizado

"Analise riscos contratuais. Output: JSON com {risco, severidade, clausula}."

Direto e estruturado

2

🗃️ Caching inteligente

class SemanticCache:
    def __init__(self, similarity_threshold=0.95):
        self.cache = {}
        self.embeddings = {}
        self.threshold = similarity_threshold

    async def get_or_compute(self, request: str, compute_fn):
        # Hash exato primeiro
        exact_key = hash(request)
        if exact_key in self.cache:
            return self.cache[exact_key]

        # Cache semantico se nao houver hit exato
        request_embedding = await embed(request)
        for key, emb in self.embeddings.items():
            if cosine_similarity(request_embedding, emb) > self.threshold:
                return self.cache[key]

        # Computar e cachear
        result = await compute_fn(request)
        self.cache[exact_key] = result
        self.embeddings[exact_key] = request_embedding
        return result
3

📊 Batch processing

Agrupar requisicoes similares para processar em lote.

Quando usar batch

  • Muitas requisicoes similares em curto espaco de tempo
  • Latencia nao e critica (pode esperar 100-500ms para agrupar)
  • Mesmo modelo e persona para todas as requisicoes
4

🔄 Lazy loading de contexto

Carregar contexto apenas quando necessario.

# Ao inves de carregar todo o contexto
context = load_all_user_data(user_id)  # Lento e caro

# Carregar apenas o necessario
class LazyContext:
    def __init__(self, user_id):
        self.user_id = user_id
        self._profile = None
        self._history = None

    @property
    def profile(self):
        if self._profile is None:
            self._profile = load_profile(self.user_id)
        return self._profile

    @property
    def history(self):
        if self._history is None:
            self._history = load_history(self.user_id)
        return self._history
5

💰 Cost optimization

Modelo certo para a tarefa

GPT-3.5 para simples, GPT-4 para complexo

Truncar contexto

Manter apenas os ultimos N tokens relevantes

Streaming

Retornar resposta gradualmente, cancelar se desnecessario

Quotas por usuario

Limitar tokens/dia por usuario ou tenant

6

📈 Benchmarking

Metricas a medir

TTFB

Time to first byte

TPS

Tokens por segundo

$/1K tok

Custo por mil tokens

Hit rate

Taxa de cache hits

📝 Resumo do Modulo

Prompts - Concisos e estruturados
Caching - Exato e semantico
Lazy loading - Contexto sob demanda
Custo - Modelo certo, quotas, streaming