intermediate45 minLição 4 de 6

Otimização de Performance e Cache

Otimize o OpenCode para velocidade e eficiência de custos. Aprenda estratégias de cache, otimização de tokens, seleção de modelos e como reduzir chamadas de API mantendo a qualidade.

Otimização de Performance e Cache

Por que Otimizar?

MétricaImpacto
Tempo de RespostaFluxo de trabalho de desenvolvimento mais rápido
Uso de TokensCustos de API mais baixos
QualidadeMelhores resultados com menos sobrecarga
EscalabilidadeLidar com projetos maiores

Otimização de Tokens

Entendendo Tokens

Tokens são as unidades básicas que os LLMs processam:

ConteúdoTokens Aproximados
1 palavra1-2 tokens
1 linha de código5-15 tokens
1 arquivo (100 linhas)500-1500 tokens

Reduzir Uso de Tokens

  1. Limpe a conversa regularmente:
> /clear
  1. Seja específico nos prompts:
❌ "Fix the bug" ✅ "Fix the ZeroDivisionError in calculate_average() when list is empty"
  1. Leia apenas arquivos relevantes:
❌ "Read all files in src/" ✅ "Read src/utils.py"
  1. Use grep antes de ler:
> Search for "TODO" in src/ before reading entire files

Estratégia de Seleção de Modelo

TarefaModeloMotivo
Perguntas simplesgpt-4o-miniRápido, barato
Geração de códigogpt-4oEquilibrado
Raciocínio complexoclaude-sonnet-4-20250514Alta qualidade
Revisão de códigoclaude-sonnet-4-20250514Análise minuciosa
Edições rápidasgpt-4o-miniVelocidade

Configuração

json
{ "agents": { "quick": { "model": "gpt-4o-mini", "description": "Simple tasks, fast responses" }, "complex": { "model": "gpt-4o", "description": "Complex tasks, high quality" } } }

Estratégias de Cache

Cache de Conteúdo de Arquivo

Armazene em cache arquivos acessados frequentemente:

python
# Pseudo-code for caching file_cache = {} def read_file(path): if path in file_cache: return file_cache[path] content = read_from_disk(path) file_cache[path] = content return content

Cache de Prompts

Reutilize templates de prompts:

json
{ "skills": { "code-review": { "prompt_template": "Review this code for security issues: {code}" } } }

Cache de Resultados

Armazene em cache respostas de IA para consultas repetidas:

json
{ "cache": { "enabled": true, "ttl": 3600, "maxSize": 1000 } }

Processamento em Lote

Processar Múltiplos Arquivos

Em vez de:

> Read file1.py > Read file2.py > Read file3.py

Use:

> Read all Python files in src/ and summarize their purposes

Requisições Paralelas

json
{ "performance": { "parallelRequests": true, "maxConcurrent": 3 } }

Gerenciamento da Janela de Contexto

Monitore o Tamanho do Contexto

> /verbose Context: 4523 tokens (15% of 32k limit)

Otimize o Contexto

  1. Limpe o histórico ao mudar de tópico
  2. Leia apenas arquivos necessários
  3. Resuma conversas longas
  4. Use subagentes para tarefas isoladas

Otimização de Rede

Pool de Conexões

json
{ "providers": { "openai": { "keepAlive": true, "maxConnections": 5 } } }

Agrupamento de Requisições

json
{ "performance": { "batchRequests": true, "batchSize": 10 } }

Monitoramento de Performance

Rastrear Métricas

json
{ "logging": { "performance": true, "tokenUsage": true, "responseTime": true } }

Analisar Logs

bash
# Find slow requests grep "response_time" opencode.log | awk '{print $NF}' | sort -n # Calculate average tokens grep "total_tokens" opencode.log | awk '{sum+=$NF} END {print sum/NR}'

Practice Questions

Practice Question

What is the most effective way to reduce token usage?

Practice Question

Which model is best for quick, simple tasks?

Practice Question

How does caching improve performance?

Practice Question

What should you monitor to track performance?

Practice Question

How do you reduce context window usage?


Success

Key Takeaways

  • Limpe a conversa regularmente para reduzir o tamanho do contexto
  • Seja específico nos prompts para minimizar o uso de tokens
  • Use gpt-4o-mini para tarefas simples, gpt-4o para complexas
  • Armazene em cache arquivos acessados frequentemente e templates de prompts
  • Monitore uso de tokens, tempo de resposta e custo
  • Processe múltiplos arquivos em lote em vez de ler um de cada vez
  • A otimização de rede reduz a latência para chamadas de API
Progresso67%