← Voltar a studyAI — Documentação do Projeto

💰 Controlo de Custos

studyAI — Documentação do Projeto

Apresentação

Cost Control — studyAI

Estratégia de controlo de custos em GenAI: rate limiting, caching, model selection e limites por utilizador.


Índice

  1. Contexto
  2. Rate limiting
  3. Caching
  4. Dynamic model selection
  5. Limites por plano
  6. Métricas e alertas

Diagrama: fluxo de controlo de custos

A carregar diagrama…

Contexto

Em GenAI, o maior custo variável são as chamadas LLM (tokens). Sem controlo:

  • Um user pode esgotar o budget
  • Picos de uso imprevisíveis
  • Difícil prever custos

Rate limiting

Já documentado em SECURITY.md. Resumo:

EndpointLimiteJanela
/chat30 req1 min
/generate5 req1 h
/evaluate60 req1 min

Implementação: Redis, sliding window. Key: ratelimit:{user_id}:{endpoint}.


Caching

Cache de respostas

  • Key: hash(query + project_id + top-k chunk_ids)
  • Value: resposta gerada
  • TTL: 24h ou configurável
  • Quando: RAG QA Agent, respostas idênticas ou muito similares

Cache de embeddings

  • Key: hash(texto)
  • Value: embedding vector
  • Quando: Chunking (evitar re-embed de chunks iguais), queries repetidas
  • Storage: Redis ou em chunks (já guardado)

Cache semântico (avançado)

  • Queries semanticamente similares → mesma resposta
  • Embedding da query → procurar respostas com similarity > 0.95
  • Mais complexo, maior poupança

Dynamic model selection

Por tarefa

TarefaModeloRationale
Routergpt-4o-miniClassificação simples, poucos tokens
Content Plannergpt-4o-miniEstrutura, não precisa de criatividade máxima
Content Writergpt-4oQualidade de escrita
RAG QA Agentgpt-4o-mini (default)Respostas curtas, contexto RAG
Question Generatorgpt-4o-miniGeração estruturada
Question Evaluatorgpt-4o-miniComparação, não geração longa

Por plano do user

PlanoModelo chatModelo geração
Freegpt-4o-minigpt-4o-mini
Premiumgpt-4ogpt-4o
Progpt-4ogpt-4o + opção o1 para reasoning

Implementação: user.plan ou user_profile.plan → selecionar modelo no service.


Limites por plano

PlanoChat/mêsGerações/mêsProjetosStorage
Free10053100 MB
Premium50030101 GB
ProIlimitado*100Ilimitado10 GB

*Com rate limit por minuto.

Implementação:

  • Contador em Redis ou DB: usage:{user_id}:{metric}:{month}
  • Verificar antes de cada ação
  • Reset mensal (cron)

Métricas e alertas

O que medir

  • Tokens por user/dia
  • Custo por user/dia
  • Custo total/dia
  • Cache hit rate
  • Rate limit 429s

Alertas

  • Custo diário > X
  • User com uso anómalo (> 3× média)
  • Cache hit rate < 20%

Ferramentas

  • LangSmith: Token usage por run
  • Redis: Contadores de uso
  • DB: Tabela usage_metrics (agregado diário)

Referências

Zona de prática

Sem perguntas. Clica em Editar para adicionar.